Compare commits

...

3 Commits

Author SHA1 Message Date
xiao-fajia
8d500a947b 首页接口 2024-07-23 20:36:09 +08:00
xiao-fajia
bceca96070 Merge branch 'main' of http://122.51.230.86:3000/dianliang/school_website 2024-07-23 18:07:35 +08:00
xiao-fajia
bd99606db1 文章管理 2024-07-23 18:07:10 +08:00
251 changed files with 459 additions and 235 deletions

View File

@ -0,0 +1,46 @@
package com.ruoyi.cms.api;
import com.ruoyi.cms.domain.CmsCategory;
import com.ruoyi.cms.service.ICmsCategoryService;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Anonymous
@RequestMapping("/api/category")
@RestController
public class CMSCategoryAPI extends BaseController {
@Autowired
private ICmsCategoryService categoryService;
/**
* 获取栏目及文章
*/
@GetMapping("/list")
public AjaxResult getCategory(CmsCategory category){
return success(categoryService.selectCmsCategoryTreeList(category));
}
/**
* 获取栏目下的子栏目及文章
* @param id 顶层栏目ID
*/
@GetMapping("/{id}")
public AjaxResult getContents(@PathVariable Long id){
return success(categoryService.selectCmsCategoryAndContentTreeList(id));
}
/**
* 获取某个子栏目的文章
*/
@GetMapping("/content/{id}")
public AjaxResult getContentById(@PathVariable Long id){
return success(categoryService.getContentById(id));
}
}

View File

@ -0,0 +1,31 @@
package com.ruoyi.cms.api;
import com.ruoyi.cms.service.ICmsContentService;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Anonymous
@RestController
@RequestMapping("/api/content")
public class CMSContentAPI extends BaseController {
@Autowired
private ICmsContentService contentService;
/**
* 文章详情
* @param id
* @return
*/
@GetMapping("/{id}")
public AjaxResult getContentById(@PathVariable Long id){
return success(contentService.selectCmsContentById(id));
}
}

View File

@ -1,11 +1,17 @@
package com.ruoyi.cms.controller;
import cn.hutool.core.io.resource.ResourceUtil;
import com.alibaba.fastjson2.JSON;
import com.baidu.ueditor.ActionEnter;
import com.ruoyi.cms.service.ICmsCategoryService;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.file.FileUploadUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.ClassUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
@ -22,6 +28,9 @@ import java.util.Map;
@RequestMapping("/ueditor")
public class UeditorController {
@Autowired
private ICmsCategoryService categoryService;
//配置ueditor后端上传接口的验证
@RequestMapping("/config")
public String config(HttpServletRequest request, HttpServletResponse response, String action, MultipartFile[] upfile) throws IOException {
@ -84,4 +93,13 @@ public class UeditorController {
}
return null;
}
/**
* 获取所有的叶子节点
* @return
*/
@GetMapping("/leavesCategoryList")
public AjaxResult getLeavesCategoryList(){
return AjaxResult.success(categoryService.getLeavesCategoryList());
}
}

View File

@ -1,10 +1,9 @@
package com.ruoyi.cms.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
@ -54,5 +53,6 @@ public class CmsCategory extends BaseEntity
/** 逻辑删除0未删除1真删除 */
private Integer delFlag;
@TableField(exist = false)
private List<CmsCategory> children = new ArrayList<CmsCategory>();
}

View File

@ -93,6 +93,12 @@ public class CmsContent extends BaseEntity
@Excel(name = "附件路径")
private String accessoryUrl;
/** 图片地址 */
private String imageUrl;
/** 视频地址 */
private String videoUrl;
/** 逻辑删除0未删除1真删除 */
private Integer delFlag;
}

View File

