XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEToolBox

【WPF】XFE工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
<Page x:Class="XFEToolBox.Client.Views.Pages.Admin.ToolManagementPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:controls="clr-namespace:XFEToolBox.WpfCore.Controls;assembly=XFEToolBox.WpfCore"
      xmlns:utilities="clr-namespace:XFEToolBox.Client.Utilities"
      xmlns:tools="clr-namespace:XFEToolBox.Core.Tools;assembly=XFEToolBox.Core"
      Background="Transparent" Title="" Loaded="Page_Loaded">
    <Page.Resources>
        <utilities:ByteSizeConverter x:Key="ByteSizeConverter"/>
        <Style x:Key="ToolVersionRow" TargetType="DataGridRow" BasedOn="{StaticResource AdminDataGridRow}">
            <Setter Property="MinHeight" Value="56"/>
        </Style>
    </Page.Resources>
    <Grid Margin="14,9,14,12">
        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            <Border Style="{StaticResource AdminPageHeaderIcon}">
                <Grid Width="23" Height="23">
                    <Path Width="19" Height="19" Stretch="Uniform" Stroke="White" StrokeThickness="1.65"
                          StrokeStartLineCap="Round" StrokeEndLineCap="Round" StrokeLineJoin="Round"
                          Data="M 3,7 L 8,2 L 13,7 L 8,12 Z M 13,7 L 18,4 L 18,14 L 13,17 L 13,7 M 8,12 L 13,17 M 8,12 L 8,19 M 3,7 L 3,15 L 8,19"/>
                    <Ellipse Width="5" Height="5" Fill="#DFFFFFFF" HorizontalAlignment="Right" VerticalAlignment="Top"/>
                </Grid>
            </Border>
            <StackPanel Grid.Column="1" Margin="11,0,0,0" VerticalAlignment="Center">
                <TextBlock Text="工具审核与发布" Style="{StaticResource AdminPageTitle}"/>
                <TextBlock Text="审核用户投稿,并管理工具版本的公开状态" Style="{StaticResource AdminPageSubtitle}"/>
            </StackPanel>
            <StackPanel Grid.Column="2" Orientation="Horizontal" VerticalAlignment="Center">
                <Button Content="控件画廊" Margin="0,0,8,0"
                        Click="OpenControlGalleryButton_Click"/>
                <Button Content="项目" Margin="0,0,8,0"
                        Click="OpenProjectsButton_Click"/>
                <Button Content="上传工具包" Margin="0,0,8,0"
                        Click="UploadButton_Click"/>
                <Button Content="刷新" MinWidth="66"
                        Click="RefreshButton_Click"/>
            </StackPanel>
        </Grid>

        <Border Grid.Row="1" Style="{StaticResource AdminCard}" Margin="0,10,0,10" Padding="17,14,17,13">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>
                <Grid Margin="2,0,2,11">
                    <StackPanel>
                        <TextBlock Text="工具版本" Style="{StaticResource AdminSectionTitle}"/>
                        <TextBlock Text="用户投稿默认等待审核;只有管理员通过后才会公开" Style="{StaticResource AdminSectionSubtitle}"/>
                    </StackPanel>
                    <Border HorizontalAlignment="Right" VerticalAlignment="Center" Padding="10,5"
                            Background="#EEEEF8" CornerRadius="10">
                        <StackPanel Orientation="Horizontal">
                            <Ellipse Width="6" Height="6" Fill="#8F8FE9" Margin="0,0,6,0" VerticalAlignment="Center"/>
                            <TextBlock Text=".xfetool 工具包" Foreground="#77778C" FontSize="9.5" VerticalAlignment="Center"/>
                        </StackPanel>
                    </Border>
                </Grid>
                <Grid Grid.Row="1">
                    <controls:RoundedClipBorder Background="White" BorderBrush="#E5E5F0" BorderThickness="1"
                                                CornerRadius="12">
                        <DataGrid x:Name="ToolGrid" Style="{StaticResource AdminDataGrid}" RowStyle="{StaticResource ToolVersionRow}"
                                  IsReadOnly="True" SelectionMode="Single" SelectionUnit="FullRow">
                            <DataGrid.Columns>
                                <DataGridTemplateColumn Header="工具" SortMemberPath="Manifest.Name" Width="1.25*">
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <Grid ToolTip="{Binding Manifest.Description}">
                                                <Grid.ColumnDefinitions><ColumnDefinition Width="34"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
                                                <Border Width="28" Height="28" CornerRadius="9" Background="#EEEEFC" VerticalAlignment="Center">
                                                    <Path Width="13" Height="13" Stretch="Uniform" Stroke="#7777C9" StrokeThickness="1.5"
                                                          StrokeStartLineCap="Round" StrokeEndLineCap="Round" StrokeLineJoin="Round"
                                                          Data="M 2,5 L 7,2 L 12,5 L 7,8 Z M 2,5 L 2,11 L 7,14 L 12,11 L 12,5 M 7,8 L 7,14"/>
                                                </Border>
                                                <StackPanel Grid.Column="1" VerticalAlignment="Center">
                                                    <TextBlock Text="{Binding Manifest.Name}" Style="{StaticResource ToolBoxDataGridPrimaryTextStyle}"/>
                                                    <TextBlock Text="{Binding Manifest.Author, StringFormat=发布者:{0}}" Style="{StaticResource ToolBoxDataGridSecondaryTextStyle}" Margin="0,3,0,0"/>
                                                </StackPanel>
                                            </Grid>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                </DataGridTemplateColumn>
                                <DataGridTemplateColumn Header="工具标识" SortMemberPath="Manifest.Id" Width="1.05*">
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <TextBlock Text="{Binding Manifest.Id}" Style="{StaticResource ToolBoxDataGridSecondaryTextStyle}"
                                                       FontFamily="Cascadia Mono, Consolas" ToolTip="{Binding Manifest.Id}"/>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                </DataGridTemplateColumn>
                                <DataGridTemplateColumn Header="版本" SortMemberPath="Manifest.Version" Width="92"
                                                        HeaderStyle="{StaticResource AdminDataGridCenteredHeader}">
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <Border Padding="9,4" Background="#F0F0FB" BorderBrush="#DDDDF1" BorderThickness="1"
                                                    CornerRadius="9" HorizontalAlignment="Center" VerticalAlignment="Center">
                                                <TextBlock Text="{Binding Manifest.Version}" Foreground="#6666A8" FontSize="9.5" FontWeight="SemiBold"/>
                                            </Border>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                </DataGridTemplateColumn>
                                <DataGridTemplateColumn Header="投稿账号" SortMemberPath="Package.SubmittedByUserName" Width="118">
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <TextBlock Text="{Binding Package.SubmittedByUserName, TargetNullValue=管理员上传}"
                                                       Style="{StaticResource ToolBoxDataGridSecondaryTextStyle}" TextTrimming="CharacterEllipsis"/>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                </DataGridTemplateColumn>
                                <DataGridTemplateColumn Header="审核状态" SortMemberPath="Package.ReviewStatus" Width="112"
                                                        HeaderStyle="{StaticResource AdminDataGridCenteredHeader}">
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <Border x:Name="ReviewBadge" Padding="9,4" Background="#FFF4D9" CornerRadius="9" HorizontalAlignment="Center">
                                                <TextBlock x:Name="ReviewText" Text="待审核" Foreground="#A77A27" FontSize="9.5" FontWeight="SemiBold"/>
                                            </Border>
                                            <DataTemplate.Triggers>
                                                <DataTrigger Binding="{Binding Package.ReviewStatus}" Value="{x:Static tools:ToolPackageReviewStatus.Approved}">
                                                    <Setter TargetName="ReviewText" Property="Text" Value="已通过"/>
                                                    <Setter TargetName="ReviewText" Property="Foreground" Value="#3F8A61"/>
                                                    <Setter TargetName="ReviewBadge" Property="Background" Value="#E5F5EB"/>
                                                </DataTrigger>
                                                <DataTrigger Binding="{Binding Package.ReviewStatus}" Value="{x:Static tools:ToolPackageReviewStatus.Rejected}">
                                                    <Setter TargetName="ReviewText" Property="Text" Value="已拒绝"/>
                                                    <Setter TargetName="ReviewText" Property="Foreground" Value="#B25A68"/>
                                                    <Setter TargetName="ReviewBadge" Property="Background" Value="#FBE9EC"/>
                                                </DataTrigger>
                                            </DataTemplate.Triggers>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                </DataGridTemplateColumn>
                                <DataGridTemplateColumn Header="包大小" SortMemberPath="Package.PackageSize" Width="112"
                                                        HeaderStyle="{StaticResource AdminDataGridRightHeader}">
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <TextBlock Text="{Binding Package.PackageSize, Converter={StaticResource ByteSizeConverter}}"
                                                       Style="{StaticResource ToolBoxDataGridNumericTextStyle}"/>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                </DataGridTemplateColumn>
                            </DataGrid.Columns>
                        </DataGrid>
                    </controls:RoundedClipBorder>
                    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" IsHitTestVisible="False">
                        <StackPanel.Style>
                            <Style TargetType="StackPanel">
                                <Setter Property="Visibility" Value="Collapsed"/>
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding HasItems, ElementName=ToolGrid}" Value="False">
                                        <Setter Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </StackPanel.Style>
                        <Border Width="48" Height="48" CornerRadius="15" Background="#F0EFFC" HorizontalAlignment="Center">
                            <TextBlock Text="◇" Foreground="#8585D3" FontSize="21" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                        </Border>
                        <TextBlock Text="还没有工具版本" Foreground="#55556B" FontSize="11.5" FontWeight="SemiBold"
                                   HorizontalAlignment="Center" Margin="0,10,0,0"/>
                        <TextBlock Text="可以从项目中直接发布,或上传 .xfetool 工具包" Foreground="#9999AA" FontSize="9"
                                   HorizontalAlignment="Center" Margin="0,4,0,0"/>
                    </StackPanel>
                </Grid>
            </Grid>
        </Border>

        <Border Grid.Row="2" Background="#26FFFFFF" BorderBrush="#50FFFFFF" BorderThickness="1"
                CornerRadius="14" Padding="12,9">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="Auto"/>
                </Grid.ColumnDefinitions>
                <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="0,0,12,0">
                    <Border Width="28" Height="28" CornerRadius="9" Background="#28FFFFFF" Margin="0,0,9,0">
                        <Path Width="13" Height="13" Stretch="Uniform" Stroke="White" StrokeThickness="1.6"
                              StrokeStartLineCap="Round" StrokeEndLineCap="Round"
                              Data="M 7,1 L 7,8 M 4,5 L 7,8 L 10,5 M 2,10 L 2,12 L 12,12 L 12,10"/>
                    </Border>
                    <TextBlock x:Name="StatusText" Foreground="#ECFFFFFF" FontSize="10.5"
                               VerticalAlignment="Center" TextWrapping="Wrap"/>
                </StackPanel>
                <StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right">
                    <Button MinWidth="104" Margin="0,0,8,0" Content="拒绝 / 下架" Click="RejectReviewButton_Click">
                        <Button.Style>
                            <Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding SelectedItem, ElementName=ToolGrid}" Value="{x:Null}"><Setter Property="IsEnabled" Value="False"/></DataTrigger>
                                    <DataTrigger Binding="{Binding SelectedItem.Package.ReviewStatus, ElementName=ToolGrid}" Value="{x:Static tools:ToolPackageReviewStatus.Rejected}"><Setter Property="IsEnabled" Value="False"/></DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </Button.Style>
                    </Button>
                    <Button controls:ButtonAssist.IsPrimary="True" MinWidth="104" Content="通过审核" Click="ApproveReviewButton_Click">
                        <Button.Style>
                            <Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding SelectedItem, ElementName=ToolGrid}" Value="{x:Null}"><Setter Property="IsEnabled" Value="False"/></DataTrigger>
                                    <DataTrigger Binding="{Binding SelectedItem.Package.ReviewStatus, ElementName=ToolGrid}" Value="{x:Static tools:ToolPackageReviewStatus.Approved}"><Setter Property="IsEnabled" Value="False"/></DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </Button.Style>
                    </Button>
                </StackPanel>
            </Grid>
        </Border>
    </Grid>
</Page>