@ -0,0 +1,49 @@
package com.ruoyi.cms.domain.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.github.pagehelper.PageInfo;
import com.ruoyi.cms.domain.CmsContent;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
@Data
public class CMSCategoryVo extends BaseEntity {
@JsonSerialize(using = ToStringSerializer.class)
/** 栏目ID */
private Long id;
/** 栏目名称 */
@Excel(name = "栏目名称")
private String categoryName;
/** 栏目排序(默认0) */
@Excel(name = "栏目排序(默认0)")
private Long categorySort;
/** 栏目路径 */
@Excel(name = "栏目路径")
private String categoryUrl;
@JsonSerialize(using = ToStringSerializer.class)
/** 父栏目ID */
@Excel(name = "父栏目ID")
private Long parentId;
/** 是否外链01 */
@Excel(name = "是否外链", readConverterExp = "0=1")
private String isFrame;
/** 是否显示(0显示1不显示默认0) */
@Excel(name = "是否显示(0显示1不显示默认0)")
private String isDisable;
/** 逻辑删除0未删除1真删除 */
private Integer delFlag;
/** 栏目下的文章 */
private PageInfo<CmsContent> children;
}

View File

@ -3,7 +3,10 @@ package com.ruoyi.cms.service;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.ruoyi.cms.domain.CmsCategory;
import com.ruoyi.cms.domain.CmsContent;
import com.ruoyi.cms.domain.vo.CMSCategoryVo;
import com.ruoyi.common.core.domain.TreeSelect;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysMenu;
@ -95,4 +98,23 @@ public interface ICmsCategoryService extends IService<CmsCategory>
* @return 下拉树结构列表
*/
public List<TreeSelect> buildCmsCategoryTreeSelect(List<CmsCategory> categorys);
/**
* 获取栏目下的子栏目及文章
* @param id 顶层栏目ID
*/
List<CMSCategoryVo> selectCmsCategoryAndContentTreeList(Long id);
/**
* 按ID查文章
* @param id
* @return
*/
public PageInfo<CmsContent> getContentById(Long id);
/**
* 获取所有的叶子节点
* @return
*/
List<CmsCategory> getLeavesCategoryList();
}

View File

@ -5,9 +5,16 @@ import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Snowflake;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ruoyi.cms.core.NewTreeSelect;
import com.ruoyi.cms.domain.CmsContent;
import com.ruoyi.cms.domain.vo.CMSCategoryVo;
import com.ruoyi.cms.mapper.CmsContentMapper;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.TreeSelect;
import com.ruoyi.common.utils.DateUtils;
@ -19,6 +26,8 @@ import com.ruoyi.cms.mapper.CmsCategoryMapper;
import com.ruoyi.cms.domain.CmsCategory;
import com.ruoyi.cms.service.ICmsCategoryService;
import javax.annotation.Resource;
/**
* 栏目Service业务层处理
*
@ -31,6 +40,9 @@ public class CmsCategoryServiceImpl extends ServiceImpl<CmsCategoryMapper, CmsCa
@Autowired
private Snowflake snowflake;
@Autowired
private CmsContentMapper contentMapper;
/**
* 查询栏目
*
@ -218,4 +230,42 @@ public class CmsCategoryServiceImpl extends ServiceImpl<CmsCategoryMapper, CmsCa
{
return getChildList(list, t).size() > 0;
}
/**
* 获取栏目下的子栏目及文章
* @param id 顶层栏目ID
*/
@Override
public List<CMSCategoryVo> selectCmsCategoryAndContentTreeList(Long id) {
List<CmsCategory> categories = baseMapper.selectList(new QueryWrapper<CmsCategory>().eq("parent_id", id));
List<CMSCategoryVo> categoryVoList = new ArrayList<>();
for (CmsCategory category : categories){
CMSCategoryVo categoryVo = new CMSCategoryVo();
BeanUtil.copyProperties(category, categoryVo);
categoryVo.setChildren(getContentById(category.getId()));
categoryVoList.add(categoryVo);
}
return categoryVoList;
}
/**
* 按ID查文章
* @param id
* @return
*/
@Override
public PageInfo<CmsContent> getContentById(Long id){
PageHelper.startPage(1, 10);
List<CmsContent> contents = contentMapper.selectList(new QueryWrapper<CmsContent>().eq("category_id", id));
return new PageInfo<CmsContent>(contents);
}
/**
* 获取所有的叶子节点
* @return
*/
@Override
public List<CmsCategory> getLeavesCategoryList(){
return baseMapper.selectList(new QueryWrapper<CmsCategory>().ne("parent_id", 0));
}
}

View File

@ -3,7 +3,7 @@
"imageActionName": "uploadimage", /* action */
"imageFieldName": "upfile", /* */
"imageMaxSize": 2048000, /* B */
"imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* */
"imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp", '.webp'], /* */
"imageCompressEnable": true, /* ,true */
"imageCompressBorder": 1600, /* */
"imageInsertAlign": "none", /* */

View File

@ -28,10 +28,12 @@
<result property="createBy" column="create_by" />
<result property="updateTime" column="update_time" />
<result property="updateBy" column="update_by" />
<result property="imageUrl" column="image_url" />
<result property="videoUrl" column="video_url" />
</resultMap>
<sql id="selectCmsContentVo">
select id, category_id, content_type, content_title, content_img, content_detail, source, source_url, original, author, editor, summary, status, publish_date, offline_date, is_accessory, accessory_url, remark, del_flag, create_time, create_by, update_time, update_by from cms_content
select id, category_id, content_type,image_url, video_url content_title, content_img, content_detail, source, source_url, original, author, editor, summary, status, publish_date, offline_date, is_accessory, accessory_url, remark, del_flag, create_time, create_by, update_time, update_by from cms_content
</sql>
<select id="selectCmsContentList" parameterType="CmsContent" resultMap="CmsContentResult">

View File

@ -1,69 +0,0 @@
{
/* */
"imageActionName": "uploadimage", /* action */
"imageFieldName": "upfile", /* */
"imageMaxSize": 2048000, /* B */
"imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* */
"imageCompressEnable": true, /* ,true */
"imageCompressBorder": 1600, /* */
"imageInsertAlign": "none", /* */
"imageUrlPrefix": "http://localhost:8080/", /* 访 */
"imagePathFormat": "image/{yyyy}{mm}{dd}/{time}{rand:6}", /* , */
/* {filename} , */
/* {rand:6} , */
/* {time} */ /* {yyyy} */
/* {yy} */
/* {mm} */
/* {dd} */
/* {hh} */
/* {ii} */
/* {ss} */
/* \ : * ? " < > | */
/* 线: fex.baidu.com/ueditor/#use-format_upload_filename */
/* */
"scrawlActionName": "uploadscrawl", /* action */
"scrawlFieldName": "upfile", /* */
"scrawlPathFormat": "image/{yyyy}{mm}{dd}/{time}{rand:6}", /* , */
"scrawlMaxSize": 2048000, /* B */
"scrawlUrlPrefix": "", /* 访 */
"scrawlInsertAlign": "none", /* */
"snapscreenActionName": "uploadimage", /* action */
"snapscreenPathFormat": "image/{yyyy}{mm}{dd}/{time}{rand:6}", /* , */
"snapscreenUrlPrefix": "", /* 访 */
"snapscreenInsertAlign": "none", /* */
/* */
"catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"],
"catcherActionName": "catchimage", /* action */
"catcherFieldName": "source", /* */
"catcherPathFormat": "image/{yyyy}{mm}{dd}/{time}{rand:6}", /* , */
"catcherUrlPrefix": "", /* 访 */
"catcherMaxSize": 2048000, /* B */
"catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* */
/* */
"videoActionName": "uploadvideo", /* action */
"videoFieldName": "upfile", /* */
"videoPathFormat": "video/{yyyy}{mm}{dd}/{time}{rand:6}", /* , */
"videoUrlPrefix": "http://localhost:8080/", /* 访 */
"videoMaxSize": 102400000, /* B100MB */
"videoAllowFiles": [ ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* */
/* */
"fileActionName": "uploadfile", /* controller,action */
"fileFieldName": "upfile", /* */
"filePathFormat": "file/{yyyy}{mm}{dd}/{time}{rand:6}", /* , */
"fileUrlPrefix": "", /* 访 */
"fileMaxSize": 51200000, /* B50MB */
"fileAllowFiles": [ ".png", ".jpg", ".jpeg", ".gif", ".bmp", ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid", ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml" ], /* */
/* */
"imageManagerActionName": "listimage", /* action */
"imageManagerListPath": "image/", /* */
"imageManagerListSize": 20, /* */
"imageManagerUrlPrefix": "", /* 访 */
"imageManagerInsertAlign": "none", /* */
"imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* */
/* */
"fileManagerActionName": "listfile", /* action */
"fileManagerListPath": "file/", /* */
"fileManagerUrlPrefix": "", /* 访 */
"fileManagerListSize": 20, /* */
"fileManagerAllowFiles": [ ".png", ".jpg", ".jpeg", ".gif", ".bmp", ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid", ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml" ] /* */
}

View File

@ -28,10 +28,12 @@
<result property="createBy" column="create_by" />
<result property="updateTime" column="update_time" />
<result property="updateBy" column="update_by" />
<result property="imageUrl" column="image_url" />
<result property="videoUrl" column="video_url" />
</resultMap>
<sql id="selectCmsContentVo">
select id, category_id, content_type, content_title, content_img, content_detail, source, source_url, original, author, editor, summary, status, publish_date, offline_date, is_accessory, accessory_url, remark, del_flag, create_time, create_by, update_time, update_by from cms_content
select id, category_id, content_type,image_url, video_url content_title, content_img, content_detail, source, source_url, original, author, editor, summary, status, publish_date, offline_date, is_accessory, accessory_url, remark, del_flag, create_time, create_by, update_time, update_by from cms_content
</sql>
<select id="selectCmsContentList" parameterType="CmsContent" resultMap="CmsContentResult">

View File

@ -4,6 +4,8 @@ import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
@ -19,6 +21,7 @@ public class BaseEntity implements Serializable
/** 搜索值 */
@JsonIgnore
@TableField(exist = false)
private String searchValue;
/** 创建者 */
@ -39,6 +42,7 @@ public class BaseEntity implements Serializable
private String remark;
/** 请求参数 */
@TableField(exist = false)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private Map<String, Object> params;

View File

@ -115,7 +115,7 @@ public class SecurityConfig
// 静态资源可匿名访问
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
.antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
// 除上面外的所有请求全部需要鉴权认证
// 除上面外的所有请求全部需要鉴权认证
.anyRequest().authenticated();
})
// 添加Logout filter

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 453 B

After

Width:  |  Height:  |  Size: 453 B

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 445 B

After

Width:  |  Height:  |  Size: 445 B

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

View File

Before

Width:  |  Height:  |  Size: 453 B

After

Width:  |  Height:  |  Size: 453 B

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 445 B

After

Width:  |  Height:  |  Size: 445 B

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 43 B

After

Width:  |  Height:  |  Size: 43 B

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 453 B

After

Width:  |  Height:  |  Size: 453 B

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 445 B

After

Width:  |  Height:  |  Size: 445 B

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 628 B

After

Width:  |  Height:  |  Size: 628 B

View File

Before

Width:  |  Height:  |  Size: 608 B

After

Width:  |  Height:  |  Size: 608 B

View File

Before

Width:  |  Height:  |  Size: 516 B

After

Width:  |  Height:  |  Size: 516 B

View File

Before

Width:  |  Height:  |  Size: 578 B

After

Width:  |  Height:  |  Size: 578 B

View File

Before

Width:  |  Height:  |  Size: 519 B

After

Width:  |  Height:  |  Size: 519 B

View File

Before

Width:  |  Height:  |  Size: 657 B

After

Width:  |  Height:  |  Size: 657 B

View File

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

Before

Width:  |  Height:  |  Size: 454 B

After

Width:  |  Height:  |  Size: 454 B

View File

Before

Width:  |  Height:  |  Size: 536 B

After

Width:  |  Height:  |  Size: 536 B

View File

Before

Width:  |  Height:  |  Size: 435 B

After

Width:  |  Height:  |  Size: 435 B

View File

Before

Width:  |  Height:  |  Size: 330 B

After

Width:  |  Height:  |  Size: 330 B

View File

Before

Width:  |  Height:  |  Size: 775 B

After

Width:  |  Height:  |  Size: 775 B

View File

Before

Width:  |  Height:  |  Size: 444 B

After

Width:  |  Height:  |  Size: 444 B

View File

Before

Width:  |  Height:  |  Size: 511 B

After

Width:  |  Height:  |  Size: 511 B

Some files were not shown because too many files have changed in this diff Show More