193 changed files with 0 additions and 65406 deletions
@ -1,14 +0,0 @@ |
|||||
# https://editorconfig.org |
|
||||
root = true |
|
||||
|
|
||||
[*] |
|
||||
charset = utf-8 |
|
||||
indent_style = space |
|
||||
indent_size = 2 |
|
||||
end_of_line = lf |
|
||||
insert_final_newline = true |
|
||||
trim_trailing_whitespace = true |
|
||||
|
|
||||
[*.md] |
|
||||
insert_final_newline = false |
|
||||
trim_trailing_whitespace = false |
|
||||
@ -1,3 +0,0 @@ |
|||||
VUE_APP_VERSION=3.0 |
|
||||
VUE_APP_NAME=Bmz Admin |
|
||||
VUE_APP_API_BASE_URL=http://api.base.ahbmz.com/api |
|
||||
@ -1 +0,0 @@ |
|||||
VUE_APP_API_BASE_URL=http://api.base.ahbmz.com/api |
|
||||
@ -1,2 +0,0 @@ |
|||||
NODE_ENV=production |
|
||||
VUE_APP_API_BASE_URL=https://v1.eleadmin.com/api |
|
||||
@ -1,4 +0,0 @@ |
|||||
public |
|
||||
src/assets |
|
||||
dist |
|
||||
node_modules |
|
||||
@ -1,16 +0,0 @@ |
|||||
module.exports = { |
|
||||
root: true, |
|
||||
env: { |
|
||||
node: true, |
|
||||
}, |
|
||||
extends: [ |
|
||||
"plugin:vue/essential", |
|
||||
'eslint:recommended' |
|
||||
], |
|
||||
parserOptions: { |
|
||||
parser: 'babel-eslint' |
|
||||
}, |
|
||||
rules: { |
|
||||
//"no-unused-vars": "off"
|
|
||||
} |
|
||||
} |
|
||||
@ -1,6 +0,0 @@ |
|||||
.idea/ |
|
||||
node_modules/ |
|
||||
dist/ |
|
||||
#public/uploads/ |
|
||||
|
|
||||
|
|
||||
@ -1,3 +0,0 @@ |
|||||
# front.cms.ahbmz.com |
|
||||
|
|
||||
cms前台页面 |
|
||||
@ -1,5 +0,0 @@ |
|||||
module.exports = { |
|
||||
presets: [ |
|
||||
'@vue/cli-plugin-babel/preset' |
|
||||
] |
|
||||
} |
|
||||
File diff suppressed because one or more lines are too long
Binary file not shown.
@ -1,14 +0,0 @@ |
|||||
{ |
|
||||
"compilerOptions": { |
|
||||
"baseUrl": "./", |
|
||||
"paths": { |
|
||||
"@/*": [ |
|
||||
"src/*" |
|
||||
] |
|
||||
} |
|
||||
}, |
|
||||
"exclude": [ |
|
||||
"node_modules", |
|
||||
"dist" |
|
||||
] |
|
||||
} |
|
||||
File diff suppressed because it is too large
@ -1,56 +0,0 @@ |
|||||
{ |
|
||||
"name": "ele-admin-template", |
|
||||
"version": "1.2.0", |
|
||||
"private": true, |
|
||||
"scripts": { |
|
||||
"serve": "vue-cli-service serve", |
|
||||
"build": "vue-cli-service build", |
|
||||
"build:preview": "vue-cli-service build --mode preview", |
|
||||
"build:report": "vue-cli-service build --report", |
|
||||
"lint": "vue-cli-service lint" |
|
||||
}, |
|
||||
"dependencies": { |
|
||||
"@amap/amap-jsapi-loader": "^0.0.7", |
|
||||
"@riophae/vue-treeselect": "^0.4.0", |
|
||||
"@tinymce/tinymce-vue": "^3.2.8", |
|
||||
"axios": "^0.21.1", |
|
||||
"core-js": "^3.8.3", |
|
||||
"countup.js": "^2.0.7", |
|
||||
"cropperjs": "^1.5.9", |
|
||||
"echarts": "^4.9.0", |
|
||||
"echarts-wordcloud": "^1.1.3", |
|
||||
"ele-admin": "^1.2.0", |
|
||||
"element-ui": "^2.15.0", |
|
||||
"nprogress": "^0.2.0", |
|
||||
"tinymce": "^5.7.0", |
|
||||
"vue": "^2.6.12", |
|
||||
"vue-axios": "^2.1.5", |
|
||||
"vue-clipboard2": "^0.3.1", |
|
||||
"vue-countup-v2": "^4.0.0", |
|
||||
"vue-qr": "^2.3.0", |
|
||||
"vue-router": "^3.5.1", |
|
||||
"vuedraggable": "^2.24.3", |
|
||||
"vuex": "^3.6.2", |
|
||||
"xgplayer-vue": "^1.1.5", |
|
||||
"xlsx": "^0.16.9" |
|
||||
}, |
|
||||
"devDependencies": { |
|
||||
"@vue/cli-plugin-babel": "^4.5.11", |
|
||||
"@vue/cli-plugin-eslint": "^4.5.11", |
|
||||
"@vue/cli-plugin-router": "^4.5.11", |
|
||||
"@vue/cli-plugin-vuex": "^4.5.11", |
|
||||
"@vue/cli-service": "^4.5.11", |
|
||||
"babel-eslint": "^10.1.0", |
|
||||
"compression-webpack-plugin": "^6.1.1", |
|
||||
"eslint": "^6.8.0", |
|
||||
"eslint-plugin-vue": "^7.6.0", |
|
||||
"sass": "^1.3.0", |
|
||||
"sass-loader": "^10.1.1", |
|
||||
"vue-template-compiler": "^2.6.12" |
|
||||
}, |
|
||||
"browserslist": [ |
|
||||
"> 1%", |
|
||||
"last 2 versions", |
|
||||
"not dead" |
|
||||
] |
|
||||
} |
|
||||
|
Before Width: | Height: | Size: 4.2 KiB |
@ -1,22 +0,0 @@ |
|||||
<!DOCTYPE html> |
|
||||
<html lang="zh-CN"> |
|
||||
<head> |
|
||||
<meta charset="utf-8"> |
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0"> |
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> |
|
||||
<title><%= process.env.VUE_APP_NAME %></title> |
|
||||
</head> |
|
||||
<body> |
|
||||
<noscript> |
|
||||
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> |
|
||||
</noscript> |
|
||||
<div id="app"> |
|
||||
<div class="ele-admin-loading"></div> |
|
||||
<style> |
|
||||
.ele-admin-loading{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.ele-admin-loading:before{content:"";width:30px;height:30px;margin:0 auto;display:block;border-radius:50%;background:#409eff;animation:loading-bounce .3s cubic-bezier(0.05,0,0.2,1) infinite alternate}.ele-admin-loading:after{content:"";width:10px;height:2px;margin:0 auto;display:block;border-radius:50%;background:#BBB;animation:loading-shadow .3s cubic-bezier(0.05,0,0.2,1) infinite alternate}@keyframes loading-bounce{from{transform:translateY(0)}to{transform:translateY(-40px)}}@keyframes loading-shadow{from{transform:scale(1,1);opacity:1}to{transform:scale(3,2);opacity:.3}} |
|
||||
</style> |
|
||||
</div> |
|
||||
<!-- built files will be auto injected --> |
|
||||
</body> |
|
||||
</html> |
|
||||
@ -1,389 +0,0 @@ |
|||||
tinymce.addI18n('zh_CN',{ |
|
||||
"Redo": "\u91cd\u505a", |
|
||||
"Undo": "\u64a4\u9500", |
|
||||
"Cut": "\u526a\u5207", |
|
||||
"Copy": "\u590d\u5236", |
|
||||
"Paste": "\u7c98\u8d34", |
|
||||
"Select all": "\u5168\u9009", |
|
||||
"New document": "\u65b0\u6587\u4ef6", |
|
||||
"Ok": "\u786e\u5b9a", |
|
||||
"Cancel": "\u53d6\u6d88", |
|
||||
"Visual aids": "\u7f51\u683c\u7ebf", |
|
||||
"Bold": "\u7c97\u4f53", |
|
||||
"Italic": "\u659c\u4f53", |
|
||||
"Underline": "\u4e0b\u5212\u7ebf", |
|
||||
"Strikethrough": "\u5220\u9664\u7ebf", |
|
||||
"Superscript": "\u4e0a\u6807", |
|
||||
"Subscript": "\u4e0b\u6807", |
|
||||
"Clear formatting": "\u6e05\u9664\u683c\u5f0f", |
|
||||
"Align left": "\u5de6\u8fb9\u5bf9\u9f50", |
|
||||
"Align center": "\u4e2d\u95f4\u5bf9\u9f50", |
|
||||
"Align right": "\u53f3\u8fb9\u5bf9\u9f50", |
|
||||
"Justify": "\u4e24\u7aef\u5bf9\u9f50", |
|
||||
"Bullet list": "\u9879\u76ee\u7b26\u53f7", |
|
||||
"Numbered list": "\u7f16\u53f7\u5217\u8868", |
|
||||
"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb", |
|
||||
"Increase indent": "\u589e\u52a0\u7f29\u8fdb", |
|
||||
"Close": "\u5173\u95ed", |
|
||||
"Formats": "\u683c\u5f0f", |
|
||||
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u6253\u5f00\u526a\u8d34\u677f\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u7b49\u5feb\u6377\u952e\u3002", |
|
||||
"Headers": "\u6807\u9898", |
|
||||
"Header 1": "\u6807\u98981", |
|
||||
"Header 2": "\u6807\u98982", |
|
||||
"Header 3": "\u6807\u98983", |
|
||||
"Header 4": "\u6807\u98984", |
|
||||
"Header 5": "\u6807\u98985", |
|
||||
"Header 6": "\u6807\u98986", |
|
||||
"Headings": "\u6807\u9898", |
|
||||
"Heading 1": "\u6807\u98981", |
|
||||
"Heading 2": "\u6807\u98982", |
|
||||
"Heading 3": "\u6807\u98983", |
|
||||
"Heading 4": "\u6807\u98984", |
|
||||
"Heading 5": "\u6807\u98985", |
|
||||
"Heading 6": "\u6807\u98986", |
|
||||
"Preformatted": "\u9884\u5148\u683c\u5f0f\u5316\u7684", |
|
||||
"Div": "Div", |
|
||||
"Pre": "Pre", |
|
||||
"Code": "\u4ee3\u7801", |
|
||||
"Paragraph": "\u6bb5\u843d", |
|
||||
"Blockquote": "\u5f15\u6587\u533a\u5757", |
|
||||
"Inline": "\u6587\u672c", |
|
||||
"Blocks": "\u57fa\u5757", |
|
||||
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002", |
|
||||
"Fonts": "\u5b57\u4f53", |
|
||||
"Font Sizes": "\u5b57\u53f7", |
|
||||
"Class": "\u7c7b\u578b", |
|
||||
"Browse for an image": "\u6d4f\u89c8\u56fe\u50cf", |
|
||||
"OR": "\u6216", |
|
||||
"Drop an image here": "\u62d6\u653e\u4e00\u5f20\u56fe\u50cf\u81f3\u6b64", |
|
||||
"Upload": "\u4e0a\u4f20", |
|
||||
"Block": "\u5757", |
|
||||
"Align": "\u5bf9\u9f50", |
|
||||
"Default": "\u9ed8\u8ba4", |
|
||||
"Circle": "\u7a7a\u5fc3\u5706", |
|
||||
"Disc": "\u5b9e\u5fc3\u5706", |
|
||||
"Square": "\u65b9\u5757", |
|
||||
"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd", |
|
||||
"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd", |
|
||||
"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd", |
|
||||
"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd", |
|
||||
"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd", |
|
||||
"Anchor...": "\u951a\u70b9...", |
|
||||
"Name": "\u540d\u79f0", |
|
||||
"Id": "\u6807\u8bc6\u7b26", |
|
||||
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002", |
|
||||
"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f", |
|
||||
"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f", |
|
||||
"Special characters...": "\u7279\u6b8a\u5b57\u7b26...", |
|
||||
"Source code": "\u6e90\u4ee3\u7801", |
|
||||
"Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b", |
|
||||
"Language": "\u8bed\u8a00", |
|
||||
"Code sample...": "\u793a\u4f8b\u4ee3\u7801...", |
|
||||
"Color Picker": "\u9009\u8272\u5668", |
|
||||
"R": "R", |
|
||||
"G": "G", |
|
||||
"B": "B", |
|
||||
"Left to right": "\u4ece\u5de6\u5230\u53f3", |
|
||||
"Right to left": "\u4ece\u53f3\u5230\u5de6", |
|
||||
"Emoticons...": "\u8868\u60c5\u7b26\u53f7...", |
|
||||
"Metadata and Document Properties": "\u5143\u6570\u636e\u548c\u6587\u6863\u5c5e\u6027", |
|
||||
"Title": "\u6807\u9898", |
|
||||
"Keywords": "\u5173\u952e\u8bcd", |
|
||||
"Description": "\u63cf\u8ff0", |
|
||||
"Robots": "\u673a\u5668\u4eba", |
|
||||
"Author": "\u4f5c\u8005", |
|
||||
"Encoding": "\u7f16\u7801", |
|
||||
"Fullscreen": "\u5168\u5c4f", |
|
||||
"Action": "\u64cd\u4f5c", |
|
||||
"Shortcut": "\u5feb\u6377\u952e", |
|
||||
"Help": "\u5e2e\u52a9", |
|
||||
"Address": "\u5730\u5740", |
|
||||
"Focus to menubar": "\u79fb\u52a8\u7126\u70b9\u5230\u83dc\u5355\u680f", |
|
||||
"Focus to toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u5de5\u5177\u680f", |
|
||||
"Focus to element path": "\u79fb\u52a8\u7126\u70b9\u5230\u5143\u7d20\u8def\u5f84", |
|
||||
"Focus to contextual toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u4e0a\u4e0b\u6587\u83dc\u5355", |
|
||||
"Insert link (if link plugin activated)": "\u63d2\u5165\u94fe\u63a5 (\u5982\u679c\u94fe\u63a5\u63d2\u4ef6\u5df2\u6fc0\u6d3b)", |
|
||||
"Save (if save plugin activated)": "\u4fdd\u5b58(\u5982\u679c\u4fdd\u5b58\u63d2\u4ef6\u5df2\u6fc0\u6d3b)", |
|
||||
"Find (if searchreplace plugin activated)": "\u67e5\u627e(\u5982\u679c\u67e5\u627e\u66ff\u6362\u63d2\u4ef6\u5df2\u6fc0\u6d3b)", |
|
||||
"Plugins installed ({0}):": "\u5df2\u5b89\u88c5\u63d2\u4ef6 ({0}):", |
|
||||
"Premium plugins:": "\u4f18\u79c0\u63d2\u4ef6\uff1a", |
|
||||
"Learn more...": "\u4e86\u89e3\u66f4\u591a...", |
|
||||
"You are using {0}": "\u4f60\u6b63\u5728\u4f7f\u7528 {0}", |
|
||||
"Plugins": "\u63d2\u4ef6", |
|
||||
"Handy Shortcuts": "\u5feb\u6377\u952e", |
|
||||
"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf", |
|
||||
"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247", |
|
||||
"Image description": "\u56fe\u7247\u63cf\u8ff0", |
|
||||
"Source": "\u5730\u5740", |
|
||||
"Dimensions": "\u5927\u5c0f", |
|
||||
"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4", |
|
||||
"General": "\u666e\u901a", |
|
||||
"Advanced": "\u9ad8\u7ea7", |
|
||||
"Style": "\u6837\u5f0f", |
|
||||
"Vertical space": "\u5782\u76f4\u8fb9\u8ddd", |
|
||||
"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd", |
|
||||
"Border": "\u8fb9\u6846", |
|
||||
"Insert image": "\u63d2\u5165\u56fe\u7247", |
|
||||
"Image...": "\u56fe\u7247...", |
|
||||
"Image list": "\u56fe\u7247\u5217\u8868", |
|
||||
"Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c", |
|
||||
"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c", |
|
||||
"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c", |
|
||||
"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c", |
|
||||
"Edit image": "\u7f16\u8f91\u56fe\u7247", |
|
||||
"Image options": "\u56fe\u7247\u9009\u9879", |
|
||||
"Zoom in": "\u653e\u5927", |
|
||||
"Zoom out": "\u7f29\u5c0f", |
|
||||
"Crop": "\u88c1\u526a", |
|
||||
"Resize": "\u8c03\u6574\u5927\u5c0f", |
|
||||
"Orientation": "\u65b9\u5411", |
|
||||
"Brightness": "\u4eae\u5ea6", |
|
||||
"Sharpen": "\u9510\u5316", |
|
||||
"Contrast": "\u5bf9\u6bd4\u5ea6", |
|
||||
"Color levels": "\u989c\u8272\u5c42\u6b21", |
|
||||
"Gamma": "\u4f3d\u9a6c\u503c", |
|
||||
"Invert": "\u53cd\u8f6c", |
|
||||
"Apply": "\u5e94\u7528", |
|
||||
"Back": "\u540e\u9000", |
|
||||
"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4", |
|
||||
"Date\/time": "\u65e5\u671f\/\u65f6\u95f4", |
|
||||
"Insert\/Edit Link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5", |
|
||||
"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5", |
|
||||
"Text to display": "\u663e\u793a\u6587\u5b57", |
|
||||
"Url": "\u5730\u5740", |
|
||||
"Open link in...": "\u94fe\u63a5\u6253\u5f00\u4f4d\u7f6e...", |
|
||||
"Current window": "\u5f53\u524d\u7a97\u53e3", |
|
||||
"None": "\u65e0", |
|
||||
"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00", |
|
||||
"Remove link": "\u5220\u9664\u94fe\u63a5", |
|
||||
"Anchors": "\u951a\u70b9", |
|
||||
"Link...": "\u94fe\u63a5...", |
|
||||
"Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5", |
|
||||
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f", |
|
||||
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f", |
|
||||
"Link list": "\u94fe\u63a5\u5217\u8868", |
|
||||
"Insert video": "\u63d2\u5165\u89c6\u9891", |
|
||||
"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891", |
|
||||
"Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53", |
|
||||
"Alternative source": "\u955c\u50cf", |
|
||||
"Alternative source URL": "\u66ff\u4ee3\u6765\u6e90\u7f51\u5740", |
|
||||
"Media poster (Image URL)": "\u5c01\u9762(\u56fe\u7247\u5730\u5740)", |
|
||||
"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:", |
|
||||
"Embed": "\u5185\u5d4c", |
|
||||
"Media...": "\u591a\u5a92\u4f53...", |
|
||||
"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c", |
|
||||
"Page break": "\u5206\u9875\u7b26", |
|
||||
"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c", |
|
||||
"Preview": "\u9884\u89c8", |
|
||||
"Print...": "\u6253\u5370...", |
|
||||
"Save": "\u4fdd\u5b58", |
|
||||
"Find": "\u67e5\u627e", |
|
||||
"Replace with": "\u66ff\u6362\u4e3a", |
|
||||
"Replace": "\u66ff\u6362", |
|
||||
"Replace all": "\u5168\u90e8\u66ff\u6362", |
|
||||
"Previous": "\u4e0a\u4e00\u4e2a", |
|
||||
"Next": "\u4e0b\u4e00\u4e2a", |
|
||||
"Find and replace...": "\u67e5\u627e\u5e76\u66ff\u6362...", |
|
||||
"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.", |
|
||||
"Match case": "\u533a\u5206\u5927\u5c0f\u5199", |
|
||||
"Find whole words only": "\u5168\u5b57\u5339\u914d", |
|
||||
"Spell check": "\u62fc\u5199\u68c0\u67e5", |
|
||||
"Ignore": "\u5ffd\u7565", |
|
||||
"Ignore all": "\u5168\u90e8\u5ffd\u7565", |
|
||||
"Finish": "\u5b8c\u6210", |
|
||||
"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178", |
|
||||
"Insert table": "\u63d2\u5165\u8868\u683c", |
|
||||
"Table properties": "\u8868\u683c\u5c5e\u6027", |
|
||||
"Delete table": "\u5220\u9664\u8868\u683c", |
|
||||
"Cell": "\u5355\u5143\u683c", |
|
||||
"Row": "\u884c", |
|
||||
"Column": "\u5217", |
|
||||
"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027", |
|
||||
"Merge cells": "\u5408\u5e76\u5355\u5143\u683c", |
|
||||
"Split cell": "\u62c6\u5206\u5355\u5143\u683c", |
|
||||
"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165", |
|
||||
"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165", |
|
||||
"Delete row": "\u5220\u9664\u884c", |
|
||||
"Row properties": "\u884c\u5c5e\u6027", |
|
||||
"Cut row": "\u526a\u5207\u884c", |
|
||||
"Copy row": "\u590d\u5236\u884c", |
|
||||
"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9", |
|
||||
"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9", |
|
||||
"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165", |
|
||||
"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165", |
|
||||
"Delete column": "\u5220\u9664\u5217", |
|
||||
"Cols": "\u5217", |
|
||||
"Rows": "\u884c", |
|
||||
"Width": "\u5bbd", |
|
||||
"Height": "\u9ad8", |
|
||||
"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd", |
|
||||
"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd", |
|
||||
"Show caption": "\u663e\u793a\u6807\u9898", |
|
||||
"Left": "\u5de6\u5bf9\u9f50", |
|
||||
"Center": "\u5c45\u4e2d", |
|
||||
"Right": "\u53f3\u5bf9\u9f50", |
|
||||
"Cell type": "\u5355\u5143\u683c\u7c7b\u578b", |
|
||||
"Scope": "\u8303\u56f4", |
|
||||
"Alignment": "\u5bf9\u9f50\u65b9\u5f0f", |
|
||||
"H Align": "\u6c34\u5e73\u5bf9\u9f50", |
|
||||
"V Align": "\u5782\u76f4\u5bf9\u9f50", |
|
||||
"Top": "\u9876\u90e8\u5bf9\u9f50", |
|
||||
"Middle": "\u5782\u76f4\u5c45\u4e2d", |
|
||||
"Bottom": "\u5e95\u90e8\u5bf9\u9f50", |
|
||||
"Header cell": "\u8868\u5934\u5355\u5143\u683c", |
|
||||
"Row group": "\u884c\u7ec4", |
|
||||
"Column group": "\u5217\u7ec4", |
|
||||
"Row type": "\u884c\u7c7b\u578b", |
|
||||
"Header": "\u8868\u5934", |
|
||||
"Body": "\u8868\u4f53", |
|
||||
"Footer": "\u8868\u5c3e", |
|
||||
"Border color": "\u8fb9\u6846\u989c\u8272", |
|
||||
"Insert template...": "\u63d2\u5165\u6a21\u677f...", |
|
||||
"Templates": "\u6a21\u677f", |
|
||||
"Template": "\u6a21\u677f", |
|
||||
"Text color": "\u6587\u5b57\u989c\u8272", |
|
||||
"Background color": "\u80cc\u666f\u8272", |
|
||||
"Custom...": "\u81ea\u5b9a\u4e49...", |
|
||||
"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272", |
|
||||
"No color": "\u65e0", |
|
||||
"Remove color": "\u79fb\u9664\u989c\u8272", |
|
||||
"Table of Contents": "\u5185\u5bb9\u5217\u8868", |
|
||||
"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846", |
|
||||
"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26", |
|
||||
"Word count": "\u5b57\u6570", |
|
||||
"Words: {0}": "\u5b57\u6570\uff1a{0}", |
|
||||
"{0} words": "{0} \u5b57", |
|
||||
"File": "\u6587\u4ef6", |
|
||||
"Edit": "\u7f16\u8f91", |
|
||||
"Insert": "\u63d2\u5165", |
|
||||
"View": "\u89c6\u56fe", |
|
||||
"Format": "\u683c\u5f0f", |
|
||||
"Table": "\u8868\u683c", |
|
||||
"Tools": "\u5de5\u5177", |
|
||||
"Powered by {0}": "\u7531{0}\u9a71\u52a8", |
|
||||
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9", |
|
||||
"Image title": "\u56fe\u7247\u6807\u9898", |
|
||||
"Border width": "\u8fb9\u6846\u5bbd\u5ea6", |
|
||||
"Border style": "\u8fb9\u6846\u6837\u5f0f", |
|
||||
"Error": "\u9519\u8bef", |
|
||||
"Warn": "\u8b66\u544a", |
|
||||
"Valid": "\u6709\u6548", |
|
||||
"To open the popup, press Shift+Enter": "\u6309Shitf+Enter\u952e\u6253\u5f00\u5bf9\u8bdd\u6846", |
|
||||
"Rich Text Area. Press ALT-0 for help.": "\u7f16\u8f91\u533a\u3002\u6309Alt+0\u952e\u6253\u5f00\u5e2e\u52a9\u3002", |
|
||||
"System Font": "\u7cfb\u7edf\u5b57\u4f53", |
|
||||
"Failed to upload image: {0}": "\u56fe\u7247\u4e0a\u4f20\u5931\u8d25: {0}", |
|
||||
"Failed to load plugin: {0} from url {1}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25: {0} \u6765\u81ea\u94fe\u63a5 {1}", |
|
||||
"Failed to load plugin url: {0}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25 \u94fe\u63a5: {0}", |
|
||||
"Failed to initialize plugin: {0}": "\u63d2\u4ef6\u521d\u59cb\u5316\u5931\u8d25: {0}", |
|
||||
"example": "\u793a\u4f8b", |
|
||||
"Search": "\u641c\u7d22", |
|
||||
"All": "\u5168\u90e8", |
|
||||
"Currency": "\u8d27\u5e01", |
|
||||
"Text": "\u6587\u5b57", |
|
||||
"Quotations": "\u5f15\u7528", |
|
||||
"Mathematical": "\u6570\u5b66", |
|
||||
"Extended Latin": "\u62c9\u4e01\u8bed\u6269\u5145", |
|
||||
"Symbols": "\u7b26\u53f7", |
|
||||
"Arrows": "\u7bad\u5934", |
|
||||
"User Defined": "\u81ea\u5b9a\u4e49", |
|
||||
"dollar sign": "\u7f8e\u5143\u7b26\u53f7", |
|
||||
"currency sign": "\u8d27\u5e01\u7b26\u53f7", |
|
||||
"euro-currency sign": "\u6b27\u5143\u7b26\u53f7", |
|
||||
"colon sign": "\u5192\u53f7", |
|
||||
"cruzeiro sign": "\u514b\u9c81\u8d5b\u7f57\u5e01\u7b26\u53f7", |
|
||||
"french franc sign": "\u6cd5\u90ce\u7b26\u53f7", |
|
||||
"lira sign": "\u91cc\u62c9\u7b26\u53f7", |
|
||||
"mill sign": "\u5bc6\u5c14\u7b26\u53f7", |
|
||||
"naira sign": "\u5948\u62c9\u7b26\u53f7", |
|
||||
"peseta sign": "\u6bd4\u585e\u5854\u7b26\u53f7", |
|
||||
"rupee sign": "\u5362\u6bd4\u7b26\u53f7", |
|
||||
"won sign": "\u97e9\u5143\u7b26\u53f7", |
|
||||
"new sheqel sign": "\u65b0\u8c22\u514b\u5c14\u7b26\u53f7", |
|
||||
"dong sign": "\u8d8a\u5357\u76fe\u7b26\u53f7", |
|
||||
"kip sign": "\u8001\u631d\u57fa\u666e\u7b26\u53f7", |
|
||||
"tugrik sign": "\u56fe\u683c\u91cc\u514b\u7b26\u53f7", |
|
||||
"drachma sign": "\u5fb7\u62c9\u514b\u9a6c\u7b26\u53f7", |
|
||||
"german penny symbol": "\u5fb7\u56fd\u4fbf\u58eb\u7b26\u53f7", |
|
||||
"peso sign": "\u6bd4\u7d22\u7b26\u53f7", |
|
||||
"guarani sign": "\u74dc\u62c9\u5c3c\u7b26\u53f7", |
|
||||
"austral sign": "\u6fb3\u5143\u7b26\u53f7", |
|
||||
"hryvnia sign": "\u683c\u91cc\u592b\u5c3c\u4e9a\u7b26\u53f7", |
|
||||
"cedi sign": "\u585e\u5730\u7b26\u53f7", |
|
||||
"livre tournois sign": "\u91cc\u5f17\u5f17\u5c14\u7b26\u53f7", |
|
||||
"spesmilo sign": "spesmilo\u7b26\u53f7", |
|
||||
"tenge sign": "\u575a\u6208\u7b26\u53f7", |
|
||||
"indian rupee sign": "\u5370\u5ea6\u5362\u6bd4", |
|
||||
"turkish lira sign": "\u571f\u8033\u5176\u91cc\u62c9", |
|
||||
"nordic mark sign": "\u5317\u6b27\u9a6c\u514b", |
|
||||
"manat sign": "\u9a6c\u7eb3\u7279\u7b26\u53f7", |
|
||||
"ruble sign": "\u5362\u5e03\u7b26\u53f7", |
|
||||
"yen character": "\u65e5\u5143\u5b57\u6837", |
|
||||
"yuan character": "\u4eba\u6c11\u5e01\u5143\u5b57\u6837", |
|
||||
"yuan character, in hong kong and taiwan": "\u5143\u5b57\u6837\uff08\u6e2f\u53f0\u5730\u533a\uff09", |
|
||||
"yen\/yuan character variant one": "\u5143\u5b57\u6837\uff08\u5927\u5199\uff09", |
|
||||
"Loading emoticons...": "\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7...", |
|
||||
"Could not load emoticons": "\u4e0d\u80fd\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7", |
|
||||
"People": "\u4eba\u7c7b", |
|
||||
"Animals and Nature": "\u52a8\u7269\u548c\u81ea\u7136", |
|
||||
"Food and Drink": "\u98df\u7269\u548c\u996e\u54c1", |
|
||||
"Activity": "\u6d3b\u52a8", |
|
||||
"Travel and Places": "\u65c5\u6e38\u548c\u5730\u70b9", |
|
||||
"Objects": "\u7269\u4ef6", |
|
||||
"Flags": "\u65d7\u5e1c", |
|
||||
"Characters": "\u5b57\u7b26", |
|
||||
"Characters (no spaces)": "\u5b57\u7b26(\u65e0\u7a7a\u683c)", |
|
||||
"Error: Form submit field collision.": "\u9519\u8bef: \u8868\u5355\u63d0\u4ea4\u5b57\u6bb5\u51b2\u7a81\u3002", |
|
||||
"Error: No form element found.": "\u9519\u8bef: \u6ca1\u6709\u8868\u5355\u63a7\u4ef6\u3002", |
|
||||
"Update": "\u66f4\u65b0", |
|
||||
"Color swatch": "\u989c\u8272\u6837\u672c", |
|
||||
"Turquoise": "\u9752\u7eff\u8272", |
|
||||
"Green": "\u7eff\u8272", |
|
||||
"Blue": "\u84dd\u8272", |
|
||||
"Purple": "\u7d2b\u8272", |
|
||||
"Navy Blue": "\u6d77\u519b\u84dd", |
|
||||
"Dark Turquoise": "\u6df1\u84dd\u7eff\u8272", |
|
||||
"Dark Green": "\u6df1\u7eff\u8272", |
|
||||
"Medium Blue": "\u4e2d\u84dd\u8272", |
|
||||
"Medium Purple": "\u4e2d\u7d2b\u8272", |
|
||||
"Midnight Blue": "\u6df1\u84dd\u8272", |
|
||||
"Yellow": "\u9ec4\u8272", |
|
||||
"Orange": "\u6a59\u8272", |
|
||||
"Red": "\u7ea2\u8272", |
|
||||
"Light Gray": "\u6d45\u7070\u8272", |
|
||||
"Gray": "\u7070\u8272", |
|
||||
"Dark Yellow": "\u6697\u9ec4\u8272", |
|
||||
"Dark Orange": "\u6df1\u6a59\u8272", |
|
||||
"Dark Red": "\u6df1\u7ea2\u8272", |
|
||||
"Medium Gray": "\u4e2d\u7070\u8272", |
|
||||
"Dark Gray": "\u6df1\u7070\u8272", |
|
||||
"Black": "\u9ed1\u8272", |
|
||||
"White": "\u767d\u8272", |
|
||||
"Switch to or from fullscreen mode": "\u5207\u6362\u5168\u5c4f\u6a21\u5f0f", |
|
||||
"Open help dialog": "\u6253\u5f00\u5e2e\u52a9\u5bf9\u8bdd\u6846", |
|
||||
"history": "\u5386\u53f2", |
|
||||
"styles": "\u6837\u5f0f", |
|
||||
"formatting": "\u683c\u5f0f\u5316", |
|
||||
"alignment": "\u5bf9\u9f50", |
|
||||
"indentation": "\u7f29\u8fdb", |
|
||||
"permanent pen": "\u8bb0\u53f7\u7b14", |
|
||||
"comments": "\u5907\u6ce8", |
|
||||
"Anchor": "\u951a\u70b9", |
|
||||
"Special character": "\u7279\u6b8a\u7b26\u53f7", |
|
||||
"Code sample": "\u4ee3\u7801\u793a\u4f8b", |
|
||||
"Color": "\u989c\u8272", |
|
||||
"Emoticons": "\u8868\u60c5", |
|
||||
"Document properties": "\u6587\u6863\u5c5e\u6027", |
|
||||
"Image": "\u56fe\u7247", |
|
||||
"Insert link": "\u63d2\u5165\u94fe\u63a5", |
|
||||
"Target": "\u6253\u5f00\u65b9\u5f0f", |
|
||||
"Link": "\u94fe\u63a5", |
|
||||
"Poster": "\u5c01\u9762", |
|
||||
"Media": "\u5a92\u4f53", |
|
||||
"Print": "\u6253\u5370", |
|
||||
"Prev": "\u4e0a\u4e00\u4e2a", |
|
||||
"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362", |
|
||||
"Whole words": "\u5168\u5b57\u5339\u914d", |
|
||||
"Spellcheck": "\u62fc\u5199\u68c0\u67e5", |
|
||||
"Caption": "\u6807\u9898", |
|
||||
"Insert template": "\u63d2\u5165\u6a21\u677f" |
|
||||
}); |
|
||||
@ -1,59 +0,0 @@ |
|||||
/** |
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved. |
|
||||
* Licensed under the LGPL or a commercial license. |
|
||||
* For LGPL see License.txt in the project root for license information. |
|
||||
* For commercial licenses see https://www.tiny.cloud/ |
|
||||
*/ |
|
||||
body { |
|
||||
background-color: #2f3742; |
|
||||
color: #dfe0e4; |
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; |
|
||||
line-height: 1.4; |
|
||||
margin: 1rem; |
|
||||
} |
|
||||
a { |
|
||||
color: #4099ff; |
|
||||
} |
|
||||
table { |
|
||||
border-collapse: collapse; |
|
||||
} |
|
||||
table th, |
|
||||
table td { |
|
||||
border: 1px solid #6d737b; |
|
||||
padding: 0.4rem; |
|
||||
} |
|
||||
figure { |
|
||||
display: table; |
|
||||
margin: 1rem auto; |
|
||||
} |
|
||||
figure figcaption { |
|
||||
color: #8a8f97; |
|
||||
display: block; |
|
||||
margin-top: 0.25rem; |
|
||||
text-align: center; |
|
||||
} |
|
||||
hr { |
|
||||
border-color: #6d737b; |
|
||||
border-style: solid; |
|
||||
border-width: 1px 0 0 0; |
|
||||
} |
|
||||
code { |
|
||||
background-color: #6d737b; |
|
||||
border-radius: 3px; |
|
||||
padding: 0.1rem 0.2rem; |
|
||||
} |
|
||||
/* Make text in selected cells in tables dark and readable */ |
|
||||
td[data-mce-selected], |
|
||||
th[data-mce-selected] { |
|
||||
color: #333; |
|
||||
} |
|
||||
.mce-content-body:not([dir=rtl]) blockquote { |
|
||||
border-left: 2px solid #6d737b; |
|
||||
margin-left: 1.5rem; |
|
||||
padding-left: 1rem; |
|
||||
} |
|
||||
.mce-content-body[dir=rtl] blockquote { |
|
||||
border-right: 2px solid #6d737b; |
|
||||
margin-right: 1.5rem; |
|
||||
padding-right: 1rem; |
|
||||
} |
|
||||
@ -1,7 +0,0 @@ |
|||||
/** |
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved. |
|
||||
* Licensed under the LGPL or a commercial license. |
|
||||
* For LGPL see License.txt in the project root for license information. |
|
||||
* For commercial licenses see https://www.tiny.cloud/ |
|
||||
*/ |
|
||||
body{background-color:#2f3742;color:#dfe0e4;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}a{color:#4099ff}table{border-collapse:collapse}table td,table th{border:1px solid #6d737b;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#8a8f97;display:block;margin-top:.25rem;text-align:center}hr{border-color:#6d737b;border-style:solid;border-width:1px 0 0 0}code{background-color:#6d737b;border-radius:3px;padding:.1rem .2rem}td[data-mce-selected],th[data-mce-selected]{color:#333}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #6d737b;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #6d737b;margin-right:1.5rem;padding-right:1rem} |
|
||||
@ -1,49 +0,0 @@ |
|||||
/** |
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved. |
|
||||
* Licensed under the LGPL or a commercial license. |
|
||||
* For LGPL see License.txt in the project root for license information. |
|
||||
* For commercial licenses see https://www.tiny.cloud/ |
|
||||
*/ |
|
||||
body { |
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; |
|
||||
line-height: 1.4; |
|
||||
margin: 1rem; |
|
||||
} |
|
||||
table { |
|
||||
border-collapse: collapse; |
|
||||
} |
|
||||
table th, |
|
||||
table td { |
|
||||
border: 1px solid #ccc; |
|
||||
padding: 0.4rem; |
|
||||
} |
|
||||
figure { |
|
||||
display: table; |
|
||||
margin: 1rem auto; |
|
||||
} |
|
||||
figure figcaption { |
|
||||
color: #999; |
|
||||
display: block; |
|
||||
margin-top: 0.25rem; |
|
||||
text-align: center; |
|
||||
} |
|
||||
hr { |
|
||||
border-color: #ccc; |
|
||||
border-style: solid; |
|
||||
border-width: 1px 0 0 0; |
|
||||
} |
|
||||
code { |
|
||||
background-color: #e8e8e8; |
|
||||
border-radius: 3px; |
|
||||
padding: 0.1rem 0.2rem; |
|
||||
} |
|
||||
.mce-content-body:not([dir=rtl]) blockquote { |
|
||||
border-left: 2px solid #ccc; |
|
||||
margin-left: 1.5rem; |
|
||||
padding-left: 1rem; |
|
||||
} |
|
||||
.mce-content-body[dir=rtl] blockquote { |
|
||||
border-right: 2px solid #ccc; |
|
||||
margin-right: 1.5rem; |
|
||||
padding-right: 1rem; |
|
||||
} |
|
||||
@ -1,7 +0,0 @@ |
|||||
/** |
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved. |
|
||||
* Licensed under the LGPL or a commercial license. |
|
||||
* For LGPL see License.txt in the project root for license information. |
|
||||
* For commercial licenses see https://www.tiny.cloud/ |
|
||||
*/ |
|
||||
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} |
|
||||
@ -1,54 +0,0 @@ |
|||||
/** |
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved. |
|
||||
* Licensed under the LGPL or a commercial license. |
|
||||
* For LGPL see License.txt in the project root for license information. |
|
||||
* For commercial licenses see https://www.tiny.cloud/ |
|
||||
*/ |
|
||||
@media screen { |
|
||||
html { |
|
||||
background: #f4f4f4; |
|
||||
min-height: 100%; |
|
||||
} |
|
||||
} |
|
||||
body { |
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; |
|
||||
} |
|
||||
@media screen { |
|
||||
body { |
|
||||
background-color: #fff; |
|
||||
box-shadow: 0 0 4px rgba(0, 0, 0, 0.15); |
|
||||
box-sizing: border-box; |
|
||||
margin: 1rem auto 0; |
|
||||
max-width: 820px; |
|
||||
min-height: calc(100vh - 1rem); |
|
||||
padding: 4rem 6rem 6rem 6rem; |
|
||||
} |
|
||||
} |
|
||||
table { |
|
||||
border-collapse: collapse; |
|
||||
} |
|
||||
table th, |
|
||||
table td { |
|
||||
border: 1px solid #ccc; |
|
||||
padding: 0.4rem; |
|
||||
} |
|
||||
figure figcaption { |
|
||||
color: #999; |
|
||||
margin-top: 0.25rem; |
|
||||
text-align: center; |
|
||||
} |
|
||||
hr { |
|
||||
border-color: #ccc; |
|
||||
border-style: solid; |
|
||||
border-width: 1px 0 0 0; |
|
||||
} |
|
||||
.mce-content-body:not([dir=rtl]) blockquote { |
|
||||
border-left: 2px solid #ccc; |
|
||||
margin-left: 1.5rem; |
|
||||
padding-left: 1rem; |
|
||||
} |
|
||||
.mce-content-body[dir=rtl] blockquote { |
|
||||
border-right: 2px solid #ccc; |
|
||||
margin-right: 1.5rem; |
|
||||
padding-right: 1rem; |
|
||||
} |
|
||||
@ -1,7 +0,0 @@ |
|||||
/** |
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved. |
|
||||
* Licensed under the LGPL or a commercial license. |
|
||||
* For LGPL see License.txt in the project root for license information. |
|
||||
* For commercial licenses see https://www.tiny.cloud/ |
|
||||
*/ |
|
||||
@media screen{html{background:#f4f4f4;min-height:100%}}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}@media screen{body{background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.15);box-sizing:border-box;margin:1rem auto 0;max-width:820px;min-height:calc(100vh - 1rem);padding:4rem 6rem 6rem 6rem}}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure figcaption{color:#999;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} |
|
||||
@ -1,50 +0,0 @@ |
|||||
/** |
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved. |
|
||||
* Licensed under the LGPL or a commercial license. |
|
||||
* For LGPL see License.txt in the project root for license information. |
|
||||
* For commercial licenses see https://www.tiny.cloud/ |
|
||||
*/ |
|
||||
body { |
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; |
|
||||
line-height: 1.4; |
|
||||
margin: 1rem auto; |
|
||||
max-width: 900px; |
|
||||
} |
|
||||
table { |
|
||||
border-collapse: collapse; |
|
||||
} |
|
||||
table th, |
|
||||
table td { |
|
||||
border: 1px solid #ccc; |
|
||||
padding: 0.4rem; |
|
||||
} |
|
||||
figure { |
|
||||
display: table; |
|
||||
margin: 1rem auto; |
|
||||
} |
|
||||
figure figcaption { |
|
||||
color: #999; |
|
||||
display: block; |
|
||||
margin-top: 0.25rem; |
|
||||
text-align: center; |
|
||||
} |
|
||||
hr { |
|
||||
border-color: #ccc; |
|
||||
border-style: solid; |
|
||||
border-width: 1px 0 0 0; |
|
||||
} |
|
||||
code { |
|
||||
background-color: #e8e8e8; |
|
||||
border-radius: 3px; |
|
||||
padding: 0.1rem 0.2rem; |
|
||||
} |
|
||||
.mce-content-body:not([dir=rtl]) blockquote { |
|
||||
border-left: 2px solid #ccc; |
|
||||
margin-left: 1.5rem; |
|
||||
padding-left: 1rem; |
|
||||
} |
|
||||
.mce-content-body[dir=rtl] blockquote { |
|
||||
border-right: 2px solid #ccc; |
|
||||
margin-right: 1.5rem; |
|
||||
padding-right: 1rem; |
|
||||
} |
|
||||
@ -1,7 +0,0 @@ |
|||||
/** |
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved. |
|
||||
* Licensed under the LGPL or a commercial license. |
|
||||
* For LGPL see License.txt in the project root for license information. |
|
||||
* For commercial licenses see https://www.tiny.cloud/ |
|
||||
*/ |
|
||||
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem auto;max-width:900px}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} |
|
||||
@ -1,677 +0,0 @@ |
|||||
/** |
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved. |
|
||||
* Licensed under the LGPL or a commercial license. |
|
||||
* For LGPL see License.txt in the project root for license information. |
|
||||
* For commercial licenses see https://www.tiny.cloud/ |
|
||||
*/ |
|
||||
.mce-content-body .mce-item-anchor { |
|
||||
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; |
|
||||
cursor: default; |
|
||||
display: inline-block; |
|
||||
height: 12px !important; |
|
||||
padding: 0 2px; |
|
||||
-webkit-user-modify: read-only; |
|
||||
-moz-user-modify: read-only; |
|
||||
-webkit-user-select: all; |
|
||||
-moz-user-select: all; |
|
||||
-ms-user-select: all; |
|
||||
user-select: all; |
|
||||
width: 8px !important; |
|
||||
} |
|
||||
.mce-content-body .mce-item-anchor[data-mce-selected] { |
|
||||
outline-offset: 1px; |
|
||||
} |
|
||||
.tox-comments-visible .tox-comment { |
|
||||
background-color: #fff0b7; |
|
||||
} |
|
||||
.tox-comments-visible .tox-comment--active { |
|
||||
background-color: #ffe168; |
|
||||
} |
|
||||
.tox-checklist > li:not(.tox-checklist--hidden) { |
|
||||
list-style: none; |
|
||||
margin: 0.25em 0; |
|
||||
} |
|
||||
.tox-checklist > li:not(.tox-checklist--hidden)::before { |
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%236d737b%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); |
|
||||
background-size: 100%; |
|
||||
content: ''; |
|
||||
cursor: pointer; |
|
||||
height: 1em; |
|
||||
margin-left: -1.5em; |
|
||||
margin-top: 0.125em; |
|
||||
position: absolute; |
|
||||
width: 1em; |
|
||||
} |
|
||||
.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before { |
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); |
|
||||
} |
|
||||
[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before { |
|
||||
margin-left: 0; |
|
||||
margin-right: -1.5em; |
|
||||
} |
|
||||
/* stylelint-disable */ |
|
||||
/* http://prismjs.com/ */ |
|
||||
/** |
|
||||
* Dracula Theme originally by Zeno Rocha [@zenorocha] |
|
||||
* https://draculatheme.com/ |
|
||||
* |
|
||||
* Ported for PrismJS by Albert Vallverdu [@byverdu] |
|
||||
*/ |
|
||||
code[class*="language-"], |
|
||||
pre[class*="language-"] { |
|
||||
color: #f8f8f2; |
|
||||
background: none; |
|
||||
text-shadow: 0 1px rgba(0, 0, 0, 0.3); |
|
||||
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; |
|
||||
text-align: left; |
|
||||
white-space: pre; |
|
||||
word-spacing: normal; |
|
||||
word-break: normal; |
|
||||
word-wrap: normal; |
|
||||
line-height: 1.5; |
|
||||
-moz-tab-size: 4; |
|
||||
tab-size: 4; |
|
||||
-webkit-hyphens: none; |
|
||||
-ms-hyphens: none; |
|
||||
hyphens: none; |
|
||||
} |
|
||||
/* Code blocks */ |
|
||||
pre[class*="language-"] { |
|
||||
padding: 1em; |
|
||||
margin: 0.5em 0; |
|
||||
overflow: auto; |
|
||||
border-radius: 0.3em; |
|
||||
} |
|
||||
:not(pre) > code[class*="language-"], |
|
||||
pre[class*="language-"] { |
|
||||
background: #282a36; |
|
||||
} |
|
||||
/* Inline code */ |
|
||||
:not(pre) > code[class*="language-"] { |
|
||||
padding: 0.1em; |
|
||||
border-radius: 0.3em; |
|
||||
white-space: normal; |
|
||||
} |
|
||||
.token.comment, |
|
||||
.token.prolog, |
|
||||
.token.doctype, |
|
||||
.token.cdata { |
|
||||
color: #6272a4; |
|
||||
} |
|
||||
.token.punctuation { |
|
||||
color: #f8f8f2; |
|
||||
} |
|
||||
.namespace { |
|
||||
opacity: 0.7; |
|
||||
} |
|
||||
.token.property, |
|
||||
.token.tag, |
|
||||
.token.constant, |
|
||||
.token.symbol, |
|
||||
.token.deleted { |
|
||||
color: #ff79c6; |
|
||||
} |
|
||||
.token.boolean, |
|
||||
.token.number { |
|
||||
color: #bd93f9; |
|
||||
} |
|
||||
.token.selector, |
|
||||
.token.attr-name, |
|
||||
.token.string, |
|
||||
.token.char, |
|
||||
.token.builtin, |
|
||||
.token.inserted { |
|
||||
color: #50fa7b; |
|
||||
} |
|
||||
.token.operator, |
|
||||
.token.entity, |
|
||||
.token.url, |
|
||||
.language-css .token.string, |
|
||||
.style .token.string, |
|
||||
.token.variable { |
|
||||
color: #f8f8f2; |
|
||||
} |
|
||||
.token.atrule, |
|
||||
.token.attr-value, |
|
||||
.token.function, |
|
||||
.token.class-name { |
|
||||
color: #f1fa8c; |
|
||||
} |
|
||||
.token.keyword { |
|
||||
color: #8be9fd; |
|
||||
} |
|
||||
.token.regex, |
|
||||
.token.important { |
|
||||
color: #ffb86c; |
|
||||
} |
|
||||
.token.important, |
|
||||
.token.bold { |
|
||||
font-weight: bold; |
|
||||
} |
|
||||
.token.italic { |
|
||||
font-style: italic; |
|
||||
} |
|
||||
.token.entity { |
|
||||
cursor: help; |
|
||||
} |
|
||||
/* stylelint-enable */ |
|
||||
.mce-content-body { |
|
||||
overflow-wrap: break-word; |
|
||||
word-wrap: break-word; |
|
||||
} |
|
||||
.mce-content-body .mce-visual-caret { |
|
||||
background-color: black; |
|
||||
background-color: currentColor; |
|
||||
position: absolute; |
|
||||
} |
|
||||
.mce-content-body .mce-visual-caret-hidden { |
|
||||
display: none; |
|
||||
} |
|
||||
.mce-content-body *[data-mce-caret] { |
|
||||
left: -1000px; |
|
||||
margin: 0; |
|
||||
padding: 0; |
|
||||
position: absolute; |
|
||||
right: auto; |
|
||||
top: 0; |
|
||||
} |
|
||||
.mce-content-body .mce-offscreen-selection { |
|
||||
left: -2000000px; |
|
||||
max-width: 1000000px; |
|
||||
position: absolute; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=false] { |
|
||||
cursor: default; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=true] { |
|
||||
cursor: text; |
|
||||
} |
|
||||
.tox-cursor-format-painter { |
|
||||
cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default; |
|
||||
} |
|
||||
.mce-content-body figure.align-left { |
|
||||
float: left; |
|
||||
} |
|
||||
.mce-content-body figure.align-right { |
|
||||
float: right; |
|
||||
} |
|
||||
.mce-content-body figure.image.align-center { |
|
||||
display: table; |
|
||||
margin-left: auto; |
|
||||
margin-right: auto; |
|
||||
} |
|
||||
.mce-preview-object { |
|
||||
border: 1px solid gray; |
|
||||
display: inline-block; |
|
||||
line-height: 0; |
|
||||
margin: 0 2px 0 2px; |
|
||||
position: relative; |
|
||||
} |
|
||||
.mce-preview-object .mce-shim { |
|
||||
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); |
|
||||
height: 100%; |
|
||||
left: 0; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.mce-preview-object[data-mce-selected="2"] .mce-shim { |
|
||||
display: none; |
|
||||
} |
|
||||
.mce-object { |
|
||||
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; |
|
||||
border: 1px dashed #aaa; |
|
||||
} |
|
||||
.mce-pagebreak { |
|
||||
border: 1px dashed #aaa; |
|
||||
cursor: default; |
|
||||
display: block; |
|
||||
height: 5px; |
|
||||
margin-top: 15px; |
|
||||
page-break-before: always; |
|
||||
width: 100%; |
|
||||
} |
|
||||
@media print { |
|
||||
.mce-pagebreak { |
|
||||
border: 0; |
|
||||
} |
|
||||
} |
|
||||
.tiny-pageembed .mce-shim { |
|
||||
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); |
|
||||
height: 100%; |
|
||||
left: 0; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tiny-pageembed[data-mce-selected="2"] .mce-shim { |
|
||||
display: none; |
|
||||
} |
|
||||
.tiny-pageembed { |
|
||||
display: inline-block; |
|
||||
position: relative; |
|
||||
} |
|
||||
.tiny-pageembed--21by9, |
|
||||
.tiny-pageembed--16by9, |
|
||||
.tiny-pageembed--4by3, |
|
||||
.tiny-pageembed--1by1 { |
|
||||
display: block; |
|
||||
overflow: hidden; |
|
||||
padding: 0; |
|
||||
position: relative; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tiny-pageembed--21by9 { |
|
||||
padding-top: 42.857143%; |
|
||||
} |
|
||||
.tiny-pageembed--16by9 { |
|
||||
padding-top: 56.25%; |
|
||||
} |
|
||||
.tiny-pageembed--4by3 { |
|
||||
padding-top: 75%; |
|
||||
} |
|
||||
.tiny-pageembed--1by1 { |
|
||||
padding-top: 100%; |
|
||||
} |
|
||||
.tiny-pageembed--21by9 iframe, |
|
||||
.tiny-pageembed--16by9 iframe, |
|
||||
.tiny-pageembed--4by3 iframe, |
|
||||
.tiny-pageembed--1by1 iframe { |
|
||||
border: 0; |
|
||||
height: 100%; |
|
||||
left: 0; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.mce-content-body[data-mce-placeholder] { |
|
||||
position: relative; |
|
||||
} |
|
||||
.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before { |
|
||||
color: rgba(34, 47, 62, 0.7); |
|
||||
content: attr(data-mce-placeholder); |
|
||||
position: absolute; |
|
||||
} |
|
||||
.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before { |
|
||||
left: 1px; |
|
||||
} |
|
||||
.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before { |
|
||||
right: 1px; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle { |
|
||||
background-color: #4099ff; |
|
||||
border-color: #4099ff; |
|
||||
border-style: solid; |
|
||||
border-width: 1px; |
|
||||
box-sizing: border-box; |
|
||||
height: 10px; |
|
||||
position: absolute; |
|
||||
width: 10px; |
|
||||
z-index: 10000; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:hover { |
|
||||
background-color: #4099ff; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(1) { |
|
||||
cursor: nwse-resize; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(2) { |
|
||||
cursor: nesw-resize; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(3) { |
|
||||
cursor: nwse-resize; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(4) { |
|
||||
cursor: nesw-resize; |
|
||||
} |
|
||||
.mce-content-body .mce-clonedresizable { |
|
||||
opacity: 0.5; |
|
||||
outline: 1px dashed black; |
|
||||
position: absolute; |
|
||||
z-index: 10000; |
|
||||
} |
|
||||
.mce-content-body .mce-resize-helper { |
|
||||
background: #555; |
|
||||
background: rgba(0, 0, 0, 0.75); |
|
||||
border: 1px; |
|
||||
border-radius: 3px; |
|
||||
color: white; |
|
||||
display: none; |
|
||||
font-family: sans-serif; |
|
||||
font-size: 12px; |
|
||||
line-height: 14px; |
|
||||
margin: 5px 10px; |
|
||||
padding: 5px; |
|
||||
position: absolute; |
|
||||
white-space: nowrap; |
|
||||
z-index: 10001; |
|
||||
} |
|
||||
.tox-rtc-user-selection { |
|
||||
position: relative; |
|
||||
} |
|
||||
.tox-rtc-user-cursor { |
|
||||
bottom: 0; |
|
||||
cursor: default; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
width: 2px; |
|
||||
} |
|
||||
.tox-rtc-user-cursor::before { |
|
||||
background-color: inherit; |
|
||||
border-radius: 50%; |
|
||||
content: ''; |
|
||||
display: block; |
|
||||
height: 8px; |
|
||||
position: absolute; |
|
||||
right: -3px; |
|
||||
top: -3px; |
|
||||
width: 8px; |
|
||||
} |
|
||||
.tox-rtc-user-cursor:hover::after { |
|
||||
background-color: inherit; |
|
||||
border-radius: 100px; |
|
||||
box-sizing: border-box; |
|
||||
color: #fff; |
|
||||
content: attr(data-user); |
|
||||
display: block; |
|
||||
font-size: 12px; |
|
||||
font-weight: bold; |
|
||||
left: -5px; |
|
||||
min-height: 8px; |
|
||||
min-width: 8px; |
|
||||
padding: 0 12px; |
|
||||
position: absolute; |
|
||||
top: -11px; |
|
||||
white-space: nowrap; |
|
||||
z-index: 1000; |
|
||||
} |
|
||||
.tox-rtc-user-selection--1 .tox-rtc-user-cursor { |
|
||||
background-color: #2dc26b; |
|
||||
} |
|
||||
.tox-rtc-user-selection--2 .tox-rtc-user-cursor { |
|
||||
background-color: #e03e2d; |
|
||||
} |
|
||||
.tox-rtc-user-selection--3 .tox-rtc-user-cursor { |
|
||||
background-color: #f1c40f; |
|
||||
} |
|
||||
.tox-rtc-user-selection--4 .tox-rtc-user-cursor { |
|
||||
background-color: #3598db; |
|
||||
} |
|
||||
.tox-rtc-user-selection--5 .tox-rtc-user-cursor { |
|
||||
background-color: #b96ad9; |
|
||||
} |
|
||||
.tox-rtc-user-selection--6 .tox-rtc-user-cursor { |
|
||||
background-color: #e67e23; |
|
||||
} |
|
||||
.tox-rtc-user-selection--7 .tox-rtc-user-cursor { |
|
||||
background-color: #aaa69d; |
|
||||
} |
|
||||
.tox-rtc-user-selection--8 .tox-rtc-user-cursor { |
|
||||
background-color: #f368e0; |
|
||||
} |
|
||||
.tox-rtc-remote-image { |
|
||||
background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center; |
|
||||
border: 1px solid #ccc; |
|
||||
min-height: 240px; |
|
||||
min-width: 320px; |
|
||||
} |
|
||||
.mce-match-marker { |
|
||||
background: #aaa; |
|
||||
color: #fff; |
|
||||
} |
|
||||
.mce-match-marker-selected { |
|
||||
background: #39f; |
|
||||
color: #fff; |
|
||||
} |
|
||||
.mce-match-marker-selected::-moz-selection { |
|
||||
background: #39f; |
|
||||
color: #fff; |
|
||||
} |
|
||||
.mce-match-marker-selected::selection { |
|
||||
background: #39f; |
|
||||
color: #fff; |
|
||||
} |
|
||||
.mce-content-body img[data-mce-selected], |
|
||||
.mce-content-body table[data-mce-selected] { |
|
||||
outline: 3px solid #4099ff; |
|
||||
} |
|
||||
.mce-content-body hr[data-mce-selected] { |
|
||||
outline: 3px solid #4099ff; |
|
||||
outline-offset: 1px; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus { |
|
||||
outline: 3px solid #4099ff; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover { |
|
||||
outline: 3px solid #4099ff; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=false][data-mce-selected] { |
|
||||
cursor: not-allowed; |
|
||||
outline: 3px solid #4099ff; |
|
||||
} |
|
||||
.mce-content-body.mce-content-readonly *[contentEditable=true]:focus, |
|
||||
.mce-content-body.mce-content-readonly *[contentEditable=true]:hover { |
|
||||
outline: none; |
|
||||
} |
|
||||
.mce-content-body *[data-mce-selected="inline-boundary"] { |
|
||||
background-color: #4099ff; |
|
||||
} |
|
||||
.mce-content-body .mce-edit-focus { |
|
||||
outline: 3px solid #4099ff; |
|
||||
} |
|
||||
.mce-content-body td[data-mce-selected], |
|
||||
.mce-content-body th[data-mce-selected] { |
|
||||
background-color: #b4d7ff !important; |
|
||||
} |
|
||||
.mce-content-body td[data-mce-selected]::-moz-selection, |
|
||||
.mce-content-body th[data-mce-selected]::-moz-selection { |
|
||||
background: none; |
|
||||
} |
|
||||
.mce-content-body td[data-mce-selected]::selection, |
|
||||
.mce-content-body th[data-mce-selected]::selection { |
|
||||
background: none; |
|
||||
} |
|
||||
.mce-content-body td[data-mce-selected] *, |
|
||||
.mce-content-body th[data-mce-selected] * { |
|
||||
-webkit-touch-callout: none; |
|
||||
-webkit-user-select: none; |
|
||||
-moz-user-select: none; |
|
||||
-ms-user-select: none; |
|
||||
user-select: none; |
|
||||
} |
|
||||
.mce-content-body img::-moz-selection { |
|
||||
background: none; |
|
||||
} |
|
||||
.mce-content-body img::selection { |
|
||||
background: none; |
|
||||
} |
|
||||
.ephox-snooker-resizer-bar { |
|
||||
background-color: #4099ff; |
|
||||
opacity: 0; |
|
||||
-webkit-user-select: none; |
|
||||
-moz-user-select: none; |
|
||||
-ms-user-select: none; |
|
||||
user-select: none; |
|
||||
} |
|
||||
.ephox-snooker-resizer-cols { |
|
||||
cursor: col-resize; |
|
||||
} |
|
||||
.ephox-snooker-resizer-rows { |
|
||||
cursor: row-resize; |
|
||||
} |
|
||||
.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging { |
|
||||
opacity: 1; |
|
||||
} |
|
||||
.mce-spellchecker-word { |
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); |
|
||||
background-position: 0 calc(100% + 1px); |
|
||||
background-repeat: repeat-x; |
|
||||
background-size: auto 6px; |
|
||||
cursor: default; |
|
||||
height: 2rem; |
|
||||
} |
|
||||
.mce-spellchecker-grammar { |
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); |
|
||||
background-position: 0 calc(100% + 1px); |
|
||||
background-repeat: repeat-x; |
|
||||
background-size: auto 6px; |
|
||||
cursor: default; |
|
||||
} |
|
||||
.mce-toc { |
|
||||
border: 1px solid gray; |
|
||||
} |
|
||||
.mce-toc h2 { |
|
||||
margin: 4px; |
|
||||
} |
|
||||
.mce-toc li { |
|
||||
list-style-type: none; |
|
||||
} |
|
||||
.mce-item-table, |
|
||||
.mce-item-table td, |
|
||||
.mce-item-table th, |
|
||||
.mce-item-table caption { |
|
||||
border: 1px dashed #bbb; |
|
||||
} |
|
||||
.mce-visualblocks p, |
|
||||
.mce-visualblocks h1, |
|
||||
.mce-visualblocks h2, |
|
||||
.mce-visualblocks h3, |
|
||||
.mce-visualblocks h4, |
|
||||
.mce-visualblocks h5, |
|
||||
.mce-visualblocks h6, |
|
||||
.mce-visualblocks div:not([data-mce-bogus]), |
|
||||
.mce-visualblocks section, |
|
||||
.mce-visualblocks article, |
|
||||
.mce-visualblocks blockquote, |
|
||||
.mce-visualblocks address, |
|
||||
.mce-visualblocks pre, |
|
||||
.mce-visualblocks figure, |
|
||||
.mce-visualblocks figcaption, |
|
||||
.mce-visualblocks hgroup, |
|
||||
.mce-visualblocks aside, |
|
||||
.mce-visualblocks ul, |
|
||||
.mce-visualblocks ol, |
|
||||
.mce-visualblocks dl { |
|
||||
background-repeat: no-repeat; |
|
||||
border: 1px dashed #bbb; |
|
||||
margin-left: 3px; |
|
||||
padding-top: 10px; |
|
||||
} |
|
||||
.mce-visualblocks p { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); |
|
||||
} |
|
||||
.mce-visualblocks h1 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); |
|
||||
} |
|
||||
.mce-visualblocks h2 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks h3 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); |
|
||||
} |
|
||||
.mce-visualblocks h4 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks h5 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks h6 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks div:not([data-mce-bogus]) { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); |
|
||||
} |
|
||||
.mce-visualblocks section { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); |
|
||||
} |
|
||||
.mce-visualblocks article { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); |
|
||||
} |
|
||||
.mce-visualblocks blockquote { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); |
|
||||
} |
|
||||
.mce-visualblocks address { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); |
|
||||
} |
|
||||
.mce-visualblocks pre { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks figure { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); |
|
||||
} |
|
||||
.mce-visualblocks figcaption { |
|
||||
border: 1px dashed #bbb; |
|
||||
} |
|
||||
.mce-visualblocks hgroup { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); |
|
||||
} |
|
||||
.mce-visualblocks aside { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); |
|
||||
} |
|
||||
.mce-visualblocks ul { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks ol { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks dl { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); |
|
||||
} |
|
||||
.mce-visualblocks:not([dir=rtl]) p, |
|
||||
.mce-visualblocks:not([dir=rtl]) h1, |
|
||||
.mce-visualblocks:not([dir=rtl]) h2, |
|
||||
.mce-visualblocks:not([dir=rtl]) h3, |
|
||||
.mce-visualblocks:not([dir=rtl]) h4, |
|
||||
.mce-visualblocks:not([dir=rtl]) h5, |
|
||||
.mce-visualblocks:not([dir=rtl]) h6, |
|
||||
.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]), |
|
||||
.mce-visualblocks:not([dir=rtl]) section, |
|
||||
.mce-visualblocks:not([dir=rtl]) article, |
|
||||
.mce-visualblocks:not([dir=rtl]) blockquote, |
|
||||
.mce-visualblocks:not([dir=rtl]) address, |
|
||||
.mce-visualblocks:not([dir=rtl]) pre, |
|
||||
.mce-visualblocks:not([dir=rtl]) figure, |
|
||||
.mce-visualblocks:not([dir=rtl]) figcaption, |
|
||||
.mce-visualblocks:not([dir=rtl]) hgroup, |
|
||||
.mce-visualblocks:not([dir=rtl]) aside, |
|
||||
.mce-visualblocks:not([dir=rtl]) ul, |
|
||||
.mce-visualblocks:not([dir=rtl]) ol, |
|
||||
.mce-visualblocks:not([dir=rtl]) dl { |
|
||||
margin-left: 3px; |
|
||||
} |
|
||||
.mce-visualblocks[dir=rtl] p, |
|
||||
.mce-visualblocks[dir=rtl] h1, |
|
||||
.mce-visualblocks[dir=rtl] h2, |
|
||||
.mce-visualblocks[dir=rtl] h3, |
|
||||
.mce-visualblocks[dir=rtl] h4, |
|
||||
.mce-visualblocks[dir=rtl] h5, |
|
||||
.mce-visualblocks[dir=rtl] h6, |
|
||||
.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]), |
|
||||
.mce-visualblocks[dir=rtl] section, |
|
||||
.mce-visualblocks[dir=rtl] article, |
|
||||
.mce-visualblocks[dir=rtl] blockquote, |
|
||||
.mce-visualblocks[dir=rtl] address, |
|
||||
.mce-visualblocks[dir=rtl] pre, |
|
||||
.mce-visualblocks[dir=rtl] figure, |
|
||||
.mce-visualblocks[dir=rtl] figcaption, |
|
||||
.mce-visualblocks[dir=rtl] hgroup, |
|
||||
.mce-visualblocks[dir=rtl] aside, |
|
||||
.mce-visualblocks[dir=rtl] ul, |
|
||||
.mce-visualblocks[dir=rtl] ol, |
|
||||
.mce-visualblocks[dir=rtl] dl { |
|
||||
background-position-x: right; |
|
||||
margin-right: 3px; |
|
||||
} |
|
||||
.mce-nbsp, |
|
||||
.mce-shy { |
|
||||
background: #aaa; |
|
||||
} |
|
||||
.mce-shy::after { |
|
||||
content: '-'; |
|
||||
} |
|
||||
body { |
|
||||
font-family: sans-serif; |
|
||||
} |
|
||||
table { |
|
||||
border-collapse: collapse; |
|
||||
} |
|
||||
@ -1,689 +0,0 @@ |
|||||
/** |
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved. |
|
||||
* Licensed under the LGPL or a commercial license. |
|
||||
* For LGPL see License.txt in the project root for license information. |
|
||||
* For commercial licenses see https://www.tiny.cloud/ |
|
||||
*/ |
|
||||
.mce-content-body .mce-item-anchor { |
|
||||
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; |
|
||||
cursor: default; |
|
||||
display: inline-block; |
|
||||
height: 12px !important; |
|
||||
padding: 0 2px; |
|
||||
-webkit-user-modify: read-only; |
|
||||
-moz-user-modify: read-only; |
|
||||
-webkit-user-select: all; |
|
||||
-moz-user-select: all; |
|
||||
-ms-user-select: all; |
|
||||
user-select: all; |
|
||||
width: 8px !important; |
|
||||
} |
|
||||
.mce-content-body .mce-item-anchor[data-mce-selected] { |
|
||||
outline-offset: 1px; |
|
||||
} |
|
||||
.tox-comments-visible .tox-comment { |
|
||||
background-color: #fff0b7; |
|
||||
} |
|
||||
.tox-comments-visible .tox-comment--active { |
|
||||
background-color: #ffe168; |
|
||||
} |
|
||||
.tox-checklist > li:not(.tox-checklist--hidden) { |
|
||||
list-style: none; |
|
||||
margin: 0.25em 0; |
|
||||
} |
|
||||
.tox-checklist > li:not(.tox-checklist--hidden)::before { |
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); |
|
||||
background-size: 100%; |
|
||||
content: ''; |
|
||||
cursor: pointer; |
|
||||
height: 1em; |
|
||||
margin-left: -1.5em; |
|
||||
margin-top: 0.125em; |
|
||||
position: absolute; |
|
||||
width: 1em; |
|
||||
} |
|
||||
.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before { |
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); |
|
||||
} |
|
||||
[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before { |
|
||||
margin-left: 0; |
|
||||
margin-right: -1.5em; |
|
||||
} |
|
||||
/* stylelint-disable */ |
|
||||
/* http://prismjs.com/ */ |
|
||||
/** |
|
||||
* prism.js default theme for JavaScript, CSS and HTML |
|
||||
* Based on dabblet (http://dabblet.com) |
|
||||
* @author Lea Verou |
|
||||
*/ |
|
||||
code[class*="language-"], |
|
||||
pre[class*="language-"] { |
|
||||
color: black; |
|
||||
background: none; |
|
||||
text-shadow: 0 1px white; |
|
||||
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; |
|
||||
font-size: 1em; |
|
||||
text-align: left; |
|
||||
white-space: pre; |
|
||||
word-spacing: normal; |
|
||||
word-break: normal; |
|
||||
word-wrap: normal; |
|
||||
line-height: 1.5; |
|
||||
-moz-tab-size: 4; |
|
||||
tab-size: 4; |
|
||||
-webkit-hyphens: none; |
|
||||
-ms-hyphens: none; |
|
||||
hyphens: none; |
|
||||
} |
|
||||
pre[class*="language-"]::-moz-selection, |
|
||||
pre[class*="language-"] ::-moz-selection, |
|
||||
code[class*="language-"]::-moz-selection, |
|
||||
code[class*="language-"] ::-moz-selection { |
|
||||
text-shadow: none; |
|
||||
background: #b3d4fc; |
|
||||
} |
|
||||
pre[class*="language-"]::selection, |
|
||||
pre[class*="language-"] ::selection, |
|
||||
code[class*="language-"]::selection, |
|
||||
code[class*="language-"] ::selection { |
|
||||
text-shadow: none; |
|
||||
background: #b3d4fc; |
|
||||
} |
|
||||
@media print { |
|
||||
code[class*="language-"], |
|
||||
pre[class*="language-"] { |
|
||||
text-shadow: none; |
|
||||
} |
|
||||
} |
|
||||
/* Code blocks */ |
|
||||
pre[class*="language-"] { |
|
||||
padding: 1em; |
|
||||
margin: 0.5em 0; |
|
||||
overflow: auto; |
|
||||
} |
|
||||
:not(pre) > code[class*="language-"], |
|
||||
pre[class*="language-"] { |
|
||||
background: #f5f2f0; |
|
||||
} |
|
||||
/* Inline code */ |
|
||||
:not(pre) > code[class*="language-"] { |
|
||||
padding: 0.1em; |
|
||||
border-radius: 0.3em; |
|
||||
white-space: normal; |
|
||||
} |
|
||||
.token.comment, |
|
||||
.token.prolog, |
|
||||
.token.doctype, |
|
||||
.token.cdata { |
|
||||
color: slategray; |
|
||||
} |
|
||||
.token.punctuation { |
|
||||
color: #999; |
|
||||
} |
|
||||
.namespace { |
|
||||
opacity: 0.7; |
|
||||
} |
|
||||
.token.property, |
|
||||
.token.tag, |
|
||||
.token.boolean, |
|
||||
.token.number, |
|
||||
.token.constant, |
|
||||
.token.symbol, |
|
||||
.token.deleted { |
|
||||
color: #905; |
|
||||
} |
|
||||
.token.selector, |
|
||||
.token.attr-name, |
|
||||
.token.string, |
|
||||
.token.char, |
|
||||
.token.builtin, |
|
||||
.token.inserted { |
|
||||
color: #690; |
|
||||
} |
|
||||
.token.operator, |
|
||||
.token.entity, |
|
||||
.token.url, |
|
||||
.language-css .token.string, |
|
||||
.style .token.string { |
|
||||
color: #9a6e3a; |
|
||||
background: hsla(0, 0%, 100%, 0.5); |
|
||||
} |
|
||||
.token.atrule, |
|
||||
.token.attr-value, |
|
||||
.token.keyword { |
|
||||
color: #07a; |
|
||||
} |
|
||||
.token.function, |
|
||||
.token.class-name { |
|
||||
color: #DD4A68; |
|
||||
} |
|
||||
.token.regex, |
|
||||
.token.important, |
|
||||
.token.variable { |
|
||||
color: #e90; |
|
||||
} |
|
||||
.token.important, |
|
||||
.token.bold { |
|
||||
font-weight: bold; |
|
||||
} |
|
||||
.token.italic { |
|
||||
font-style: italic; |
|
||||
} |
|
||||
.token.entity { |
|
||||
cursor: help; |
|
||||
} |
|
||||
/* stylelint-enable */ |
|
||||
.mce-content-body { |
|
||||
overflow-wrap: break-word; |
|
||||
word-wrap: break-word; |
|
||||
} |
|
||||
.mce-content-body .mce-visual-caret { |
|
||||
background-color: black; |
|
||||
background-color: currentColor; |
|
||||
position: absolute; |
|
||||
} |
|
||||
.mce-content-body .mce-visual-caret-hidden { |
|
||||
display: none; |
|
||||
} |
|
||||
.mce-content-body *[data-mce-caret] { |
|
||||
left: -1000px; |
|
||||
margin: 0; |
|
||||
padding: 0; |
|
||||
position: absolute; |
|
||||
right: auto; |
|
||||
top: 0; |
|
||||
} |
|
||||
.mce-content-body .mce-offscreen-selection { |
|
||||
left: -2000000px; |
|
||||
max-width: 1000000px; |
|
||||
position: absolute; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=false] { |
|
||||
cursor: default; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=true] { |
|
||||
cursor: text; |
|
||||
} |
|
||||
.tox-cursor-format-painter { |
|
||||
cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default; |
|
||||
} |
|
||||
.mce-content-body figure.align-left { |
|
||||
float: left; |
|
||||
} |
|
||||
.mce-content-body figure.align-right { |
|
||||
float: right; |
|
||||
} |
|
||||
.mce-content-body figure.image.align-center { |
|
||||
display: table; |
|
||||
margin-left: auto; |
|
||||
margin-right: auto; |
|
||||
} |
|
||||
.mce-preview-object { |
|
||||
border: 1px solid gray; |
|
||||
display: inline-block; |
|
||||
line-height: 0; |
|
||||
margin: 0 2px 0 2px; |
|
||||
position: relative; |
|
||||
} |
|
||||
.mce-preview-object .mce-shim { |
|
||||
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); |
|
||||
height: 100%; |
|
||||
left: 0; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.mce-preview-object[data-mce-selected="2"] .mce-shim { |
|
||||
display: none; |
|
||||
} |
|
||||
.mce-object { |
|
||||
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; |
|
||||
border: 1px dashed #aaa; |
|
||||
} |
|
||||
.mce-pagebreak { |
|
||||
border: 1px dashed #aaa; |
|
||||
cursor: default; |
|
||||
display: block; |
|
||||
height: 5px; |
|
||||
margin-top: 15px; |
|
||||
page-break-before: always; |
|
||||
width: 100%; |
|
||||
} |
|
||||
@media print { |
|
||||
.mce-pagebreak { |
|
||||
border: 0; |
|
||||
} |
|
||||
} |
|
||||
.tiny-pageembed .mce-shim { |
|
||||
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); |
|
||||
height: 100%; |
|
||||
left: 0; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tiny-pageembed[data-mce-selected="2"] .mce-shim { |
|
||||
display: none; |
|
||||
} |
|
||||
.tiny-pageembed { |
|
||||
display: inline-block; |
|
||||
position: relative; |
|
||||
} |
|
||||
.tiny-pageembed--21by9, |
|
||||
.tiny-pageembed--16by9, |
|
||||
.tiny-pageembed--4by3, |
|
||||
.tiny-pageembed--1by1 { |
|
||||
display: block; |
|
||||
overflow: hidden; |
|
||||
padding: 0; |
|
||||
position: relative; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tiny-pageembed--21by9 { |
|
||||
padding-top: 42.857143%; |
|
||||
} |
|
||||
.tiny-pageembed--16by9 { |
|
||||
padding-top: 56.25%; |
|
||||
} |
|
||||
.tiny-pageembed--4by3 { |
|
||||
padding-top: 75%; |
|
||||
} |
|
||||
.tiny-pageembed--1by1 { |
|
||||
padding-top: 100%; |
|
||||
} |
|
||||
.tiny-pageembed--21by9 iframe, |
|
||||
.tiny-pageembed--16by9 iframe, |
|
||||
.tiny-pageembed--4by3 iframe, |
|
||||
.tiny-pageembed--1by1 iframe { |
|
||||
border: 0; |
|
||||
height: 100%; |
|
||||
left: 0; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.mce-content-body[data-mce-placeholder] { |
|
||||
position: relative; |
|
||||
} |
|
||||
.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before { |
|
||||
color: rgba(34, 47, 62, 0.7); |
|
||||
content: attr(data-mce-placeholder); |
|
||||
position: absolute; |
|
||||
} |
|
||||
.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before { |
|
||||
left: 1px; |
|
||||
} |
|
||||
.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before { |
|
||||
right: 1px; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle { |
|
||||
background-color: #4099ff; |
|
||||
border-color: #4099ff; |
|
||||
border-style: solid; |
|
||||
border-width: 1px; |
|
||||
box-sizing: border-box; |
|
||||
height: 10px; |
|
||||
position: absolute; |
|
||||
width: 10px; |
|
||||
z-index: 10000; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:hover { |
|
||||
background-color: #4099ff; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(1) { |
|
||||
cursor: nwse-resize; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(2) { |
|
||||
cursor: nesw-resize; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(3) { |
|
||||
cursor: nwse-resize; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(4) { |
|
||||
cursor: nesw-resize; |
|
||||
} |
|
||||
.mce-content-body .mce-clonedresizable { |
|
||||
opacity: 0.5; |
|
||||
outline: 1px dashed black; |
|
||||
position: absolute; |
|
||||
z-index: 10000; |
|
||||
} |
|
||||
.mce-content-body .mce-resize-helper { |
|
||||
background: #555; |
|
||||
background: rgba(0, 0, 0, 0.75); |
|
||||
border: 1px; |
|
||||
border-radius: 3px; |
|
||||
color: white; |
|
||||
display: none; |
|
||||
font-family: sans-serif; |
|
||||
font-size: 12px; |
|
||||
line-height: 14px; |
|
||||
margin: 5px 10px; |
|
||||
padding: 5px; |
|
||||
position: absolute; |
|
||||
white-space: nowrap; |
|
||||
z-index: 10001; |
|
||||
} |
|
||||
.tox-rtc-user-selection { |
|
||||
position: relative; |
|
||||
} |
|
||||
.tox-rtc-user-cursor { |
|
||||
bottom: 0; |
|
||||
cursor: default; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
width: 2px; |
|
||||
} |
|
||||
.tox-rtc-user-cursor::before { |
|
||||
background-color: inherit; |
|
||||
border-radius: 50%; |
|
||||
content: ''; |
|
||||
display: block; |
|
||||
height: 8px; |
|
||||
position: absolute; |
|
||||
right: -3px; |
|
||||
top: -3px; |
|
||||
width: 8px; |
|
||||
} |
|
||||
.tox-rtc-user-cursor:hover::after { |
|
||||
background-color: inherit; |
|
||||
border-radius: 100px; |
|
||||
box-sizing: border-box; |
|
||||
color: #fff; |
|
||||
content: attr(data-user); |
|
||||
display: block; |
|
||||
font-size: 12px; |
|
||||
font-weight: bold; |
|
||||
left: -5px; |
|
||||
min-height: 8px; |
|
||||
min-width: 8px; |
|
||||
padding: 0 12px; |
|
||||
position: absolute; |
|
||||
top: -11px; |
|
||||
white-space: nowrap; |
|
||||
z-index: 1000; |
|
||||
} |
|
||||
.tox-rtc-user-selection--1 .tox-rtc-user-cursor { |
|
||||
background-color: #2dc26b; |
|
||||
} |
|
||||
.tox-rtc-user-selection--2 .tox-rtc-user-cursor { |
|
||||
background-color: #e03e2d; |
|
||||
} |
|
||||
.tox-rtc-user-selection--3 .tox-rtc-user-cursor { |
|
||||
background-color: #f1c40f; |
|
||||
} |
|
||||
.tox-rtc-user-selection--4 .tox-rtc-user-cursor { |
|
||||
background-color: #3598db; |
|
||||
} |
|
||||
.tox-rtc-user-selection--5 .tox-rtc-user-cursor { |
|
||||
background-color: #b96ad9; |
|
||||
} |
|
||||
.tox-rtc-user-selection--6 .tox-rtc-user-cursor { |
|
||||
background-color: #e67e23; |
|
||||
} |
|
||||
.tox-rtc-user-selection--7 .tox-rtc-user-cursor { |
|
||||
background-color: #aaa69d; |
|
||||
} |
|
||||
.tox-rtc-user-selection--8 .tox-rtc-user-cursor { |
|
||||
background-color: #f368e0; |
|
||||
} |
|
||||
.tox-rtc-remote-image { |
|
||||
background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center; |
|
||||
border: 1px solid #ccc; |
|
||||
min-height: 240px; |
|
||||
min-width: 320px; |
|
||||
} |
|
||||
.mce-match-marker { |
|
||||
background: #aaa; |
|
||||
color: #fff; |
|
||||
} |
|
||||
.mce-match-marker-selected { |
|
||||
background: #39f; |
|
||||
color: #fff; |
|
||||
} |
|
||||
.mce-match-marker-selected::-moz-selection { |
|
||||
background: #39f; |
|
||||
color: #fff; |
|
||||
} |
|
||||
.mce-match-marker-selected::selection { |
|
||||
background: #39f; |
|
||||
color: #fff; |
|
||||
} |
|
||||
.mce-content-body img[data-mce-selected], |
|
||||
.mce-content-body table[data-mce-selected] { |
|
||||
outline: 3px solid #b4d7ff; |
|
||||
} |
|
||||
.mce-content-body hr[data-mce-selected] { |
|
||||
outline: 3px solid #b4d7ff; |
|
||||
outline-offset: 1px; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus { |
|
||||
outline: 3px solid #b4d7ff; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover { |
|
||||
outline: 3px solid #b4d7ff; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=false][data-mce-selected] { |
|
||||
cursor: not-allowed; |
|
||||
outline: 3px solid #b4d7ff; |
|
||||
} |
|
||||
.mce-content-body.mce-content-readonly *[contentEditable=true]:focus, |
|
||||
.mce-content-body.mce-content-readonly *[contentEditable=true]:hover { |
|
||||
outline: none; |
|
||||
} |
|
||||
.mce-content-body *[data-mce-selected="inline-boundary"] { |
|
||||
background-color: #b4d7ff; |
|
||||
} |
|
||||
.mce-content-body .mce-edit-focus { |
|
||||
outline: 3px solid #b4d7ff; |
|
||||
} |
|
||||
.mce-content-body td[data-mce-selected], |
|
||||
.mce-content-body th[data-mce-selected] { |
|
||||
background-color: #b4d7ff !important; |
|
||||
} |
|
||||
.mce-content-body td[data-mce-selected]::-moz-selection, |
|
||||
.mce-content-body th[data-mce-selected]::-moz-selection { |
|
||||
background: none; |
|
||||
} |
|
||||
.mce-content-body td[data-mce-selected]::selection, |
|
||||
.mce-content-body th[data-mce-selected]::selection { |
|
||||
background: none; |
|
||||
} |
|
||||
.mce-content-body td[data-mce-selected] *, |
|
||||
.mce-content-body th[data-mce-selected] * { |
|
||||
-webkit-touch-callout: none; |
|
||||
-webkit-user-select: none; |
|
||||
-moz-user-select: none; |
|
||||
-ms-user-select: none; |
|
||||
user-select: none; |
|
||||
} |
|
||||
.mce-content-body img::-moz-selection { |
|
||||
background: none; |
|
||||
} |
|
||||
.mce-content-body img::selection { |
|
||||
background: none; |
|
||||
} |
|
||||
.ephox-snooker-resizer-bar { |
|
||||
background-color: #b4d7ff; |
|
||||
opacity: 0; |
|
||||
-webkit-user-select: none; |
|
||||
-moz-user-select: none; |
|
||||
-ms-user-select: none; |
|
||||
user-select: none; |
|
||||
} |
|
||||
.ephox-snooker-resizer-cols { |
|
||||
cursor: col-resize; |
|
||||
} |
|
||||
.ephox-snooker-resizer-rows { |
|
||||
cursor: row-resize; |
|
||||
} |
|
||||
.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging { |
|
||||
opacity: 1; |
|
||||
} |
|
||||
.mce-spellchecker-word { |
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); |
|
||||
background-position: 0 calc(100% + 1px); |
|
||||
background-repeat: repeat-x; |
|
||||
background-size: auto 6px; |
|
||||
cursor: default; |
|
||||
height: 2rem; |
|
||||
} |
|
||||
.mce-spellchecker-grammar { |
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); |
|
||||
background-position: 0 calc(100% + 1px); |
|
||||
background-repeat: repeat-x; |
|
||||
background-size: auto 6px; |
|
||||
cursor: default; |
|
||||
} |
|
||||
.mce-toc { |
|
||||
border: 1px solid gray; |
|
||||
} |
|
||||
.mce-toc h2 { |
|
||||
margin: 4px; |
|
||||
} |
|
||||
.mce-toc li { |
|
||||
list-style-type: none; |
|
||||
} |
|
||||
.mce-item-table, |
|
||||
.mce-item-table td, |
|
||||
.mce-item-table th, |
|
||||
.mce-item-table caption { |
|
||||
border: 1px dashed #bbb; |
|
||||
} |
|
||||
.mce-visualblocks p, |
|
||||
.mce-visualblocks h1, |
|
||||
.mce-visualblocks h2, |
|
||||
.mce-visualblocks h3, |
|
||||
.mce-visualblocks h4, |
|
||||
.mce-visualblocks h5, |
|
||||
.mce-visualblocks h6, |
|
||||
.mce-visualblocks div:not([data-mce-bogus]), |
|
||||
.mce-visualblocks section, |
|
||||
.mce-visualblocks article, |
|
||||
.mce-visualblocks blockquote, |
|
||||
.mce-visualblocks address, |
|
||||
.mce-visualblocks pre, |
|
||||
.mce-visualblocks figure, |
|
||||
.mce-visualblocks figcaption, |
|
||||
.mce-visualblocks hgroup, |
|
||||
.mce-visualblocks aside, |
|
||||
.mce-visualblocks ul, |
|
||||
.mce-visualblocks ol, |
|
||||
.mce-visualblocks dl { |
|
||||
background-repeat: no-repeat; |
|
||||
border: 1px dashed #bbb; |
|
||||
margin-left: 3px; |
|
||||
padding-top: 10px; |
|
||||
} |
|
||||
.mce-visualblocks p { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); |
|
||||
} |
|
||||
.mce-visualblocks h1 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); |
|
||||
} |
|
||||
.mce-visualblocks h2 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks h3 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); |
|
||||
} |
|
||||
.mce-visualblocks h4 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks h5 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks h6 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks div:not([data-mce-bogus]) { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); |
|
||||
} |
|
||||
.mce-visualblocks section { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); |
|
||||
} |
|
||||
.mce-visualblocks article { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); |
|
||||
} |
|
||||
.mce-visualblocks blockquote { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); |
|
||||
} |
|
||||
.mce-visualblocks address { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); |
|
||||
} |
|
||||
.mce-visualblocks pre { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks figure { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); |
|
||||
} |
|
||||
.mce-visualblocks figcaption { |
|
||||
border: 1px dashed #bbb; |
|
||||
} |
|
||||
.mce-visualblocks hgroup { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); |
|
||||
} |
|
||||
.mce-visualblocks aside { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); |
|
||||
} |
|
||||
.mce-visualblocks ul { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks ol { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks dl { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); |
|
||||
} |
|
||||
.mce-visualblocks:not([dir=rtl]) p, |
|
||||
.mce-visualblocks:not([dir=rtl]) h1, |
|
||||
.mce-visualblocks:not([dir=rtl]) h2, |
|
||||
.mce-visualblocks:not([dir=rtl]) h3, |
|
||||
.mce-visualblocks:not([dir=rtl]) h4, |
|
||||
.mce-visualblocks:not([dir=rtl]) h5, |
|
||||
.mce-visualblocks:not([dir=rtl]) h6, |
|
||||
.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]), |
|
||||
.mce-visualblocks:not([dir=rtl]) section, |
|
||||
.mce-visualblocks:not([dir=rtl]) article, |
|
||||
.mce-visualblocks:not([dir=rtl]) blockquote, |
|
||||
.mce-visualblocks:not([dir=rtl]) address, |
|
||||
.mce-visualblocks:not([dir=rtl]) pre, |
|
||||
.mce-visualblocks:not([dir=rtl]) figure, |
|
||||
.mce-visualblocks:not([dir=rtl]) figcaption, |
|
||||
.mce-visualblocks:not([dir=rtl]) hgroup, |
|
||||
.mce-visualblocks:not([dir=rtl]) aside, |
|
||||
.mce-visualblocks:not([dir=rtl]) ul, |
|
||||
.mce-visualblocks:not([dir=rtl]) ol, |
|
||||
.mce-visualblocks:not([dir=rtl]) dl { |
|
||||
margin-left: 3px; |
|
||||
} |
|
||||
.mce-visualblocks[dir=rtl] p, |
|
||||
.mce-visualblocks[dir=rtl] h1, |
|
||||
.mce-visualblocks[dir=rtl] h2, |
|
||||
.mce-visualblocks[dir=rtl] h3, |
|
||||
.mce-visualblocks[dir=rtl] h4, |
|
||||
.mce-visualblocks[dir=rtl] h5, |
|
||||
.mce-visualblocks[dir=rtl] h6, |
|
||||
.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]), |
|
||||
.mce-visualblocks[dir=rtl] section, |
|
||||
.mce-visualblocks[dir=rtl] article, |
|
||||
.mce-visualblocks[dir=rtl] blockquote, |
|
||||
.mce-visualblocks[dir=rtl] address, |
|
||||
.mce-visualblocks[dir=rtl] pre, |
|
||||
.mce-visualblocks[dir=rtl] figure, |
|
||||
.mce-visualblocks[dir=rtl] figcaption, |
|
||||
.mce-visualblocks[dir=rtl] hgroup, |
|
||||
.mce-visualblocks[dir=rtl] aside, |
|
||||
.mce-visualblocks[dir=rtl] ul, |
|
||||
.mce-visualblocks[dir=rtl] ol, |
|
||||
.mce-visualblocks[dir=rtl] dl { |
|
||||
background-position-x: right; |
|
||||
margin-right: 3px; |
|
||||
} |
|
||||
.mce-nbsp, |
|
||||
.mce-shy { |
|
||||
background: #aaa; |
|
||||
} |
|
||||
.mce-shy::after { |
|
||||
content: '-'; |
|
||||
} |
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,29 +0,0 @@ |
|||||
/** |
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved. |
|
||||
* Licensed under the LGPL or a commercial license. |
|
||||
* For LGPL see License.txt in the project root for license information. |
|
||||
* For commercial licenses see https://www.tiny.cloud/ |
|
||||
*/ |
|
||||
.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection { |
|
||||
/* Note: this file is used inside the content, so isn't part of theming */ |
|
||||
background-color: green; |
|
||||
display: inline-block; |
|
||||
opacity: 0.5; |
|
||||
position: absolute; |
|
||||
} |
|
||||
body { |
|
||||
-webkit-text-size-adjust: none; |
|
||||
} |
|
||||
body img { |
|
||||
/* this is related to the content margin */ |
|
||||
max-width: 96vw; |
|
||||
} |
|
||||
body table img { |
|
||||
max-width: 95%; |
|
||||
} |
|
||||
body { |
|
||||
font-family: sans-serif; |
|
||||
} |
|
||||
table { |
|
||||
border-collapse: collapse; |
|
||||
} |
|
||||
@ -1,7 +0,0 @@ |
|||||
/** |
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved. |
|
||||
* Licensed under the LGPL or a commercial license. |
|
||||
* For LGPL see License.txt in the project root for license information. |
|
||||
* For commercial licenses see https://www.tiny.cloud/ |
|
||||
*/ |
|
||||
.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse} |
|
||||
Binary file not shown.
File diff suppressed because it is too large
File diff suppressed because one or more lines are too long
@ -1,673 +0,0 @@ |
|||||
/** |
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved. |
|
||||
* Licensed under the LGPL or a commercial license. |
|
||||
* For LGPL see License.txt in the project root for license information. |
|
||||
* For commercial licenses see https://www.tiny.cloud/ |
|
||||
*/ |
|
||||
/* RESET all the things! */ |
|
||||
.tinymce-mobile-outer-container { |
|
||||
all: initial; |
|
||||
display: block; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container * { |
|
||||
border: 0; |
|
||||
box-sizing: initial; |
|
||||
cursor: inherit; |
|
||||
float: none; |
|
||||
line-height: 1; |
|
||||
margin: 0; |
|
||||
outline: 0; |
|
||||
padding: 0; |
|
||||
-webkit-tap-highlight-color: transparent; |
|
||||
/* TBIO-3691, stop the gray flicker on touch. */ |
|
||||
text-shadow: none; |
|
||||
white-space: nowrap; |
|
||||
} |
|
||||
.tinymce-mobile-icon-arrow-back::before { |
|
||||
content: "\e5cd"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-image::before { |
|
||||
content: "\e412"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-cancel-circle::before { |
|
||||
content: "\e5c9"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-full-dot::before { |
|
||||
content: "\e061"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-align-center::before { |
|
||||
content: "\e234"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-align-left::before { |
|
||||
content: "\e236"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-align-right::before { |
|
||||
content: "\e237"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-bold::before { |
|
||||
content: "\e238"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-italic::before { |
|
||||
content: "\e23f"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-unordered-list::before { |
|
||||
content: "\e241"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-ordered-list::before { |
|
||||
content: "\e242"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-font-size::before { |
|
||||
content: "\e245"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-underline::before { |
|
||||
content: "\e249"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-link::before { |
|
||||
content: "\e157"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-unlink::before { |
|
||||
content: "\eca2"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-color::before { |
|
||||
content: "\e891"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-previous::before { |
|
||||
content: "\e314"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-next::before { |
|
||||
content: "\e315"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-large-font::before, |
|
||||
.tinymce-mobile-icon-style-formats::before { |
|
||||
content: "\e264"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-undo::before { |
|
||||
content: "\e166"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-redo::before { |
|
||||
content: "\e15a"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-removeformat::before { |
|
||||
content: "\e239"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-small-font::before { |
|
||||
content: "\e906"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-readonly-back::before, |
|
||||
.tinymce-mobile-format-matches::after { |
|
||||
content: "\e5ca"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-small-heading::before { |
|
||||
content: "small"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-large-heading::before { |
|
||||
content: "large"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-small-heading::before, |
|
||||
.tinymce-mobile-icon-large-heading::before { |
|
||||
font-family: sans-serif; |
|
||||
font-size: 80%; |
|
||||
} |
|
||||
.tinymce-mobile-mask-edit-icon::before { |
|
||||
content: "\e254"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-back::before { |
|
||||
content: "\e5c4"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-heading::before { |
|
||||
/* TODO: Translate */ |
|
||||
content: "Headings"; |
|
||||
font-family: sans-serif; |
|
||||
font-size: 80%; |
|
||||
font-weight: bold; |
|
||||
} |
|
||||
.tinymce-mobile-icon-h1::before { |
|
||||
content: "H1"; |
|
||||
font-weight: bold; |
|
||||
} |
|
||||
.tinymce-mobile-icon-h2::before { |
|
||||
content: "H2"; |
|
||||
font-weight: bold; |
|
||||
} |
|
||||
.tinymce-mobile-icon-h3::before { |
|
||||
content: "H3"; |
|
||||
font-weight: bold; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
justify-content: center; |
|
||||
background: rgba(51, 51, 51, 0.5); |
|
||||
height: 100%; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container { |
|
||||
align-items: center; |
|
||||
border-radius: 50%; |
|
||||
display: flex; |
|
||||
flex-direction: column; |
|
||||
font-family: sans-serif; |
|
||||
font-size: 1em; |
|
||||
justify-content: space-between; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
justify-content: center; |
|
||||
border-radius: 50%; |
|
||||
height: 2.1em; |
|
||||
width: 2.1em; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
justify-content: center; |
|
||||
flex-direction: column; |
|
||||
font-size: 1em; |
|
||||
} |
|
||||
@media only screen and (min-device-width:700px) { |
|
||||
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section { |
|
||||
font-size: 1.2em; |
|
||||
} |
|
||||
} |
|
||||
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
justify-content: center; |
|
||||
border-radius: 50%; |
|
||||
height: 2.1em; |
|
||||
width: 2.1em; |
|
||||
background-color: white; |
|
||||
color: #207ab7; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before { |
|
||||
content: "\e900"; |
|
||||
font-family: 'tinymce-mobile', sans-serif; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon { |
|
||||
z-index: 2; |
|
||||
} |
|
||||
.tinymce-mobile-android-container.tinymce-mobile-android-maximized { |
|
||||
background: #ffffff; |
|
||||
border: none; |
|
||||
bottom: 0; |
|
||||
display: flex; |
|
||||
flex-direction: column; |
|
||||
left: 0; |
|
||||
position: fixed; |
|
||||
right: 0; |
|
||||
top: 0; |
|
||||
} |
|
||||
.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) { |
|
||||
position: relative; |
|
||||
} |
|
||||
.tinymce-mobile-android-container .tinymce-mobile-editor-socket { |
|
||||
display: flex; |
|
||||
flex-grow: 1; |
|
||||
} |
|
||||
.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe { |
|
||||
display: flex !important; |
|
||||
flex-grow: 1; |
|
||||
height: auto !important; |
|
||||
} |
|
||||
.tinymce-mobile-android-scroll-reload { |
|
||||
overflow: hidden; |
|
||||
} |
|
||||
:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar { |
|
||||
margin-top: 23px; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip { |
|
||||
background: #fff; |
|
||||
display: flex; |
|
||||
flex: 0 0 auto; |
|
||||
z-index: 1; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar { |
|
||||
align-items: center; |
|
||||
background-color: #fff; |
|
||||
border-bottom: 1px solid #cccccc; |
|
||||
display: flex; |
|
||||
flex: 1; |
|
||||
height: 2.5em; |
|
||||
width: 100%; |
|
||||
/* Make it no larger than the toolstrip, so that it needs to scroll */ |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
height: 100%; |
|
||||
flex-shrink: 1; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
height: 100%; |
|
||||
flex: 1; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container { |
|
||||
background: #f44336; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group { |
|
||||
flex-grow: 1; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item { |
|
||||
padding-left: 0.5em; |
|
||||
padding-right: 0.5em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
height: 80%; |
|
||||
margin-left: 2px; |
|
||||
margin-right: 2px; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected { |
|
||||
background: #c8cbcf; |
|
||||
color: #cccccc; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type, |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type { |
|
||||
background: #207ab7; |
|
||||
color: #eceff1; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar { |
|
||||
/* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */ |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
height: 100%; |
|
||||
flex: 1; |
|
||||
padding-bottom: 0.4em; |
|
||||
padding-top: 0.4em; |
|
||||
/* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */ |
|
||||
/* For widgets like the colour picker, use the whole height */ |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog { |
|
||||
display: flex; |
|
||||
min-height: 1.5em; |
|
||||
overflow: hidden; |
|
||||
padding-left: 0; |
|
||||
padding-right: 0; |
|
||||
position: relative; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain { |
|
||||
display: flex; |
|
||||
height: 100%; |
|
||||
transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen { |
|
||||
display: flex; |
|
||||
flex: 0 0 auto; |
|
||||
justify-content: space-between; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input { |
|
||||
font-family: Sans-serif; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container { |
|
||||
display: flex; |
|
||||
flex-grow: 1; |
|
||||
position: relative; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x { |
|
||||
-ms-grid-row-align: center; |
|
||||
align-self: center; |
|
||||
background: inherit; |
|
||||
border: none; |
|
||||
border-radius: 50%; |
|
||||
color: #888; |
|
||||
font-size: 0.6em; |
|
||||
font-weight: bold; |
|
||||
height: 100%; |
|
||||
padding-right: 2px; |
|
||||
position: absolute; |
|
||||
right: 0; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x { |
|
||||
display: none; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous, |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before, |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
font-weight: bold; |
|
||||
height: 100%; |
|
||||
padding-left: 0.5em; |
|
||||
padding-right: 0.5em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before, |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before { |
|
||||
visibility: hidden; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item { |
|
||||
color: #cccccc; |
|
||||
font-size: 10px; |
|
||||
line-height: 10px; |
|
||||
margin: 0 2px; |
|
||||
padding-top: 3px; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active { |
|
||||
color: #c8cbcf; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before, |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before { |
|
||||
margin-left: 0.5em; |
|
||||
margin-right: 0.9em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before, |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before { |
|
||||
margin-left: 0.9em; |
|
||||
margin-right: 0.5em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider { |
|
||||
display: flex; |
|
||||
flex: 1; |
|
||||
margin-left: 0; |
|
||||
margin-right: 0; |
|
||||
padding: 0.28em 0; |
|
||||
position: relative; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
flex-grow: 1; |
|
||||
height: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line { |
|
||||
background: #cccccc; |
|
||||
display: flex; |
|
||||
flex: 1; |
|
||||
height: 0.2em; |
|
||||
margin-bottom: 0.3em; |
|
||||
margin-top: 0.3em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container { |
|
||||
padding-left: 2em; |
|
||||
padding-right: 2em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
flex-grow: 1; |
|
||||
height: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient { |
|
||||
background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%); |
|
||||
display: flex; |
|
||||
flex: 1; |
|
||||
height: 0.2em; |
|
||||
margin-bottom: 0.3em; |
|
||||
margin-top: 0.3em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black { |
|
||||
/* Not part of theming */ |
|
||||
background: black; |
|
||||
height: 0.2em; |
|
||||
margin-bottom: 0.3em; |
|
||||
margin-top: 0.3em; |
|
||||
width: 1.2em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white { |
|
||||
/* Not part of theming */ |
|
||||
background: white; |
|
||||
height: 0.2em; |
|
||||
margin-bottom: 0.3em; |
|
||||
margin-top: 0.3em; |
|
||||
width: 1.2em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb { |
|
||||
/* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave |
|
||||
* out these values, then it shows the thumb at the top of the spectrum. This is probably because it is |
|
||||
* absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without |
|
||||
* this approach. |
|
||||
*/ |
|
||||
align-items: center; |
|
||||
background-clip: padding-box; |
|
||||
background-color: #455a64; |
|
||||
border: 0.5em solid rgba(136, 136, 136, 0); |
|
||||
border-radius: 3em; |
|
||||
bottom: 0; |
|
||||
color: #fff; |
|
||||
display: flex; |
|
||||
height: 0.5em; |
|
||||
justify-content: center; |
|
||||
left: -10px; |
|
||||
margin: auto; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1); |
|
||||
width: 0.5em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active { |
|
||||
border: 0.5em solid rgba(136, 136, 136, 0.39); |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper, |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
height: 100%; |
|
||||
flex: 1; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper { |
|
||||
flex-direction: column; |
|
||||
justify-content: center; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) { |
|
||||
height: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container { |
|
||||
display: flex; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input { |
|
||||
background: #ffffff; |
|
||||
border: none; |
|
||||
border-radius: 0; |
|
||||
color: #455a64; |
|
||||
flex-grow: 1; |
|
||||
font-size: 0.85em; |
|
||||
padding-bottom: 0.1em; |
|
||||
padding-left: 5px; |
|
||||
padding-top: 0.1em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder { |
|
||||
/* WebKit, Blink, Edge */ |
|
||||
color: #888; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder { |
|
||||
/* WebKit, Blink, Edge */ |
|
||||
color: #888; |
|
||||
} |
|
||||
/* dropup */ |
|
||||
.tinymce-mobile-dropup { |
|
||||
background: white; |
|
||||
display: flex; |
|
||||
overflow: hidden; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking { |
|
||||
transition: height 0.3s ease-out; |
|
||||
} |
|
||||
.tinymce-mobile-dropup.tinymce-mobile-dropup-growing { |
|
||||
transition: height 0.3s ease-in; |
|
||||
} |
|
||||
.tinymce-mobile-dropup.tinymce-mobile-dropup-closed { |
|
||||
flex-grow: 0; |
|
||||
} |
|
||||
.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) { |
|
||||
flex-grow: 1; |
|
||||
} |
|
||||
/* TODO min-height for device size and orientation */ |
|
||||
.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { |
|
||||
min-height: 200px; |
|
||||
} |
|
||||
@media only screen and (orientation: landscape) { |
|
||||
.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { |
|
||||
min-height: 200px; |
|
||||
} |
|
||||
} |
|
||||
@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) { |
|
||||
.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { |
|
||||
min-height: 150px; |
|
||||
} |
|
||||
} |
|
||||
/* styles menu */ |
|
||||
.tinymce-mobile-styles-menu { |
|
||||
font-family: sans-serif; |
|
||||
outline: 4px solid black; |
|
||||
overflow: hidden; |
|
||||
position: relative; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu [role="menu"] { |
|
||||
display: flex; |
|
||||
flex-direction: column; |
|
||||
height: 100%; |
|
||||
position: absolute; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu [role="menu"].transitioning { |
|
||||
transition: transform 0.5s ease-in-out; |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu .tinymce-mobile-styles-item { |
|
||||
border-bottom: 1px solid #ddd; |
|
||||
color: #455a64; |
|
||||
cursor: pointer; |
|
||||
display: flex; |
|
||||
padding: 1em 1em; |
|
||||
position: relative; |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before { |
|
||||
color: #455a64; |
|
||||
content: "\e314"; |
|
||||
font-family: 'tinymce-mobile', sans-serif; |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after { |
|
||||
color: #455a64; |
|
||||
content: "\e315"; |
|
||||
font-family: 'tinymce-mobile', sans-serif; |
|
||||
padding-left: 1em; |
|
||||
padding-right: 1em; |
|
||||
position: absolute; |
|
||||
right: 0; |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after { |
|
||||
font-family: 'tinymce-mobile', sans-serif; |
|
||||
padding-left: 1em; |
|
||||
padding-right: 1em; |
|
||||
position: absolute; |
|
||||
right: 0; |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator, |
|
||||
.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser { |
|
||||
align-items: center; |
|
||||
background: #fff; |
|
||||
border-top: #455a64; |
|
||||
color: #455a64; |
|
||||
display: flex; |
|
||||
min-height: 2.5em; |
|
||||
padding-left: 1em; |
|
||||
padding-right: 1em; |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state], |
|
||||
.tinymce-mobile-styles-menu [data-transitioning-state="before"] { |
|
||||
transform: translate(-100%); |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state], |
|
||||
.tinymce-mobile-styles-menu [data-transitioning-state="current"] { |
|
||||
transform: translate(0%); |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state], |
|
||||
.tinymce-mobile-styles-menu [data-transitioning-state="after"] { |
|
||||
transform: translate(100%); |
|
||||
} |
|
||||
@font-face { |
|
||||
font-family: 'tinymce-mobile'; |
|
||||
font-style: normal; |
|
||||
font-weight: normal; |
|
||||
src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff'); |
|
||||
} |
|
||||
@media (min-device-width: 700px) { |
|
||||
.tinymce-mobile-outer-container, |
|
||||
.tinymce-mobile-outer-container input { |
|
||||
font-size: 25px; |
|
||||
} |
|
||||
} |
|
||||
@media (max-device-width: 700px) { |
|
||||
.tinymce-mobile-outer-container, |
|
||||
.tinymce-mobile-outer-container input { |
|
||||
font-size: 18px; |
|
||||
} |
|
||||
} |
|
||||
.tinymce-mobile-icon { |
|
||||
font-family: 'tinymce-mobile', sans-serif; |
|
||||
} |
|
||||
.mixin-flex-and-centre { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
justify-content: center; |
|
||||
} |
|
||||
.mixin-flex-bar { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
height: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe { |
|
||||
background-color: #fff; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { |
|
||||
/* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */ |
|
||||
background-color: #207ab7; |
|
||||
border-radius: 50%; |
|
||||
bottom: 1em; |
|
||||
color: white; |
|
||||
font-size: 1em; |
|
||||
height: 2.1em; |
|
||||
position: fixed; |
|
||||
right: 2em; |
|
||||
width: 2.1em; |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
justify-content: center; |
|
||||
} |
|
||||
@media only screen and (min-device-width:700px) { |
|
||||
.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { |
|
||||
font-size: 1.2em; |
|
||||
} |
|
||||
} |
|
||||
.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket { |
|
||||
height: 300px; |
|
||||
overflow: hidden; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe { |
|
||||
height: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip { |
|
||||
display: none; |
|
||||
} |
|
||||
/* |
|
||||
Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets |
|
||||
increased and the whole body becomes scrollable. It's important! |
|
||||
*/ |
|
||||
input[type="file"]::-webkit-file-upload-button { |
|
||||
display: none; |
|
||||
} |
|
||||
@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) { |
|
||||
.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { |
|
||||
bottom: 50%; |
|
||||
} |
|
||||
} |
|
||||
File diff suppressed because one or more lines are too long
@ -1,695 +0,0 @@ |
|||||
/** |
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved. |
|
||||
* Licensed under the LGPL or a commercial license. |
|
||||
* For LGPL see License.txt in the project root for license information. |
|
||||
* For commercial licenses see https://www.tiny.cloud/ |
|
||||
*/ |
|
||||
.mce-content-body .mce-item-anchor { |
|
||||
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; |
|
||||
cursor: default; |
|
||||
display: inline-block; |
|
||||
height: 12px !important; |
|
||||
padding: 0 2px; |
|
||||
-webkit-user-modify: read-only; |
|
||||
-moz-user-modify: read-only; |
|
||||
-webkit-user-select: all; |
|
||||
-moz-user-select: all; |
|
||||
-ms-user-select: all; |
|
||||
user-select: all; |
|
||||
width: 8px !important; |
|
||||
} |
|
||||
.mce-content-body .mce-item-anchor[data-mce-selected] { |
|
||||
outline-offset: 1px; |
|
||||
} |
|
||||
.tox-comments-visible .tox-comment { |
|
||||
background-color: #fff0b7; |
|
||||
} |
|
||||
.tox-comments-visible .tox-comment--active { |
|
||||
background-color: #ffe168; |
|
||||
} |
|
||||
.tox-checklist > li:not(.tox-checklist--hidden) { |
|
||||
list-style: none; |
|
||||
margin: 0.25em 0; |
|
||||
} |
|
||||
.tox-checklist > li:not(.tox-checklist--hidden)::before { |
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); |
|
||||
background-size: 100%; |
|
||||
content: ''; |
|
||||
cursor: pointer; |
|
||||
height: 1em; |
|
||||
margin-left: -1.5em; |
|
||||
margin-top: 0.125em; |
|
||||
position: absolute; |
|
||||
width: 1em; |
|
||||
} |
|
||||
.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before { |
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); |
|
||||
} |
|
||||
[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before { |
|
||||
margin-left: 0; |
|
||||
margin-right: -1.5em; |
|
||||
} |
|
||||
/* stylelint-disable */ |
|
||||
/* http://prismjs.com/ */ |
|
||||
/** |
|
||||
* prism.js default theme for JavaScript, CSS and HTML |
|
||||
* Based on dabblet (http://dabblet.com) |
|
||||
* @author Lea Verou |
|
||||
*/ |
|
||||
code[class*="language-"], |
|
||||
pre[class*="language-"] { |
|
||||
color: black; |
|
||||
background: none; |
|
||||
text-shadow: 0 1px white; |
|
||||
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; |
|
||||
font-size: 1em; |
|
||||
text-align: left; |
|
||||
white-space: pre; |
|
||||
word-spacing: normal; |
|
||||
word-break: normal; |
|
||||
word-wrap: normal; |
|
||||
line-height: 1.5; |
|
||||
-moz-tab-size: 4; |
|
||||
tab-size: 4; |
|
||||
-webkit-hyphens: none; |
|
||||
-ms-hyphens: none; |
|
||||
hyphens: none; |
|
||||
} |
|
||||
pre[class*="language-"]::-moz-selection, |
|
||||
pre[class*="language-"] ::-moz-selection, |
|
||||
code[class*="language-"]::-moz-selection, |
|
||||
code[class*="language-"] ::-moz-selection { |
|
||||
text-shadow: none; |
|
||||
background: #b3d4fc; |
|
||||
} |
|
||||
pre[class*="language-"]::selection, |
|
||||
pre[class*="language-"] ::selection, |
|
||||
code[class*="language-"]::selection, |
|
||||
code[class*="language-"] ::selection { |
|
||||
text-shadow: none; |
|
||||
background: #b3d4fc; |
|
||||
} |
|
||||
@media print { |
|
||||
code[class*="language-"], |
|
||||
pre[class*="language-"] { |
|
||||
text-shadow: none; |
|
||||
} |
|
||||
} |
|
||||
/* Code blocks */ |
|
||||
pre[class*="language-"] { |
|
||||
padding: 1em; |
|
||||
margin: 0.5em 0; |
|
||||
overflow: auto; |
|
||||
} |
|
||||
:not(pre) > code[class*="language-"], |
|
||||
pre[class*="language-"] { |
|
||||
background: #f5f2f0; |
|
||||
} |
|
||||
/* Inline code */ |
|
||||
:not(pre) > code[class*="language-"] { |
|
||||
padding: 0.1em; |
|
||||
border-radius: 0.3em; |
|
||||
white-space: normal; |
|
||||
} |
|
||||
.token.comment, |
|
||||
.token.prolog, |
|
||||
.token.doctype, |
|
||||
.token.cdata { |
|
||||
color: slategray; |
|
||||
} |
|
||||
.token.punctuation { |
|
||||
color: #999; |
|
||||
} |
|
||||
.namespace { |
|
||||
opacity: 0.7; |
|
||||
} |
|
||||
.token.property, |
|
||||
.token.tag, |
|
||||
.token.boolean, |
|
||||
.token.number, |
|
||||
.token.constant, |
|
||||
.token.symbol, |
|
||||
.token.deleted { |
|
||||
color: #905; |
|
||||
} |
|
||||
.token.selector, |
|
||||
.token.attr-name, |
|
||||
.token.string, |
|
||||
.token.char, |
|
||||
.token.builtin, |
|
||||
.token.inserted { |
|
||||
color: #690; |
|
||||
} |
|
||||
.token.operator, |
|
||||
.token.entity, |
|
||||
.token.url, |
|
||||
.language-css .token.string, |
|
||||
.style .token.string { |
|
||||
color: #9a6e3a; |
|
||||
background: hsla(0, 0%, 100%, 0.5); |
|
||||
} |
|
||||
.token.atrule, |
|
||||
.token.attr-value, |
|
||||
.token.keyword { |
|
||||
color: #07a; |
|
||||
} |
|
||||
.token.function, |
|
||||
.token.class-name { |
|
||||
color: #DD4A68; |
|
||||
} |
|
||||
.token.regex, |
|
||||
.token.important, |
|
||||
.token.variable { |
|
||||
color: #e90; |
|
||||
} |
|
||||
.token.important, |
|
||||
.token.bold { |
|
||||
font-weight: bold; |
|
||||
} |
|
||||
.token.italic { |
|
||||
font-style: italic; |
|
||||
} |
|
||||
.token.entity { |
|
||||
cursor: help; |
|
||||
} |
|
||||
/* stylelint-enable */ |
|
||||
.mce-content-body { |
|
||||
overflow-wrap: break-word; |
|
||||
word-wrap: break-word; |
|
||||
} |
|
||||
.mce-content-body .mce-visual-caret { |
|
||||
background-color: black; |
|
||||
background-color: currentColor; |
|
||||
position: absolute; |
|
||||
} |
|
||||
.mce-content-body .mce-visual-caret-hidden { |
|
||||
display: none; |
|
||||
} |
|
||||
.mce-content-body *[data-mce-caret] { |
|
||||
left: -1000px; |
|
||||
margin: 0; |
|
||||
padding: 0; |
|
||||
position: absolute; |
|
||||
right: auto; |
|
||||
top: 0; |
|
||||
} |
|
||||
.mce-content-body .mce-offscreen-selection { |
|
||||
left: -2000000px; |
|
||||
max-width: 1000000px; |
|
||||
position: absolute; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=false] { |
|
||||
cursor: default; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=true] { |
|
||||
cursor: text; |
|
||||
} |
|
||||
.tox-cursor-format-painter { |
|
||||
cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default; |
|
||||
} |
|
||||
.mce-content-body figure.align-left { |
|
||||
float: left; |
|
||||
} |
|
||||
.mce-content-body figure.align-right { |
|
||||
float: right; |
|
||||
} |
|
||||
.mce-content-body figure.image.align-center { |
|
||||
display: table; |
|
||||
margin-left: auto; |
|
||||
margin-right: auto; |
|
||||
} |
|
||||
.mce-preview-object { |
|
||||
border: 1px solid gray; |
|
||||
display: inline-block; |
|
||||
line-height: 0; |
|
||||
margin: 0 2px 0 2px; |
|
||||
position: relative; |
|
||||
} |
|
||||
.mce-preview-object .mce-shim { |
|
||||
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); |
|
||||
height: 100%; |
|
||||
left: 0; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.mce-preview-object[data-mce-selected="2"] .mce-shim { |
|
||||
display: none; |
|
||||
} |
|
||||
.mce-object { |
|
||||
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; |
|
||||
border: 1px dashed #aaa; |
|
||||
} |
|
||||
.mce-pagebreak { |
|
||||
border: 1px dashed #aaa; |
|
||||
cursor: default; |
|
||||
display: block; |
|
||||
height: 5px; |
|
||||
margin-top: 15px; |
|
||||
page-break-before: always; |
|
||||
width: 100%; |
|
||||
} |
|
||||
@media print { |
|
||||
.mce-pagebreak { |
|
||||
border: 0; |
|
||||
} |
|
||||
} |
|
||||
.tiny-pageembed .mce-shim { |
|
||||
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); |
|
||||
height: 100%; |
|
||||
left: 0; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tiny-pageembed[data-mce-selected="2"] .mce-shim { |
|
||||
display: none; |
|
||||
} |
|
||||
.tiny-pageembed { |
|
||||
display: inline-block; |
|
||||
position: relative; |
|
||||
} |
|
||||
.tiny-pageembed--21by9, |
|
||||
.tiny-pageembed--16by9, |
|
||||
.tiny-pageembed--4by3, |
|
||||
.tiny-pageembed--1by1 { |
|
||||
display: block; |
|
||||
overflow: hidden; |
|
||||
padding: 0; |
|
||||
position: relative; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tiny-pageembed--21by9 { |
|
||||
padding-top: 42.857143%; |
|
||||
} |
|
||||
.tiny-pageembed--16by9 { |
|
||||
padding-top: 56.25%; |
|
||||
} |
|
||||
.tiny-pageembed--4by3 { |
|
||||
padding-top: 75%; |
|
||||
} |
|
||||
.tiny-pageembed--1by1 { |
|
||||
padding-top: 100%; |
|
||||
} |
|
||||
.tiny-pageembed--21by9 iframe, |
|
||||
.tiny-pageembed--16by9 iframe, |
|
||||
.tiny-pageembed--4by3 iframe, |
|
||||
.tiny-pageembed--1by1 iframe { |
|
||||
border: 0; |
|
||||
height: 100%; |
|
||||
left: 0; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.mce-content-body[data-mce-placeholder] { |
|
||||
position: relative; |
|
||||
} |
|
||||
.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before { |
|
||||
color: rgba(34, 47, 62, 0.7); |
|
||||
content: attr(data-mce-placeholder); |
|
||||
position: absolute; |
|
||||
} |
|
||||
.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before { |
|
||||
left: 1px; |
|
||||
} |
|
||||
.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before { |
|
||||
right: 1px; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle { |
|
||||
background-color: #4099ff; |
|
||||
border-color: #4099ff; |
|
||||
border-style: solid; |
|
||||
border-width: 1px; |
|
||||
box-sizing: border-box; |
|
||||
height: 10px; |
|
||||
position: absolute; |
|
||||
width: 10px; |
|
||||
z-index: 10000; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:hover { |
|
||||
background-color: #4099ff; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(1) { |
|
||||
cursor: nwse-resize; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(2) { |
|
||||
cursor: nesw-resize; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(3) { |
|
||||
cursor: nwse-resize; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(4) { |
|
||||
cursor: nesw-resize; |
|
||||
} |
|
||||
.mce-content-body .mce-clonedresizable { |
|
||||
opacity: 0.5; |
|
||||
outline: 1px dashed black; |
|
||||
position: absolute; |
|
||||
z-index: 10000; |
|
||||
} |
|
||||
.mce-content-body .mce-resize-helper { |
|
||||
background: #555; |
|
||||
background: rgba(0, 0, 0, 0.75); |
|
||||
border: 1px; |
|
||||
border-radius: 3px; |
|
||||
color: white; |
|
||||
display: none; |
|
||||
font-family: sans-serif; |
|
||||
font-size: 12px; |
|
||||
line-height: 14px; |
|
||||
margin: 5px 10px; |
|
||||
padding: 5px; |
|
||||
position: absolute; |
|
||||
white-space: nowrap; |
|
||||
z-index: 10001; |
|
||||
} |
|
||||
.tox-rtc-user-selection { |
|
||||
position: relative; |
|
||||
} |
|
||||
.tox-rtc-user-cursor { |
|
||||
bottom: 0; |
|
||||
cursor: default; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
width: 2px; |
|
||||
} |
|
||||
.tox-rtc-user-cursor::before { |
|
||||
background-color: inherit; |
|
||||
border-radius: 50%; |
|
||||
content: ''; |
|
||||
display: block; |
|
||||
height: 8px; |
|
||||
position: absolute; |
|
||||
right: -3px; |
|
||||
top: -3px; |
|
||||
width: 8px; |
|
||||
} |
|
||||
.tox-rtc-user-cursor:hover::after { |
|
||||
background-color: inherit; |
|
||||
border-radius: 100px; |
|
||||
box-sizing: border-box; |
|
||||
color: #fff; |
|
||||
content: attr(data-user); |
|
||||
display: block; |
|
||||
font-size: 12px; |
|
||||
font-weight: bold; |
|
||||
left: -5px; |
|
||||
min-height: 8px; |
|
||||
min-width: 8px; |
|
||||
padding: 0 12px; |
|
||||
position: absolute; |
|
||||
top: -11px; |
|
||||
white-space: nowrap; |
|
||||
z-index: 1000; |
|
||||
} |
|
||||
.tox-rtc-user-selection--1 .tox-rtc-user-cursor { |
|
||||
background-color: #2dc26b; |
|
||||
} |
|
||||
.tox-rtc-user-selection--2 .tox-rtc-user-cursor { |
|
||||
background-color: #e03e2d; |
|
||||
} |
|
||||
.tox-rtc-user-selection--3 .tox-rtc-user-cursor { |
|
||||
background-color: #f1c40f; |
|
||||
} |
|
||||
.tox-rtc-user-selection--4 .tox-rtc-user-cursor { |
|
||||
background-color: #3598db; |
|
||||
} |
|
||||
.tox-rtc-user-selection--5 .tox-rtc-user-cursor { |
|
||||
background-color: #b96ad9; |
|
||||
} |
|
||||
.tox-rtc-user-selection--6 .tox-rtc-user-cursor { |
|
||||
background-color: #e67e23; |
|
||||
} |
|
||||
.tox-rtc-user-selection--7 .tox-rtc-user-cursor { |
|
||||
background-color: #aaa69d; |
|
||||
} |
|
||||
.tox-rtc-user-selection--8 .tox-rtc-user-cursor { |
|
||||
background-color: #f368e0; |
|
||||
} |
|
||||
.tox-rtc-remote-image { |
|
||||
background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center; |
|
||||
border: 1px solid #ccc; |
|
||||
min-height: 240px; |
|
||||
min-width: 320px; |
|
||||
} |
|
||||
.mce-match-marker { |
|
||||
background: #aaa; |
|
||||
color: #fff; |
|
||||
} |
|
||||
.mce-match-marker-selected { |
|
||||
background: #39f; |
|
||||
color: #fff; |
|
||||
} |
|
||||
.mce-match-marker-selected::-moz-selection { |
|
||||
background: #39f; |
|
||||
color: #fff; |
|
||||
} |
|
||||
.mce-match-marker-selected::selection { |
|
||||
background: #39f; |
|
||||
color: #fff; |
|
||||
} |
|
||||
.mce-content-body img[data-mce-selected], |
|
||||
.mce-content-body table[data-mce-selected] { |
|
||||
outline: 3px solid #b4d7ff; |
|
||||
} |
|
||||
.mce-content-body hr[data-mce-selected] { |
|
||||
outline: 3px solid #b4d7ff; |
|
||||
outline-offset: 1px; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus { |
|
||||
outline: 3px solid #b4d7ff; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover { |
|
||||
outline: 3px solid #b4d7ff; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=false][data-mce-selected] { |
|
||||
cursor: not-allowed; |
|
||||
outline: 3px solid #b4d7ff; |
|
||||
} |
|
||||
.mce-content-body.mce-content-readonly *[contentEditable=true]:focus, |
|
||||
.mce-content-body.mce-content-readonly *[contentEditable=true]:hover { |
|
||||
outline: none; |
|
||||
} |
|
||||
.mce-content-body *[data-mce-selected="inline-boundary"] { |
|
||||
background-color: #b4d7ff; |
|
||||
} |
|
||||
.mce-content-body .mce-edit-focus { |
|
||||
outline: 3px solid #b4d7ff; |
|
||||
} |
|
||||
.mce-content-body td[data-mce-selected], |
|
||||
.mce-content-body th[data-mce-selected] { |
|
||||
background-color: #b4d7ff !important; |
|
||||
} |
|
||||
.mce-content-body td[data-mce-selected]::-moz-selection, |
|
||||
.mce-content-body th[data-mce-selected]::-moz-selection { |
|
||||
background: none; |
|
||||
} |
|
||||
.mce-content-body td[data-mce-selected]::selection, |
|
||||
.mce-content-body th[data-mce-selected]::selection { |
|
||||
background: none; |
|
||||
} |
|
||||
.mce-content-body td[data-mce-selected] *, |
|
||||
.mce-content-body th[data-mce-selected] * { |
|
||||
-webkit-touch-callout: none; |
|
||||
-webkit-user-select: none; |
|
||||
-moz-user-select: none; |
|
||||
-ms-user-select: none; |
|
||||
user-select: none; |
|
||||
} |
|
||||
.mce-content-body img::-moz-selection { |
|
||||
background: none; |
|
||||
} |
|
||||
.mce-content-body img::selection { |
|
||||
background: none; |
|
||||
} |
|
||||
.ephox-snooker-resizer-bar { |
|
||||
background-color: #b4d7ff; |
|
||||
opacity: 0; |
|
||||
-webkit-user-select: none; |
|
||||
-moz-user-select: none; |
|
||||
-ms-user-select: none; |
|
||||
user-select: none; |
|
||||
} |
|
||||
.ephox-snooker-resizer-cols { |
|
||||
cursor: col-resize; |
|
||||
} |
|
||||
.ephox-snooker-resizer-rows { |
|
||||
cursor: row-resize; |
|
||||
} |
|
||||
.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging { |
|
||||
opacity: 1; |
|
||||
} |
|
||||
.mce-spellchecker-word { |
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); |
|
||||
background-position: 0 calc(100% + 1px); |
|
||||
background-repeat: repeat-x; |
|
||||
background-size: auto 6px; |
|
||||
cursor: default; |
|
||||
height: 2rem; |
|
||||
} |
|
||||
.mce-spellchecker-grammar { |
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); |
|
||||
background-position: 0 calc(100% + 1px); |
|
||||
background-repeat: repeat-x; |
|
||||
background-size: auto 6px; |
|
||||
cursor: default; |
|
||||
} |
|
||||
.mce-toc { |
|
||||
border: 1px solid gray; |
|
||||
} |
|
||||
.mce-toc h2 { |
|
||||
margin: 4px; |
|
||||
} |
|
||||
.mce-toc li { |
|
||||
list-style-type: none; |
|
||||
} |
|
||||
.mce-item-table, |
|
||||
.mce-item-table td, |
|
||||
.mce-item-table th, |
|
||||
.mce-item-table caption { |
|
||||
border: 1px dashed #bbb; |
|
||||
} |
|
||||
.mce-visualblocks p, |
|
||||
.mce-visualblocks h1, |
|
||||
.mce-visualblocks h2, |
|
||||
.mce-visualblocks h3, |
|
||||
.mce-visualblocks h4, |
|
||||
.mce-visualblocks h5, |
|
||||
.mce-visualblocks h6, |
|
||||
.mce-visualblocks div:not([data-mce-bogus]), |
|
||||
.mce-visualblocks section, |
|
||||
.mce-visualblocks article, |
|
||||
.mce-visualblocks blockquote, |
|
||||
.mce-visualblocks address, |
|
||||
.mce-visualblocks pre, |
|
||||
.mce-visualblocks figure, |
|
||||
.mce-visualblocks figcaption, |
|
||||
.mce-visualblocks hgroup, |
|
||||
.mce-visualblocks aside, |
|
||||
.mce-visualblocks ul, |
|
||||
.mce-visualblocks ol, |
|
||||
.mce-visualblocks dl { |
|
||||
background-repeat: no-repeat; |
|
||||
border: 1px dashed #bbb; |
|
||||
margin-left: 3px; |
|
||||
padding-top: 10px; |
|
||||
} |
|
||||
.mce-visualblocks p { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); |
|
||||
} |
|
||||
.mce-visualblocks h1 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); |
|
||||
} |
|
||||
.mce-visualblocks h2 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks h3 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); |
|
||||
} |
|
||||
.mce-visualblocks h4 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks h5 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks h6 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks div:not([data-mce-bogus]) { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); |
|
||||
} |
|
||||
.mce-visualblocks section { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); |
|
||||
} |
|
||||
.mce-visualblocks article { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); |
|
||||
} |
|
||||
.mce-visualblocks blockquote { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); |
|
||||
} |
|
||||
.mce-visualblocks address { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); |
|
||||
} |
|
||||
.mce-visualblocks pre { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks figure { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); |
|
||||
} |
|
||||
.mce-visualblocks figcaption { |
|
||||
border: 1px dashed #bbb; |
|
||||
} |
|
||||
.mce-visualblocks hgroup { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); |
|
||||
} |
|
||||
.mce-visualblocks aside { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); |
|
||||
} |
|
||||
.mce-visualblocks ul { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks ol { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks dl { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); |
|
||||
} |
|
||||
.mce-visualblocks:not([dir=rtl]) p, |
|
||||
.mce-visualblocks:not([dir=rtl]) h1, |
|
||||
.mce-visualblocks:not([dir=rtl]) h2, |
|
||||
.mce-visualblocks:not([dir=rtl]) h3, |
|
||||
.mce-visualblocks:not([dir=rtl]) h4, |
|
||||
.mce-visualblocks:not([dir=rtl]) h5, |
|
||||
.mce-visualblocks:not([dir=rtl]) h6, |
|
||||
.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]), |
|
||||
.mce-visualblocks:not([dir=rtl]) section, |
|
||||
.mce-visualblocks:not([dir=rtl]) article, |
|
||||
.mce-visualblocks:not([dir=rtl]) blockquote, |
|
||||
.mce-visualblocks:not([dir=rtl]) address, |
|
||||
.mce-visualblocks:not([dir=rtl]) pre, |
|
||||
.mce-visualblocks:not([dir=rtl]) figure, |
|
||||
.mce-visualblocks:not([dir=rtl]) figcaption, |
|
||||
.mce-visualblocks:not([dir=rtl]) hgroup, |
|
||||
.mce-visualblocks:not([dir=rtl]) aside, |
|
||||
.mce-visualblocks:not([dir=rtl]) ul, |
|
||||
.mce-visualblocks:not([dir=rtl]) ol, |
|
||||
.mce-visualblocks:not([dir=rtl]) dl { |
|
||||
margin-left: 3px; |
|
||||
} |
|
||||
.mce-visualblocks[dir=rtl] p, |
|
||||
.mce-visualblocks[dir=rtl] h1, |
|
||||
.mce-visualblocks[dir=rtl] h2, |
|
||||
.mce-visualblocks[dir=rtl] h3, |
|
||||
.mce-visualblocks[dir=rtl] h4, |
|
||||
.mce-visualblocks[dir=rtl] h5, |
|
||||
.mce-visualblocks[dir=rtl] h6, |
|
||||
.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]), |
|
||||
.mce-visualblocks[dir=rtl] section, |
|
||||
.mce-visualblocks[dir=rtl] article, |
|
||||
.mce-visualblocks[dir=rtl] blockquote, |
|
||||
.mce-visualblocks[dir=rtl] address, |
|
||||
.mce-visualblocks[dir=rtl] pre, |
|
||||
.mce-visualblocks[dir=rtl] figure, |
|
||||
.mce-visualblocks[dir=rtl] figcaption, |
|
||||
.mce-visualblocks[dir=rtl] hgroup, |
|
||||
.mce-visualblocks[dir=rtl] aside, |
|
||||
.mce-visualblocks[dir=rtl] ul, |
|
||||
.mce-visualblocks[dir=rtl] ol, |
|
||||
.mce-visualblocks[dir=rtl] dl { |
|
||||
background-position-x: right; |
|
||||
margin-right: 3px; |
|
||||
} |
|
||||
.mce-nbsp, |
|
||||
.mce-shy { |
|
||||
background: #aaa; |
|
||||
} |
|
||||
.mce-shy::after { |
|
||||
content: '-'; |
|
||||
} |
|
||||
body { |
|
||||
font-family: sans-serif; |
|
||||
} |
|
||||
table { |
|
||||
border-collapse: collapse; |
|
||||
} |
|
||||
@ -1,689 +0,0 @@ |
|||||
/** |
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved. |
|
||||
* Licensed under the LGPL or a commercial license. |
|
||||
* For LGPL see License.txt in the project root for license information. |
|
||||
* For commercial licenses see https://www.tiny.cloud/ |
|
||||
*/ |
|
||||
.mce-content-body .mce-item-anchor { |
|
||||
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; |
|
||||
cursor: default; |
|
||||
display: inline-block; |
|
||||
height: 12px !important; |
|
||||
padding: 0 2px; |
|
||||
-webkit-user-modify: read-only; |
|
||||
-moz-user-modify: read-only; |
|
||||
-webkit-user-select: all; |
|
||||
-moz-user-select: all; |
|
||||
-ms-user-select: all; |
|
||||
user-select: all; |
|
||||
width: 8px !important; |
|
||||
} |
|
||||
.mce-content-body .mce-item-anchor[data-mce-selected] { |
|
||||
outline-offset: 1px; |
|
||||
} |
|
||||
.tox-comments-visible .tox-comment { |
|
||||
background-color: #fff0b7; |
|
||||
} |
|
||||
.tox-comments-visible .tox-comment--active { |
|
||||
background-color: #ffe168; |
|
||||
} |
|
||||
.tox-checklist > li:not(.tox-checklist--hidden) { |
|
||||
list-style: none; |
|
||||
margin: 0.25em 0; |
|
||||
} |
|
||||
.tox-checklist > li:not(.tox-checklist--hidden)::before { |
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); |
|
||||
background-size: 100%; |
|
||||
content: ''; |
|
||||
cursor: pointer; |
|
||||
height: 1em; |
|
||||
margin-left: -1.5em; |
|
||||
margin-top: 0.125em; |
|
||||
position: absolute; |
|
||||
width: 1em; |
|
||||
} |
|
||||
.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before { |
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); |
|
||||
} |
|
||||
[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before { |
|
||||
margin-left: 0; |
|
||||
margin-right: -1.5em; |
|
||||
} |
|
||||
/* stylelint-disable */ |
|
||||
/* http://prismjs.com/ */ |
|
||||
/** |
|
||||
* prism.js default theme for JavaScript, CSS and HTML |
|
||||
* Based on dabblet (http://dabblet.com) |
|
||||
* @author Lea Verou |
|
||||
*/ |
|
||||
code[class*="language-"], |
|
||||
pre[class*="language-"] { |
|
||||
color: black; |
|
||||
background: none; |
|
||||
text-shadow: 0 1px white; |
|
||||
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; |
|
||||
font-size: 1em; |
|
||||
text-align: left; |
|
||||
white-space: pre; |
|
||||
word-spacing: normal; |
|
||||
word-break: normal; |
|
||||
word-wrap: normal; |
|
||||
line-height: 1.5; |
|
||||
-moz-tab-size: 4; |
|
||||
tab-size: 4; |
|
||||
-webkit-hyphens: none; |
|
||||
-ms-hyphens: none; |
|
||||
hyphens: none; |
|
||||
} |
|
||||
pre[class*="language-"]::-moz-selection, |
|
||||
pre[class*="language-"] ::-moz-selection, |
|
||||
code[class*="language-"]::-moz-selection, |
|
||||
code[class*="language-"] ::-moz-selection { |
|
||||
text-shadow: none; |
|
||||
background: #b3d4fc; |
|
||||
} |
|
||||
pre[class*="language-"]::selection, |
|
||||
pre[class*="language-"] ::selection, |
|
||||
code[class*="language-"]::selection, |
|
||||
code[class*="language-"] ::selection { |
|
||||
text-shadow: none; |
|
||||
background: #b3d4fc; |
|
||||
} |
|
||||
@media print { |
|
||||
code[class*="language-"], |
|
||||
pre[class*="language-"] { |
|
||||
text-shadow: none; |
|
||||
} |
|
||||
} |
|
||||
/* Code blocks */ |
|
||||
pre[class*="language-"] { |
|
||||
padding: 1em; |
|
||||
margin: 0.5em 0; |
|
||||
overflow: auto; |
|
||||
} |
|
||||
:not(pre) > code[class*="language-"], |
|
||||
pre[class*="language-"] { |
|
||||
background: #f5f2f0; |
|
||||
} |
|
||||
/* Inline code */ |
|
||||
:not(pre) > code[class*="language-"] { |
|
||||
padding: 0.1em; |
|
||||
border-radius: 0.3em; |
|
||||
white-space: normal; |
|
||||
} |
|
||||
.token.comment, |
|
||||
.token.prolog, |
|
||||
.token.doctype, |
|
||||
.token.cdata { |
|
||||
color: slategray; |
|
||||
} |
|
||||
.token.punctuation { |
|
||||
color: #999; |
|
||||
} |
|
||||
.namespace { |
|
||||
opacity: 0.7; |
|
||||
} |
|
||||
.token.property, |
|
||||
.token.tag, |
|
||||
.token.boolean, |
|
||||
.token.number, |
|
||||
.token.constant, |
|
||||
.token.symbol, |
|
||||
.token.deleted { |
|
||||
color: #905; |
|
||||
} |
|
||||
.token.selector, |
|
||||
.token.attr-name, |
|
||||
.token.string, |
|
||||
.token.char, |
|
||||
.token.builtin, |
|
||||
.token.inserted { |
|
||||
color: #690; |
|
||||
} |
|
||||
.token.operator, |
|
||||
.token.entity, |
|
||||
.token.url, |
|
||||
.language-css .token.string, |
|
||||
.style .token.string { |
|
||||
color: #9a6e3a; |
|
||||
background: hsla(0, 0%, 100%, 0.5); |
|
||||
} |
|
||||
.token.atrule, |
|
||||
.token.attr-value, |
|
||||
.token.keyword { |
|
||||
color: #07a; |
|
||||
} |
|
||||
.token.function, |
|
||||
.token.class-name { |
|
||||
color: #DD4A68; |
|
||||
} |
|
||||
.token.regex, |
|
||||
.token.important, |
|
||||
.token.variable { |
|
||||
color: #e90; |
|
||||
} |
|
||||
.token.important, |
|
||||
.token.bold { |
|
||||
font-weight: bold; |
|
||||
} |
|
||||
.token.italic { |
|
||||
font-style: italic; |
|
||||
} |
|
||||
.token.entity { |
|
||||
cursor: help; |
|
||||
} |
|
||||
/* stylelint-enable */ |
|
||||
.mce-content-body { |
|
||||
overflow-wrap: break-word; |
|
||||
word-wrap: break-word; |
|
||||
} |
|
||||
.mce-content-body .mce-visual-caret { |
|
||||
background-color: black; |
|
||||
background-color: currentColor; |
|
||||
position: absolute; |
|
||||
} |
|
||||
.mce-content-body .mce-visual-caret-hidden { |
|
||||
display: none; |
|
||||
} |
|
||||
.mce-content-body *[data-mce-caret] { |
|
||||
left: -1000px; |
|
||||
margin: 0; |
|
||||
padding: 0; |
|
||||
position: absolute; |
|
||||
right: auto; |
|
||||
top: 0; |
|
||||
} |
|
||||
.mce-content-body .mce-offscreen-selection { |
|
||||
left: -2000000px; |
|
||||
max-width: 1000000px; |
|
||||
position: absolute; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=false] { |
|
||||
cursor: default; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=true] { |
|
||||
cursor: text; |
|
||||
} |
|
||||
.tox-cursor-format-painter { |
|
||||
cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default; |
|
||||
} |
|
||||
.mce-content-body figure.align-left { |
|
||||
float: left; |
|
||||
} |
|
||||
.mce-content-body figure.align-right { |
|
||||
float: right; |
|
||||
} |
|
||||
.mce-content-body figure.image.align-center { |
|
||||
display: table; |
|
||||
margin-left: auto; |
|
||||
margin-right: auto; |
|
||||
} |
|
||||
.mce-preview-object { |
|
||||
border: 1px solid gray; |
|
||||
display: inline-block; |
|
||||
line-height: 0; |
|
||||
margin: 0 2px 0 2px; |
|
||||
position: relative; |
|
||||
} |
|
||||
.mce-preview-object .mce-shim { |
|
||||
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); |
|
||||
height: 100%; |
|
||||
left: 0; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.mce-preview-object[data-mce-selected="2"] .mce-shim { |
|
||||
display: none; |
|
||||
} |
|
||||
.mce-object { |
|
||||
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; |
|
||||
border: 1px dashed #aaa; |
|
||||
} |
|
||||
.mce-pagebreak { |
|
||||
border: 1px dashed #aaa; |
|
||||
cursor: default; |
|
||||
display: block; |
|
||||
height: 5px; |
|
||||
margin-top: 15px; |
|
||||
page-break-before: always; |
|
||||
width: 100%; |
|
||||
} |
|
||||
@media print { |
|
||||
.mce-pagebreak { |
|
||||
border: 0; |
|
||||
} |
|
||||
} |
|
||||
.tiny-pageembed .mce-shim { |
|
||||
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); |
|
||||
height: 100%; |
|
||||
left: 0; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tiny-pageembed[data-mce-selected="2"] .mce-shim { |
|
||||
display: none; |
|
||||
} |
|
||||
.tiny-pageembed { |
|
||||
display: inline-block; |
|
||||
position: relative; |
|
||||
} |
|
||||
.tiny-pageembed--21by9, |
|
||||
.tiny-pageembed--16by9, |
|
||||
.tiny-pageembed--4by3, |
|
||||
.tiny-pageembed--1by1 { |
|
||||
display: block; |
|
||||
overflow: hidden; |
|
||||
padding: 0; |
|
||||
position: relative; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tiny-pageembed--21by9 { |
|
||||
padding-top: 42.857143%; |
|
||||
} |
|
||||
.tiny-pageembed--16by9 { |
|
||||
padding-top: 56.25%; |
|
||||
} |
|
||||
.tiny-pageembed--4by3 { |
|
||||
padding-top: 75%; |
|
||||
} |
|
||||
.tiny-pageembed--1by1 { |
|
||||
padding-top: 100%; |
|
||||
} |
|
||||
.tiny-pageembed--21by9 iframe, |
|
||||
.tiny-pageembed--16by9 iframe, |
|
||||
.tiny-pageembed--4by3 iframe, |
|
||||
.tiny-pageembed--1by1 iframe { |
|
||||
border: 0; |
|
||||
height: 100%; |
|
||||
left: 0; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.mce-content-body[data-mce-placeholder] { |
|
||||
position: relative; |
|
||||
} |
|
||||
.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before { |
|
||||
color: rgba(34, 47, 62, 0.7); |
|
||||
content: attr(data-mce-placeholder); |
|
||||
position: absolute; |
|
||||
} |
|
||||
.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before { |
|
||||
left: 1px; |
|
||||
} |
|
||||
.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before { |
|
||||
right: 1px; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle { |
|
||||
background-color: #4099ff; |
|
||||
border-color: #4099ff; |
|
||||
border-style: solid; |
|
||||
border-width: 1px; |
|
||||
box-sizing: border-box; |
|
||||
height: 10px; |
|
||||
position: absolute; |
|
||||
width: 10px; |
|
||||
z-index: 10000; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:hover { |
|
||||
background-color: #4099ff; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(1) { |
|
||||
cursor: nwse-resize; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(2) { |
|
||||
cursor: nesw-resize; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(3) { |
|
||||
cursor: nwse-resize; |
|
||||
} |
|
||||
.mce-content-body div.mce-resizehandle:nth-of-type(4) { |
|
||||
cursor: nesw-resize; |
|
||||
} |
|
||||
.mce-content-body .mce-clonedresizable { |
|
||||
opacity: 0.5; |
|
||||
outline: 1px dashed black; |
|
||||
position: absolute; |
|
||||
z-index: 10000; |
|
||||
} |
|
||||
.mce-content-body .mce-resize-helper { |
|
||||
background: #555; |
|
||||
background: rgba(0, 0, 0, 0.75); |
|
||||
border: 1px; |
|
||||
border-radius: 3px; |
|
||||
color: white; |
|
||||
display: none; |
|
||||
font-family: sans-serif; |
|
||||
font-size: 12px; |
|
||||
line-height: 14px; |
|
||||
margin: 5px 10px; |
|
||||
padding: 5px; |
|
||||
position: absolute; |
|
||||
white-space: nowrap; |
|
||||
z-index: 10001; |
|
||||
} |
|
||||
.tox-rtc-user-selection { |
|
||||
position: relative; |
|
||||
} |
|
||||
.tox-rtc-user-cursor { |
|
||||
bottom: 0; |
|
||||
cursor: default; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
width: 2px; |
|
||||
} |
|
||||
.tox-rtc-user-cursor::before { |
|
||||
background-color: inherit; |
|
||||
border-radius: 50%; |
|
||||
content: ''; |
|
||||
display: block; |
|
||||
height: 8px; |
|
||||
position: absolute; |
|
||||
right: -3px; |
|
||||
top: -3px; |
|
||||
width: 8px; |
|
||||
} |
|
||||
.tox-rtc-user-cursor:hover::after { |
|
||||
background-color: inherit; |
|
||||
border-radius: 100px; |
|
||||
box-sizing: border-box; |
|
||||
color: #fff; |
|
||||
content: attr(data-user); |
|
||||
display: block; |
|
||||
font-size: 12px; |
|
||||
font-weight: bold; |
|
||||
left: -5px; |
|
||||
min-height: 8px; |
|
||||
min-width: 8px; |
|
||||
padding: 0 12px; |
|
||||
position: absolute; |
|
||||
top: -11px; |
|
||||
white-space: nowrap; |
|
||||
z-index: 1000; |
|
||||
} |
|
||||
.tox-rtc-user-selection--1 .tox-rtc-user-cursor { |
|
||||
background-color: #2dc26b; |
|
||||
} |
|
||||
.tox-rtc-user-selection--2 .tox-rtc-user-cursor { |
|
||||
background-color: #e03e2d; |
|
||||
} |
|
||||
.tox-rtc-user-selection--3 .tox-rtc-user-cursor { |
|
||||
background-color: #f1c40f; |
|
||||
} |
|
||||
.tox-rtc-user-selection--4 .tox-rtc-user-cursor { |
|
||||
background-color: #3598db; |
|
||||
} |
|
||||
.tox-rtc-user-selection--5 .tox-rtc-user-cursor { |
|
||||
background-color: #b96ad9; |
|
||||
} |
|
||||
.tox-rtc-user-selection--6 .tox-rtc-user-cursor { |
|
||||
background-color: #e67e23; |
|
||||
} |
|
||||
.tox-rtc-user-selection--7 .tox-rtc-user-cursor { |
|
||||
background-color: #aaa69d; |
|
||||
} |
|
||||
.tox-rtc-user-selection--8 .tox-rtc-user-cursor { |
|
||||
background-color: #f368e0; |
|
||||
} |
|
||||
.tox-rtc-remote-image { |
|
||||
background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center; |
|
||||
border: 1px solid #ccc; |
|
||||
min-height: 240px; |
|
||||
min-width: 320px; |
|
||||
} |
|
||||
.mce-match-marker { |
|
||||
background: #aaa; |
|
||||
color: #fff; |
|
||||
} |
|
||||
.mce-match-marker-selected { |
|
||||
background: #39f; |
|
||||
color: #fff; |
|
||||
} |
|
||||
.mce-match-marker-selected::-moz-selection { |
|
||||
background: #39f; |
|
||||
color: #fff; |
|
||||
} |
|
||||
.mce-match-marker-selected::selection { |
|
||||
background: #39f; |
|
||||
color: #fff; |
|
||||
} |
|
||||
.mce-content-body img[data-mce-selected], |
|
||||
.mce-content-body table[data-mce-selected] { |
|
||||
outline: 3px solid #b4d7ff; |
|
||||
} |
|
||||
.mce-content-body hr[data-mce-selected] { |
|
||||
outline: 3px solid #b4d7ff; |
|
||||
outline-offset: 1px; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus { |
|
||||
outline: 3px solid #b4d7ff; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover { |
|
||||
outline: 3px solid #b4d7ff; |
|
||||
} |
|
||||
.mce-content-body *[contentEditable=false][data-mce-selected] { |
|
||||
cursor: not-allowed; |
|
||||
outline: 3px solid #b4d7ff; |
|
||||
} |
|
||||
.mce-content-body.mce-content-readonly *[contentEditable=true]:focus, |
|
||||
.mce-content-body.mce-content-readonly *[contentEditable=true]:hover { |
|
||||
outline: none; |
|
||||
} |
|
||||
.mce-content-body *[data-mce-selected="inline-boundary"] { |
|
||||
background-color: #b4d7ff; |
|
||||
} |
|
||||
.mce-content-body .mce-edit-focus { |
|
||||
outline: 3px solid #b4d7ff; |
|
||||
} |
|
||||
.mce-content-body td[data-mce-selected], |
|
||||
.mce-content-body th[data-mce-selected] { |
|
||||
background-color: #b4d7ff !important; |
|
||||
} |
|
||||
.mce-content-body td[data-mce-selected]::-moz-selection, |
|
||||
.mce-content-body th[data-mce-selected]::-moz-selection { |
|
||||
background: none; |
|
||||
} |
|
||||
.mce-content-body td[data-mce-selected]::selection, |
|
||||
.mce-content-body th[data-mce-selected]::selection { |
|
||||
background: none; |
|
||||
} |
|
||||
.mce-content-body td[data-mce-selected] *, |
|
||||
.mce-content-body th[data-mce-selected] * { |
|
||||
-webkit-touch-callout: none; |
|
||||
-webkit-user-select: none; |
|
||||
-moz-user-select: none; |
|
||||
-ms-user-select: none; |
|
||||
user-select: none; |
|
||||
} |
|
||||
.mce-content-body img::-moz-selection { |
|
||||
background: none; |
|
||||
} |
|
||||
.mce-content-body img::selection { |
|
||||
background: none; |
|
||||
} |
|
||||
.ephox-snooker-resizer-bar { |
|
||||
background-color: #b4d7ff; |
|
||||
opacity: 0; |
|
||||
-webkit-user-select: none; |
|
||||
-moz-user-select: none; |
|
||||
-ms-user-select: none; |
|
||||
user-select: none; |
|
||||
} |
|
||||
.ephox-snooker-resizer-cols { |
|
||||
cursor: col-resize; |
|
||||
} |
|
||||
.ephox-snooker-resizer-rows { |
|
||||
cursor: row-resize; |
|
||||
} |
|
||||
.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging { |
|
||||
opacity: 1; |
|
||||
} |
|
||||
.mce-spellchecker-word { |
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); |
|
||||
background-position: 0 calc(100% + 1px); |
|
||||
background-repeat: repeat-x; |
|
||||
background-size: auto 6px; |
|
||||
cursor: default; |
|
||||
height: 2rem; |
|
||||
} |
|
||||
.mce-spellchecker-grammar { |
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); |
|
||||
background-position: 0 calc(100% + 1px); |
|
||||
background-repeat: repeat-x; |
|
||||
background-size: auto 6px; |
|
||||
cursor: default; |
|
||||
} |
|
||||
.mce-toc { |
|
||||
border: 1px solid gray; |
|
||||
} |
|
||||
.mce-toc h2 { |
|
||||
margin: 4px; |
|
||||
} |
|
||||
.mce-toc li { |
|
||||
list-style-type: none; |
|
||||
} |
|
||||
.mce-item-table, |
|
||||
.mce-item-table td, |
|
||||
.mce-item-table th, |
|
||||
.mce-item-table caption { |
|
||||
border: 1px dashed #bbb; |
|
||||
} |
|
||||
.mce-visualblocks p, |
|
||||
.mce-visualblocks h1, |
|
||||
.mce-visualblocks h2, |
|
||||
.mce-visualblocks h3, |
|
||||
.mce-visualblocks h4, |
|
||||
.mce-visualblocks h5, |
|
||||
.mce-visualblocks h6, |
|
||||
.mce-visualblocks div:not([data-mce-bogus]), |
|
||||
.mce-visualblocks section, |
|
||||
.mce-visualblocks article, |
|
||||
.mce-visualblocks blockquote, |
|
||||
.mce-visualblocks address, |
|
||||
.mce-visualblocks pre, |
|
||||
.mce-visualblocks figure, |
|
||||
.mce-visualblocks figcaption, |
|
||||
.mce-visualblocks hgroup, |
|
||||
.mce-visualblocks aside, |
|
||||
.mce-visualblocks ul, |
|
||||
.mce-visualblocks ol, |
|
||||
.mce-visualblocks dl { |
|
||||
background-repeat: no-repeat; |
|
||||
border: 1px dashed #bbb; |
|
||||
margin-left: 3px; |
|
||||
padding-top: 10px; |
|
||||
} |
|
||||
.mce-visualblocks p { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); |
|
||||
} |
|
||||
.mce-visualblocks h1 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); |
|
||||
} |
|
||||
.mce-visualblocks h2 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks h3 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); |
|
||||
} |
|
||||
.mce-visualblocks h4 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks h5 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks h6 { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks div:not([data-mce-bogus]) { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); |
|
||||
} |
|
||||
.mce-visualblocks section { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); |
|
||||
} |
|
||||
.mce-visualblocks article { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); |
|
||||
} |
|
||||
.mce-visualblocks blockquote { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); |
|
||||
} |
|
||||
.mce-visualblocks address { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); |
|
||||
} |
|
||||
.mce-visualblocks pre { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks figure { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); |
|
||||
} |
|
||||
.mce-visualblocks figcaption { |
|
||||
border: 1px dashed #bbb; |
|
||||
} |
|
||||
.mce-visualblocks hgroup { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); |
|
||||
} |
|
||||
.mce-visualblocks aside { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); |
|
||||
} |
|
||||
.mce-visualblocks ul { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks ol { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); |
|
||||
} |
|
||||
.mce-visualblocks dl { |
|
||||
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); |
|
||||
} |
|
||||
.mce-visualblocks:not([dir=rtl]) p, |
|
||||
.mce-visualblocks:not([dir=rtl]) h1, |
|
||||
.mce-visualblocks:not([dir=rtl]) h2, |
|
||||
.mce-visualblocks:not([dir=rtl]) h3, |
|
||||
.mce-visualblocks:not([dir=rtl]) h4, |
|
||||
.mce-visualblocks:not([dir=rtl]) h5, |
|
||||
.mce-visualblocks:not([dir=rtl]) h6, |
|
||||
.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]), |
|
||||
.mce-visualblocks:not([dir=rtl]) section, |
|
||||
.mce-visualblocks:not([dir=rtl]) article, |
|
||||
.mce-visualblocks:not([dir=rtl]) blockquote, |
|
||||
.mce-visualblocks:not([dir=rtl]) address, |
|
||||
.mce-visualblocks:not([dir=rtl]) pre, |
|
||||
.mce-visualblocks:not([dir=rtl]) figure, |
|
||||
.mce-visualblocks:not([dir=rtl]) figcaption, |
|
||||
.mce-visualblocks:not([dir=rtl]) hgroup, |
|
||||
.mce-visualblocks:not([dir=rtl]) aside, |
|
||||
.mce-visualblocks:not([dir=rtl]) ul, |
|
||||
.mce-visualblocks:not([dir=rtl]) ol, |
|
||||
.mce-visualblocks:not([dir=rtl]) dl { |
|
||||
margin-left: 3px; |
|
||||
} |
|
||||
.mce-visualblocks[dir=rtl] p, |
|
||||
.mce-visualblocks[dir=rtl] h1, |
|
||||
.mce-visualblocks[dir=rtl] h2, |
|
||||
.mce-visualblocks[dir=rtl] h3, |
|
||||
.mce-visualblocks[dir=rtl] h4, |
|
||||
.mce-visualblocks[dir=rtl] h5, |
|
||||
.mce-visualblocks[dir=rtl] h6, |
|
||||
.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]), |
|
||||
.mce-visualblocks[dir=rtl] section, |
|
||||
.mce-visualblocks[dir=rtl] article, |
|
||||
.mce-visualblocks[dir=rtl] blockquote, |
|
||||
.mce-visualblocks[dir=rtl] address, |
|
||||
.mce-visualblocks[dir=rtl] pre, |
|
||||
.mce-visualblocks[dir=rtl] figure, |
|
||||
.mce-visualblocks[dir=rtl] figcaption, |
|
||||
.mce-visualblocks[dir=rtl] hgroup, |
|
||||
.mce-visualblocks[dir=rtl] aside, |
|
||||
.mce-visualblocks[dir=rtl] ul, |
|
||||
.mce-visualblocks[dir=rtl] ol, |
|
||||
.mce-visualblocks[dir=rtl] dl { |
|
||||
background-position-x: right; |
|
||||
margin-right: 3px; |
|
||||
} |
|
||||
.mce-nbsp, |
|
||||
.mce-shy { |
|
||||
background: #aaa; |
|
||||
} |
|
||||
.mce-shy::after { |
|
||||
content: '-'; |
|
||||
} |
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,29 +0,0 @@ |
|||||
/** |
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved. |
|
||||
* Licensed under the LGPL or a commercial license. |
|
||||
* For LGPL see License.txt in the project root for license information. |
|
||||
* For commercial licenses see https://www.tiny.cloud/ |
|
||||
*/ |
|
||||
.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection { |
|
||||
/* Note: this file is used inside the content, so isn't part of theming */ |
|
||||
background-color: green; |
|
||||
display: inline-block; |
|
||||
opacity: 0.5; |
|
||||
position: absolute; |
|
||||
} |
|
||||
body { |
|
||||
-webkit-text-size-adjust: none; |
|
||||
} |
|
||||
body img { |
|
||||
/* this is related to the content margin */ |
|
||||
max-width: 96vw; |
|
||||
} |
|
||||
body table img { |
|
||||
max-width: 95%; |
|
||||
} |
|
||||
body { |
|
||||
font-family: sans-serif; |
|
||||
} |
|
||||
table { |
|
||||
border-collapse: collapse; |
|
||||
} |
|
||||
@ -1,7 +0,0 @@ |
|||||
/** |
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved. |
|
||||
* Licensed under the LGPL or a commercial license. |
|
||||
* For LGPL see License.txt in the project root for license information. |
|
||||
* For commercial licenses see https://www.tiny.cloud/ |
|
||||
*/ |
|
||||
.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse} |
|
||||
Binary file not shown.
File diff suppressed because it is too large
File diff suppressed because one or more lines are too long
@ -1,673 +0,0 @@ |
|||||
/** |
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved. |
|
||||
* Licensed under the LGPL or a commercial license. |
|
||||
* For LGPL see License.txt in the project root for license information. |
|
||||
* For commercial licenses see https://www.tiny.cloud/ |
|
||||
*/ |
|
||||
/* RESET all the things! */ |
|
||||
.tinymce-mobile-outer-container { |
|
||||
all: initial; |
|
||||
display: block; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container * { |
|
||||
border: 0; |
|
||||
box-sizing: initial; |
|
||||
cursor: inherit; |
|
||||
float: none; |
|
||||
line-height: 1; |
|
||||
margin: 0; |
|
||||
outline: 0; |
|
||||
padding: 0; |
|
||||
-webkit-tap-highlight-color: transparent; |
|
||||
/* TBIO-3691, stop the gray flicker on touch. */ |
|
||||
text-shadow: none; |
|
||||
white-space: nowrap; |
|
||||
} |
|
||||
.tinymce-mobile-icon-arrow-back::before { |
|
||||
content: "\e5cd"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-image::before { |
|
||||
content: "\e412"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-cancel-circle::before { |
|
||||
content: "\e5c9"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-full-dot::before { |
|
||||
content: "\e061"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-align-center::before { |
|
||||
content: "\e234"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-align-left::before { |
|
||||
content: "\e236"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-align-right::before { |
|
||||
content: "\e237"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-bold::before { |
|
||||
content: "\e238"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-italic::before { |
|
||||
content: "\e23f"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-unordered-list::before { |
|
||||
content: "\e241"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-ordered-list::before { |
|
||||
content: "\e242"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-font-size::before { |
|
||||
content: "\e245"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-underline::before { |
|
||||
content: "\e249"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-link::before { |
|
||||
content: "\e157"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-unlink::before { |
|
||||
content: "\eca2"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-color::before { |
|
||||
content: "\e891"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-previous::before { |
|
||||
content: "\e314"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-next::before { |
|
||||
content: "\e315"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-large-font::before, |
|
||||
.tinymce-mobile-icon-style-formats::before { |
|
||||
content: "\e264"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-undo::before { |
|
||||
content: "\e166"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-redo::before { |
|
||||
content: "\e15a"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-removeformat::before { |
|
||||
content: "\e239"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-small-font::before { |
|
||||
content: "\e906"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-readonly-back::before, |
|
||||
.tinymce-mobile-format-matches::after { |
|
||||
content: "\e5ca"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-small-heading::before { |
|
||||
content: "small"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-large-heading::before { |
|
||||
content: "large"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-small-heading::before, |
|
||||
.tinymce-mobile-icon-large-heading::before { |
|
||||
font-family: sans-serif; |
|
||||
font-size: 80%; |
|
||||
} |
|
||||
.tinymce-mobile-mask-edit-icon::before { |
|
||||
content: "\e254"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-back::before { |
|
||||
content: "\e5c4"; |
|
||||
} |
|
||||
.tinymce-mobile-icon-heading::before { |
|
||||
/* TODO: Translate */ |
|
||||
content: "Headings"; |
|
||||
font-family: sans-serif; |
|
||||
font-size: 80%; |
|
||||
font-weight: bold; |
|
||||
} |
|
||||
.tinymce-mobile-icon-h1::before { |
|
||||
content: "H1"; |
|
||||
font-weight: bold; |
|
||||
} |
|
||||
.tinymce-mobile-icon-h2::before { |
|
||||
content: "H2"; |
|
||||
font-weight: bold; |
|
||||
} |
|
||||
.tinymce-mobile-icon-h3::before { |
|
||||
content: "H3"; |
|
||||
font-weight: bold; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
justify-content: center; |
|
||||
background: rgba(51, 51, 51, 0.5); |
|
||||
height: 100%; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container { |
|
||||
align-items: center; |
|
||||
border-radius: 50%; |
|
||||
display: flex; |
|
||||
flex-direction: column; |
|
||||
font-family: sans-serif; |
|
||||
font-size: 1em; |
|
||||
justify-content: space-between; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
justify-content: center; |
|
||||
border-radius: 50%; |
|
||||
height: 2.1em; |
|
||||
width: 2.1em; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
justify-content: center; |
|
||||
flex-direction: column; |
|
||||
font-size: 1em; |
|
||||
} |
|
||||
@media only screen and (min-device-width:700px) { |
|
||||
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section { |
|
||||
font-size: 1.2em; |
|
||||
} |
|
||||
} |
|
||||
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
justify-content: center; |
|
||||
border-radius: 50%; |
|
||||
height: 2.1em; |
|
||||
width: 2.1em; |
|
||||
background-color: white; |
|
||||
color: #207ab7; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before { |
|
||||
content: "\e900"; |
|
||||
font-family: 'tinymce-mobile', sans-serif; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon { |
|
||||
z-index: 2; |
|
||||
} |
|
||||
.tinymce-mobile-android-container.tinymce-mobile-android-maximized { |
|
||||
background: #ffffff; |
|
||||
border: none; |
|
||||
bottom: 0; |
|
||||
display: flex; |
|
||||
flex-direction: column; |
|
||||
left: 0; |
|
||||
position: fixed; |
|
||||
right: 0; |
|
||||
top: 0; |
|
||||
} |
|
||||
.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) { |
|
||||
position: relative; |
|
||||
} |
|
||||
.tinymce-mobile-android-container .tinymce-mobile-editor-socket { |
|
||||
display: flex; |
|
||||
flex-grow: 1; |
|
||||
} |
|
||||
.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe { |
|
||||
display: flex !important; |
|
||||
flex-grow: 1; |
|
||||
height: auto !important; |
|
||||
} |
|
||||
.tinymce-mobile-android-scroll-reload { |
|
||||
overflow: hidden; |
|
||||
} |
|
||||
:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar { |
|
||||
margin-top: 23px; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip { |
|
||||
background: #fff; |
|
||||
display: flex; |
|
||||
flex: 0 0 auto; |
|
||||
z-index: 1; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar { |
|
||||
align-items: center; |
|
||||
background-color: #fff; |
|
||||
border-bottom: 1px solid #cccccc; |
|
||||
display: flex; |
|
||||
flex: 1; |
|
||||
height: 2.5em; |
|
||||
width: 100%; |
|
||||
/* Make it no larger than the toolstrip, so that it needs to scroll */ |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
height: 100%; |
|
||||
flex-shrink: 1; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
height: 100%; |
|
||||
flex: 1; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container { |
|
||||
background: #f44336; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group { |
|
||||
flex-grow: 1; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item { |
|
||||
padding-left: 0.5em; |
|
||||
padding-right: 0.5em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
height: 80%; |
|
||||
margin-left: 2px; |
|
||||
margin-right: 2px; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected { |
|
||||
background: #c8cbcf; |
|
||||
color: #cccccc; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type, |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type { |
|
||||
background: #207ab7; |
|
||||
color: #eceff1; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar { |
|
||||
/* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */ |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
height: 100%; |
|
||||
flex: 1; |
|
||||
padding-bottom: 0.4em; |
|
||||
padding-top: 0.4em; |
|
||||
/* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */ |
|
||||
/* For widgets like the colour picker, use the whole height */ |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog { |
|
||||
display: flex; |
|
||||
min-height: 1.5em; |
|
||||
overflow: hidden; |
|
||||
padding-left: 0; |
|
||||
padding-right: 0; |
|
||||
position: relative; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain { |
|
||||
display: flex; |
|
||||
height: 100%; |
|
||||
transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen { |
|
||||
display: flex; |
|
||||
flex: 0 0 auto; |
|
||||
justify-content: space-between; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input { |
|
||||
font-family: Sans-serif; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container { |
|
||||
display: flex; |
|
||||
flex-grow: 1; |
|
||||
position: relative; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x { |
|
||||
-ms-grid-row-align: center; |
|
||||
align-self: center; |
|
||||
background: inherit; |
|
||||
border: none; |
|
||||
border-radius: 50%; |
|
||||
color: #888; |
|
||||
font-size: 0.6em; |
|
||||
font-weight: bold; |
|
||||
height: 100%; |
|
||||
padding-right: 2px; |
|
||||
position: absolute; |
|
||||
right: 0; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x { |
|
||||
display: none; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous, |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before, |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
font-weight: bold; |
|
||||
height: 100%; |
|
||||
padding-left: 0.5em; |
|
||||
padding-right: 0.5em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before, |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before { |
|
||||
visibility: hidden; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item { |
|
||||
color: #cccccc; |
|
||||
font-size: 10px; |
|
||||
line-height: 10px; |
|
||||
margin: 0 2px; |
|
||||
padding-top: 3px; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active { |
|
||||
color: #c8cbcf; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before, |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before { |
|
||||
margin-left: 0.5em; |
|
||||
margin-right: 0.9em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before, |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before { |
|
||||
margin-left: 0.9em; |
|
||||
margin-right: 0.5em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider { |
|
||||
display: flex; |
|
||||
flex: 1; |
|
||||
margin-left: 0; |
|
||||
margin-right: 0; |
|
||||
padding: 0.28em 0; |
|
||||
position: relative; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
flex-grow: 1; |
|
||||
height: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line { |
|
||||
background: #cccccc; |
|
||||
display: flex; |
|
||||
flex: 1; |
|
||||
height: 0.2em; |
|
||||
margin-bottom: 0.3em; |
|
||||
margin-top: 0.3em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container { |
|
||||
padding-left: 2em; |
|
||||
padding-right: 2em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
flex-grow: 1; |
|
||||
height: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient { |
|
||||
background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%); |
|
||||
display: flex; |
|
||||
flex: 1; |
|
||||
height: 0.2em; |
|
||||
margin-bottom: 0.3em; |
|
||||
margin-top: 0.3em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black { |
|
||||
/* Not part of theming */ |
|
||||
background: black; |
|
||||
height: 0.2em; |
|
||||
margin-bottom: 0.3em; |
|
||||
margin-top: 0.3em; |
|
||||
width: 1.2em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white { |
|
||||
/* Not part of theming */ |
|
||||
background: white; |
|
||||
height: 0.2em; |
|
||||
margin-bottom: 0.3em; |
|
||||
margin-top: 0.3em; |
|
||||
width: 1.2em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb { |
|
||||
/* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave |
|
||||
* out these values, then it shows the thumb at the top of the spectrum. This is probably because it is |
|
||||
* absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without |
|
||||
* this approach. |
|
||||
*/ |
|
||||
align-items: center; |
|
||||
background-clip: padding-box; |
|
||||
background-color: #455a64; |
|
||||
border: 0.5em solid rgba(136, 136, 136, 0); |
|
||||
border-radius: 3em; |
|
||||
bottom: 0; |
|
||||
color: #fff; |
|
||||
display: flex; |
|
||||
height: 0.5em; |
|
||||
justify-content: center; |
|
||||
left: -10px; |
|
||||
margin: auto; |
|
||||
position: absolute; |
|
||||
top: 0; |
|
||||
transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1); |
|
||||
width: 0.5em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active { |
|
||||
border: 0.5em solid rgba(136, 136, 136, 0.39); |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper, |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
height: 100%; |
|
||||
flex: 1; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper { |
|
||||
flex-direction: column; |
|
||||
justify-content: center; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) { |
|
||||
height: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container { |
|
||||
display: flex; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input { |
|
||||
background: #ffffff; |
|
||||
border: none; |
|
||||
border-radius: 0; |
|
||||
color: #455a64; |
|
||||
flex-grow: 1; |
|
||||
font-size: 0.85em; |
|
||||
padding-bottom: 0.1em; |
|
||||
padding-left: 5px; |
|
||||
padding-top: 0.1em; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder { |
|
||||
/* WebKit, Blink, Edge */ |
|
||||
color: #888; |
|
||||
} |
|
||||
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder { |
|
||||
/* WebKit, Blink, Edge */ |
|
||||
color: #888; |
|
||||
} |
|
||||
/* dropup */ |
|
||||
.tinymce-mobile-dropup { |
|
||||
background: white; |
|
||||
display: flex; |
|
||||
overflow: hidden; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking { |
|
||||
transition: height 0.3s ease-out; |
|
||||
} |
|
||||
.tinymce-mobile-dropup.tinymce-mobile-dropup-growing { |
|
||||
transition: height 0.3s ease-in; |
|
||||
} |
|
||||
.tinymce-mobile-dropup.tinymce-mobile-dropup-closed { |
|
||||
flex-grow: 0; |
|
||||
} |
|
||||
.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) { |
|
||||
flex-grow: 1; |
|
||||
} |
|
||||
/* TODO min-height for device size and orientation */ |
|
||||
.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { |
|
||||
min-height: 200px; |
|
||||
} |
|
||||
@media only screen and (orientation: landscape) { |
|
||||
.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { |
|
||||
min-height: 200px; |
|
||||
} |
|
||||
} |
|
||||
@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) { |
|
||||
.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { |
|
||||
min-height: 150px; |
|
||||
} |
|
||||
} |
|
||||
/* styles menu */ |
|
||||
.tinymce-mobile-styles-menu { |
|
||||
font-family: sans-serif; |
|
||||
outline: 4px solid black; |
|
||||
overflow: hidden; |
|
||||
position: relative; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu [role="menu"] { |
|
||||
display: flex; |
|
||||
flex-direction: column; |
|
||||
height: 100%; |
|
||||
position: absolute; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu [role="menu"].transitioning { |
|
||||
transition: transform 0.5s ease-in-out; |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu .tinymce-mobile-styles-item { |
|
||||
border-bottom: 1px solid #ddd; |
|
||||
color: #455a64; |
|
||||
cursor: pointer; |
|
||||
display: flex; |
|
||||
padding: 1em 1em; |
|
||||
position: relative; |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before { |
|
||||
color: #455a64; |
|
||||
content: "\e314"; |
|
||||
font-family: 'tinymce-mobile', sans-serif; |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after { |
|
||||
color: #455a64; |
|
||||
content: "\e315"; |
|
||||
font-family: 'tinymce-mobile', sans-serif; |
|
||||
padding-left: 1em; |
|
||||
padding-right: 1em; |
|
||||
position: absolute; |
|
||||
right: 0; |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after { |
|
||||
font-family: 'tinymce-mobile', sans-serif; |
|
||||
padding-left: 1em; |
|
||||
padding-right: 1em; |
|
||||
position: absolute; |
|
||||
right: 0; |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator, |
|
||||
.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser { |
|
||||
align-items: center; |
|
||||
background: #fff; |
|
||||
border-top: #455a64; |
|
||||
color: #455a64; |
|
||||
display: flex; |
|
||||
min-height: 2.5em; |
|
||||
padding-left: 1em; |
|
||||
padding-right: 1em; |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state], |
|
||||
.tinymce-mobile-styles-menu [data-transitioning-state="before"] { |
|
||||
transform: translate(-100%); |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state], |
|
||||
.tinymce-mobile-styles-menu [data-transitioning-state="current"] { |
|
||||
transform: translate(0%); |
|
||||
} |
|
||||
.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state], |
|
||||
.tinymce-mobile-styles-menu [data-transitioning-state="after"] { |
|
||||
transform: translate(100%); |
|
||||
} |
|
||||
@font-face { |
|
||||
font-family: 'tinymce-mobile'; |
|
||||
font-style: normal; |
|
||||
font-weight: normal; |
|
||||
src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff'); |
|
||||
} |
|
||||
@media (min-device-width: 700px) { |
|
||||
.tinymce-mobile-outer-container, |
|
||||
.tinymce-mobile-outer-container input { |
|
||||
font-size: 25px; |
|
||||
} |
|
||||
} |
|
||||
@media (max-device-width: 700px) { |
|
||||
.tinymce-mobile-outer-container, |
|
||||
.tinymce-mobile-outer-container input { |
|
||||
font-size: 18px; |
|
||||
} |
|
||||
} |
|
||||
.tinymce-mobile-icon { |
|
||||
font-family: 'tinymce-mobile', sans-serif; |
|
||||
} |
|
||||
.mixin-flex-and-centre { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
justify-content: center; |
|
||||
} |
|
||||
.mixin-flex-bar { |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
height: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe { |
|
||||
background-color: #fff; |
|
||||
width: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { |
|
||||
/* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */ |
|
||||
background-color: #207ab7; |
|
||||
border-radius: 50%; |
|
||||
bottom: 1em; |
|
||||
color: white; |
|
||||
font-size: 1em; |
|
||||
height: 2.1em; |
|
||||
position: fixed; |
|
||||
right: 2em; |
|
||||
width: 2.1em; |
|
||||
align-items: center; |
|
||||
display: flex; |
|
||||
justify-content: center; |
|
||||
} |
|
||||
@media only screen and (min-device-width:700px) { |
|
||||
.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { |
|
||||
font-size: 1.2em; |
|
||||
} |
|
||||
} |
|
||||
.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket { |
|
||||
height: 300px; |
|
||||
overflow: hidden; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe { |
|
||||
height: 100%; |
|
||||
} |
|
||||
.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip { |
|
||||
display: none; |
|
||||
} |
|
||||
/* |
|
||||
Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets |
|
||||
increased and the whole body becomes scrollable. It's important! |
|
||||
*/ |
|
||||
input[type="file"]::-webkit-file-upload-button { |
|
||||
display: none; |
|
||||
} |
|
||||
@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) { |
|
||||
.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { |
|
||||
bottom: 50%; |
|
||||
} |
|
||||
} |
|
||||
File diff suppressed because one or more lines are too long
@ -1,5 +0,0 @@ |
|||||
<template> |
|
||||
<div id="app"> |
|
||||
<router-view/> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
Before Width: | Height: | Size: 383 KiB |
|
Before Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
@ -1,259 +0,0 @@ |
|||||
<!-- tinymce富文本编辑器组件 license by http://eleadmin.com --> |
|
||||
<template> |
|
||||
<editor |
|
||||
:init="config" |
|
||||
:disabled="disabled" |
|
||||
:value="value" |
|
||||
@input="updateValue"/> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import tinymce from 'tinymce/tinymce'; |
|
||||
import 'tinymce/icons/default'; |
|
||||
import 'tinymce/themes/silver'; |
|
||||
import 'tinymce/plugins/code'; |
|
||||
import 'tinymce/plugins/print'; |
|
||||
import 'tinymce/plugins/preview'; |
|
||||
import 'tinymce/plugins/fullscreen'; |
|
||||
import 'tinymce/plugins/paste'; |
|
||||
import 'tinymce/plugins/searchreplace'; |
|
||||
import 'tinymce/plugins/save'; |
|
||||
import 'tinymce/plugins/autosave'; |
|
||||
import 'tinymce/plugins/link'; |
|
||||
import 'tinymce/plugins/autolink'; |
|
||||
import 'tinymce/plugins/image'; |
|
||||
import 'tinymce/plugins/imagetools'; |
|
||||
import 'tinymce/plugins/media'; |
|
||||
import 'tinymce/plugins/table'; |
|
||||
import 'tinymce/plugins/codesample'; |
|
||||
import 'tinymce/plugins/lists'; |
|
||||
import 'tinymce/plugins/advlist'; |
|
||||
import 'tinymce/plugins/hr'; |
|
||||
import 'tinymce/plugins/charmap'; |
|
||||
import 'tinymce/plugins/emoticons'; |
|
||||
import 'tinymce/plugins/anchor'; |
|
||||
import 'tinymce/plugins/directionality'; |
|
||||
import 'tinymce/plugins/pagebreak'; |
|
||||
import 'tinymce/plugins/quickbars'; |
|
||||
import 'tinymce/plugins/nonbreaking'; |
|
||||
import 'tinymce/plugins/visualblocks'; |
|
||||
import 'tinymce/plugins/visualchars'; |
|
||||
import 'tinymce/plugins/wordcount'; |
|
||||
import 'tinymce/plugins/emoticons/js/emojis'; |
|
||||
import Editor from '@tinymce/tinymce-vue'; |
|
||||
// 默认配置 |
|
||||
const defaultConfig = { |
|
||||
height: 300, |
|
||||
branding: false, |
|
||||
skin_url: '/tinymce/skins/ui/oxide', |
|
||||
content_css: '/tinymce/skins/content/default/content.min.css', |
|
||||
language_url: '/tinymce/langs/zh_CN.js', |
|
||||
language: 'zh_CN', |
|
||||
plugins: [ |
|
||||
'code', |
|
||||
'print', |
|
||||
'preview', |
|
||||
'fullscreen', |
|
||||
'paste', |
|
||||
'searchreplace', |
|
||||
'save', |
|
||||
'autosave', |
|
||||
'link', |
|
||||
'autolink', |
|
||||
'image', |
|
||||
'imagetools', |
|
||||
'media', |
|
||||
'table', |
|
||||
'codesample', |
|
||||
'lists', |
|
||||
'advlist', |
|
||||
'hr', |
|
||||
'charmap', |
|
||||
'emoticons', |
|
||||
'anchor', |
|
||||
'directionality', |
|
||||
'pagebreak', |
|
||||
'quickbars', |
|
||||
'nonbreaking', |
|
||||
'visualblocks', |
|
||||
'visualchars', |
|
||||
'wordcount' |
|
||||
].join(' '), |
|
||||
toolbar: [ |
|
||||
'fullscreen', |
|
||||
'preview', |
|
||||
'code', |
|
||||
'|', |
|
||||
'undo', |
|
||||
'redo', |
|
||||
'|', |
|
||||
'forecolor', |
|
||||
'backcolor', |
|
||||
'|', |
|
||||
'bold', |
|
||||
'italic', |
|
||||
'underline', |
|
||||
'strikethrough', |
|
||||
'|', |
|
||||
'alignleft', |
|
||||
'aligncenter', |
|
||||
'alignright', |
|
||||
'alignjustify', |
|
||||
'|', |
|
||||
'outdent', |
|
||||
'indent', |
|
||||
'|', |
|
||||
'numlist', |
|
||||
'bullist', |
|
||||
'|', |
|
||||
'formatselect', |
|
||||
'fontselect', |
|
||||
'fontsizeselect', |
|
||||
'|', |
|
||||
'link', |
|
||||
'image', |
|
||||
'media', |
|
||||
'emoticons', |
|
||||
'charmap', |
|
||||
'anchor', |
|
||||
'pagebreak', |
|
||||
'codesample', |
|
||||
'|', |
|
||||
'ltr', |
|
||||
'rtl' |
|
||||
].join(' '), |
|
||||
toolbar_drawer: 'sliding', |
|
||||
images_upload_handler: (blobInfo, success) => { |
|
||||
success('data:image/jpeg;base64,' + blobInfo.base64()); |
|
||||
}, |
|
||||
file_picker_types: 'media', |
|
||||
file_picker_callback: () => { |
|
||||
} |
|
||||
}; |
|
||||
|
|
||||
export default { |
|
||||
name: 'TinymceEditor', |
|
||||
components: {Editor}, |
|
||||
model: { |
|
||||
prop: 'value', |
|
||||
event: 'change' |
|
||||
}, |
|
||||
props: { |
|
||||
// 值 |
|
||||
value: String, |
|
||||
// 编辑器配置 |
|
||||
init: Object, |
|
||||
// 是否禁用 |
|
||||
disabled: Boolean, |
|
||||
// 自动跟随框架暗黑主题 |
|
||||
autoTheme: { |
|
||||
type: Boolean, |
|
||||
default: true |
|
||||
} |
|
||||
}, |
|
||||
data() { |
|
||||
let theme; |
|
||||
if (this.autoTheme) { |
|
||||
const darkMode = this.$store.state.theme.darkMode; |
|
||||
theme = { |
|
||||
skin_url: darkMode ? '/tinymce/skins/ui/oxide-dark' : '/tinymce/skins/ui/oxide', |
|
||||
content_css: darkMode ? '/tinymce/skins/content/dark/content.min.css' : '/tinymce/skins/content/default/content.min.css' |
|
||||
} |
|
||||
} |
|
||||
let config = Object.assign({}, defaultConfig, this.init, theme); |
|
||||
return { |
|
||||
// 编辑器配置 |
|
||||
config: config |
|
||||
}; |
|
||||
}, |
|
||||
computed: { |
|
||||
// 是否是暗黑模式 |
|
||||
darkMode() { |
|
||||
try { |
|
||||
return this.$store.state.theme.darkMode; |
|
||||
} catch (e) { |
|
||||
return null; |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
mounted() { |
|
||||
tinymce.init({}); |
|
||||
}, |
|
||||
methods: { |
|
||||
/* 更新value */ |
|
||||
updateValue(value) { |
|
||||
this.$emit('change', value); |
|
||||
}, |
|
||||
/* 切换编辑器主题 */ |
|
||||
changeTheme(darkMode) { |
|
||||
document.head.querySelectorAll('[id^="mce-"]').forEach(elem => { |
|
||||
let href = elem.getAttribute('href'); |
|
||||
if (href.indexOf('/oxide-dark/') !== -1) { |
|
||||
if (!darkMode) { |
|
||||
href = href.replace('/oxide-dark/', '/oxide/'); |
|
||||
elem.setAttribute('href', href); |
|
||||
} |
|
||||
} else { |
|
||||
if (darkMode) { |
|
||||
href = href.replace('/oxide/', '/oxide-dark/'); |
|
||||
elem.setAttribute('href', href); |
|
||||
} |
|
||||
} |
|
||||
}); |
|
||||
this.changeContentTheme(darkMode); |
|
||||
}, |
|
||||
/* 切换编辑器内容区的主题 */ |
|
||||
changeContentTheme(darkMode) { |
|
||||
document.body.querySelectorAll('iframe[id^="tiny-vue_"]').forEach(frame => { |
|
||||
const win = frame.contentWindow; |
|
||||
if (win) { |
|
||||
const doc = win.document; |
|
||||
if (doc) { |
|
||||
doc.head.querySelectorAll('[id^="mce-"]').forEach(elem => { |
|
||||
let href = elem.getAttribute('href'); |
|
||||
if (href.indexOf('/skins/ui/') !== -1) { |
|
||||
if (href.indexOf('/oxide-dark/') !== -1) { |
|
||||
if (!darkMode) { |
|
||||
href = href.replace('/oxide-dark/', '/oxide/'); |
|
||||
elem.setAttribute('href', href); |
|
||||
} |
|
||||
} else { |
|
||||
if (darkMode) { |
|
||||
href = href.replace('/oxide/', '/oxide-dark/'); |
|
||||
elem.setAttribute('href', href); |
|
||||
} |
|
||||
} |
|
||||
} else if (href.indexOf('/skins/content/') !== -1) { |
|
||||
if (href.indexOf('/dark/') !== -1) { |
|
||||
if (!darkMode) { |
|
||||
href = href.replace('/dark/', '/default/'); |
|
||||
elem.setAttribute('href', href); |
|
||||
} |
|
||||
} else { |
|
||||
if (darkMode) { |
|
||||
href = href.replace('/default/', '/dark/'); |
|
||||
elem.setAttribute('href', href); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
}); |
|
||||
} |
|
||||
} |
|
||||
}); |
|
||||
} |
|
||||
}, |
|
||||
watch: { |
|
||||
darkMode() { |
|
||||
if (this.autoTheme) { |
|
||||
this.changeTheme(this.darkMode); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style> |
|
||||
body .tox-tinymce-aux { |
|
||||
z-index: 19892000; |
|
||||
} |
|
||||
</style> |
|
||||
@ -1,79 +0,0 @@ |
|||||
/** |
|
||||
* axios配置 |
|
||||
*/ |
|
||||
import Vue from 'vue'; |
|
||||
import VueAxios from 'vue-axios'; |
|
||||
import axios from 'axios'; |
|
||||
import store from '../store'; |
|
||||
import router from '../router'; |
|
||||
import setting from './setting'; |
|
||||
import {MessageBox} from 'element-ui'; |
|
||||
|
|
||||
Vue.use(VueAxios, axios); |
|
||||
|
|
||||
// 设置统一的url
|
|
||||
axios.defaults.baseURL = process.env.VUE_APP_API_BASE_URL; |
|
||||
|
|
||||
/* 请求拦截器 */ |
|
||||
axios.interceptors.request.use((config) => { |
|
||||
// 添加token到header
|
|
||||
let token = setting.takeToken(); |
|
||||
if (token) { |
|
||||
config.headers[setting.tokenHeaderName] = token; |
|
||||
} |
|
||||
return config; |
|
||||
}, function (error) { |
|
||||
return Promise.reject(error); |
|
||||
}); |
|
||||
|
|
||||
/* 响应拦截器 */ |
|
||||
axios.interceptors.response.use((res) => { |
|
||||
// 登录过期处理
|
|
||||
if (res.data.code === 40512) { |
|
||||
if (res.config.url === setting.menuUrl) { |
|
||||
goLogin(); |
|
||||
} else { |
|
||||
MessageBox.alert('登录状态已过期, 请退出重新登录!', '系统提示', { |
|
||||
confirmButtonText: '重新登录', |
|
||||
callback: (action) => { |
|
||||
if (action === 'confirm') { |
|
||||
goLogin(); |
|
||||
} |
|
||||
}, |
|
||||
beforeClose: () => { |
|
||||
MessageBox.close(); |
|
||||
} |
|
||||
}); |
|
||||
} |
|
||||
return Promise.reject(new Error(res.data.msg)); |
|
||||
} |
|
||||
// token自动续期
|
|
||||
let access_token = res.headers[setting.tokenHeaderName]; |
|
||||
if (access_token) { |
|
||||
setting.cacheToken(access_token); |
|
||||
} |
|
||||
return res; |
|
||||
}, (error) => { |
|
||||
return Promise.reject(error); |
|
||||
}); |
|
||||
|
|
||||
/** |
|
||||
* 跳转到登录页面 |
|
||||
*/ |
|
||||
function goLogin() { |
|
||||
store.dispatch('user/removeToken').then(() => { |
|
||||
const current = router.currentRoute; |
|
||||
if (current && current.path && current.path !== '/') { |
|
||||
router.push({ |
|
||||
path: '/login', |
|
||||
query: { |
|
||||
form: current.path |
|
||||
} |
|
||||
}).then(() => { |
|
||||
}); |
|
||||
} else { |
|
||||
router.push('/login').then(() => { |
|
||||
}); |
|
||||
} |
|
||||
}); |
|
||||
} |
|
||||
@ -1,134 +0,0 @@ |
|||||
/** |
|
||||
* 项目统一配置 |
|
||||
*/ |
|
||||
export default { |
|
||||
// 路由白名单(不需要登录的)
|
|
||||
whiteList: ['/login', '/forget'], |
|
||||
// 不显示全局页脚的路由地址
|
|
||||
hideFooters: ['/system/dictionary', '/system/organization'], |
|
||||
// 需要缓存的组件名称
|
|
||||
keepAliveList: [], |
|
||||
// 菜单数据接口
|
|
||||
menuUrl: '/manager/permissMenu', |
|
||||
// 自定义解析接口菜单数据
|
|
||||
parseMenu: null, |
|
||||
// 自定义解析接口菜单每一个数据格式
|
|
||||
parseMenuItem: (item) => { |
|
||||
if (!item) { |
|
||||
return; |
|
||||
} |
|
||||
item.menuId = item.id; |
|
||||
item.title = item.name; |
|
||||
item.parentId = item.parent_id; |
|
||||
item.menuType = item.menu_type; |
|
||||
return item; |
|
||||
}, |
|
||||
// 直接指定菜单数据
|
|
||||
menus: null, |
|
||||
// 用户信息接口
|
|
||||
userUrl: '/manager/readPersional', |
|
||||
uploadImageUrl:'http://api.static.ahbmz.com/api/upload', |
|
||||
// 自定义解析接口用户信息
|
|
||||
parseUser(res) { |
|
||||
// 这里code和msg字段如果不一样可在这里修改
|
|
||||
let result = {code: res.code, msg: res.msg}; |
|
||||
if (res.data) { |
|
||||
// 这里只需要姓名和头像两个字段,如需缓存其它字段可在这里添加
|
|
||||
result.data = { |
|
||||
nickname: res.data.truename, |
|
||||
avatar: res.data.avatar |
|
||||
}; |
|
||||
// 下面是获取角色和权限列表,需要string数组类型
|
|
||||
if (res.data.roles) { |
|
||||
result.data.roles = res.data.roles.map(d => d.role_code); |
|
||||
} |
|
||||
if (res.data.authorities) { |
|
||||
result.data.authorities = res.data.authorities.map(d => d.authority); |
|
||||
} |
|
||||
} |
|
||||
return result; |
|
||||
}, |
|
||||
// token传递的header名称
|
|
||||
tokenHeaderName: 'Token', |
|
||||
// token存储的名称
|
|
||||
tokenStoreName: 'access_token', |
|
||||
// 获取缓存的token
|
|
||||
takeToken() { |
|
||||
let token = localStorage.getItem(this.tokenStoreName); |
|
||||
if (!token) { |
|
||||
token = sessionStorage.getItem(this.tokenStoreName); |
|
||||
} |
|
||||
return token; |
|
||||
}, |
|
||||
// 缓存token
|
|
||||
cacheToken(token, remember) { |
|
||||
localStorage.removeItem(this.tokenStoreName); |
|
||||
sessionStorage.removeItem(this.tokenStoreName); |
|
||||
if (token) { |
|
||||
if (remember) { |
|
||||
localStorage.setItem(this.tokenStoreName, token); |
|
||||
} else { |
|
||||
sessionStorage.setItem(this.tokenStoreName, token); |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
// 用户信息存储的名称
|
|
||||
userStoreName: 'user', |
|
||||
// 获取缓存的用户信息
|
|
||||
takeUser() { |
|
||||
try { |
|
||||
return JSON.parse(localStorage.getItem(this.userStoreName)) || {}; |
|
||||
} catch (e) { |
|
||||
console.error(e); |
|
||||
} |
|
||||
return {}; |
|
||||
}, |
|
||||
// 缓存用户信息
|
|
||||
cacheUser(user) { |
|
||||
if (user) { |
|
||||
localStorage.setItem(this.userStoreName, JSON.stringify(user)); |
|
||||
} else { |
|
||||
localStorage.removeItem(this.userStoreName); |
|
||||
} |
|
||||
}, |
|
||||
// 主题配置存储的名称
|
|
||||
themeStoreName: 'theme', |
|
||||
// 首页tab显示标题, null会根据菜单自动获取
|
|
||||
homeTitle: '主页', |
|
||||
// 首页路径, null会自动获取
|
|
||||
homePath: null, |
|
||||
// 顶栏是否显示主题设置按钮
|
|
||||
showSetting: true, |
|
||||
// 侧边栏风格: 0亮色, 1暗色
|
|
||||
sideStyle: 0, |
|
||||
// 顶栏风格: 0亮色, 1暗色, 2主色
|
|
||||
headStyle: 2, |
|
||||
// 标签页风格: 0默认, 1圆点, 2卡片
|
|
||||
tabStyle: 0, |
|
||||
// 布局风格: 0默认, 1顶部菜单风格, 2混合菜单风格
|
|
||||
layoutStyle: 0, |
|
||||
// 是否固定侧栏
|
|
||||
fixedSidebar: true, |
|
||||
// 是否固定顶栏
|
|
||||
fixedHeader: false, |
|
||||
// 是否固定主体
|
|
||||
fixedBody: true, |
|
||||
// logo是否自适应宽度
|
|
||||
logoAutoSize: true, |
|
||||
// 内容区域宽度是否铺满
|
|
||||
bodyFull: true, |
|
||||
// 是否开启多标签
|
|
||||
showTabs: true, |
|
||||
// 侧栏是否多彩图标
|
|
||||
colorfulIcon: true, |
|
||||
// 侧边栏是否只保持一个子菜单展开
|
|
||||
sideUniqueOpen: true, |
|
||||
// 是否开启页脚
|
|
||||
showFooter: true, |
|
||||
// 是否是色弱模式
|
|
||||
weakMode: false, |
|
||||
// 是否是暗黑模式
|
|
||||
darkMode: false, |
|
||||
// 默认主题色
|
|
||||
color: null |
|
||||
} |
|
||||
Binary file not shown.
Binary file not shown.
@ -1,33 +0,0 @@ |
|||||
<!-- 页脚 --> |
|
||||
<template> |
|
||||
<div class="ele-text-center" style="padding: 16px 0;"> |
|
||||
<div> |
|
||||
<a |
|
||||
class="ele-text-secondary" |
|
||||
href="https://eleadmin.com" |
|
||||
target="_blank">官网 |
|
||||
</a> |
|
||||
<em/> |
|
||||
<a |
|
||||
class="ele-text-secondary" |
|
||||
href="https://eleadmin.com/doc/eleadmin/" |
|
||||
target="_blank">文档 |
|
||||
</a> |
|
||||
<em/> |
|
||||
<a |
|
||||
class="ele-text-secondary" |
|
||||
href="https://eleadmin.com/goods/8" |
|
||||
target="_blank">授权 |
|
||||
</a> |
|
||||
</div> |
|
||||
<div class="ele-text-secondary" style="margin-top: 8px;"> |
|
||||
Copyright © 2021 武汉易云智科技有限公司 |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
name: 'EleFooter' |
|
||||
} |
|
||||
</script> |
|
||||
@ -1,111 +0,0 @@ |
|||||
<!-- 顶栏右侧区域按钮 --> |
|
||||
<template> |
|
||||
<div class="ele-admin-header-tool"> |
|
||||
<div |
|
||||
class="ele-admin-header-tool-item" |
|
||||
@click="toggleFullscreen"> |
|
||||
<i :class="isFullscreen?'el-icon-_screen-restore':'el-icon-_screen-full'"></i> |
|
||||
</div> |
|
||||
<!-- 消息通知 --> |
|
||||
<div class="ele-admin-header-tool-item"> |
|
||||
<ele-notice/> |
|
||||
</div> |
|
||||
<!-- 用户信息 --> |
|
||||
<div class="ele-admin-header-tool-item"> |
|
||||
<el-dropdown @command="onUserDropClick"> |
|
||||
<div class="ele-admin-header-avatar"> |
|
||||
<el-avatar :src="loginUser.avatar"/> |
|
||||
<span>{{ loginUser.nickname }}</span> |
|
||||
<i class="el-icon-arrow-down"></i> |
|
||||
</div> |
|
||||
<el-dropdown-menu slot="dropdown"> |
|
||||
<el-dropdown-item |
|
||||
command="user" |
|
||||
icon="el-icon-user">个人中心 |
|
||||
</el-dropdown-item> |
|
||||
<el-dropdown-item |
|
||||
command="password" |
|
||||
icon="el-icon-key">修改密码 |
|
||||
</el-dropdown-item> |
|
||||
<el-dropdown-item |
|
||||
command="logout" |
|
||||
icon="el-icon-switch-button" |
|
||||
divided>退出登录 |
|
||||
</el-dropdown-item> |
|
||||
</el-dropdown-menu> |
|
||||
</el-dropdown> |
|
||||
</div> |
|
||||
<!-- 主题设置 --> |
|
||||
<div |
|
||||
class="ele-admin-header-tool-item" |
|
||||
v-if="showSetting" |
|
||||
@click="openSetting"> |
|
||||
<i class="el-icon-_more"></i> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import EleNotice from './notice'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'EleHeaderRight', |
|
||||
components: {EleNotice}, |
|
||||
props: { |
|
||||
// 是否显示打开设置抽屉按钮 |
|
||||
showSetting: { |
|
||||
type: Boolean, |
|
||||
default: true |
|
||||
} |
|
||||
}, |
|
||||
computed: { |
|
||||
// 当前登录用户信息 |
|
||||
loginUser() { |
|
||||
return this.$store.state.user.user; |
|
||||
} |
|
||||
}, |
|
||||
data() { |
|
||||
return { |
|
||||
// 是否全屏状态 |
|
||||
isFullscreen: false |
|
||||
}; |
|
||||
}, |
|
||||
methods: { |
|
||||
/* 个人信息下拉菜单点击 */ |
|
||||
onUserDropClick(command) { |
|
||||
if (command === 'user') { |
|
||||
if (this.$route.fullPath !== '/user/info') { |
|
||||
this.$router.push('/user/info'); |
|
||||
} |
|
||||
} else if (command === 'password') { |
|
||||
this.$emit('item-click', 'password'); |
|
||||
} else if (command === 'logout') { |
|
||||
// 退出登录 |
|
||||
this.$confirm( |
|
||||
'确定要退出登录吗?', |
|
||||
'提示', |
|
||||
{type: 'warning'} |
|
||||
).then(() => { |
|
||||
// 清除缓存的token |
|
||||
this.$store.dispatch('user/setToken').then(() => { |
|
||||
location.replace('/'); |
|
||||
}); |
|
||||
}).catch(() => { |
|
||||
}); |
|
||||
} |
|
||||
}, |
|
||||
/* 打开设置抽屉 */ |
|
||||
openSetting() { |
|
||||
this.$emit('item-click', 'setting'); |
|
||||
}, |
|
||||
/* 全屏切换 */ |
|
||||
toggleFullscreen() { |
|
||||
try { |
|
||||
this.isFullscreen = this.$util.toggleFullscreen(); |
|
||||
} catch (e) { |
|
||||
this.$message.error('您的浏览器不支持全屏模式'); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
@ -1,189 +0,0 @@ |
|||||
<template> |
|
||||
<ele-pro-layout |
|
||||
:collapse="theme.collapse" |
|
||||
:fixed-header="theme.fixedHeader" |
|
||||
:fixed-sidebar="theme.fixedSidebar" |
|
||||
:fixed-body="theme.fixedBody" |
|
||||
:layout-style="theme.layoutStyle" |
|
||||
:head-style="theme.headStyle" |
|
||||
:side-style="theme.sideStyle" |
|
||||
:logo-auto-size="theme.logoAutoSize" |
|
||||
:colorful-icon="theme.colorfulIcon" |
|
||||
:side-unique-open="theme.sideUniqueOpen" |
|
||||
:show-tabs="theme.showTabs" |
|
||||
:tab-style="theme.tabStyle" |
|
||||
:body-full="theme.bodyFull" |
|
||||
:keep-alive-list="keepAliveList" |
|
||||
:home-title="homeTitle" |
|
||||
:project-name="projectName" |
|
||||
:tabs="user.tabs" |
|
||||
:menus="user.menus" |
|
||||
:need-setting="needSetting" |
|
||||
:show-setting.sync="showSetting" |
|
||||
:color="theme.color" |
|
||||
:dark-mode="theme.darkMode" |
|
||||
:weak-mode="theme.weakMode" |
|
||||
:show-content="showContent" |
|
||||
@update-collapse="updateCollapse" |
|
||||
@update-screen="updateScreen" |
|
||||
@tab-add="tabAdd" |
|
||||
@tab-remove="tabRemove" |
|
||||
@tab-remove-left="tabRemoveLeft" |
|
||||
@tab-remove-right="tabRemoveRight" |
|
||||
@tab-remove-other="tabRemoveOther" |
|
||||
@tab-remove-all="tabRemoveAll" |
|
||||
@change-color="changeColor" |
|
||||
@change-style="changeStyle"> |
|
||||
<!-- logo图标 --> |
|
||||
<template slot="logo"> |
|
||||
<img src="@/assets/logo.svg" alt="logo"/> |
|
||||
</template> |
|
||||
<!-- 顶栏右侧区域 --> |
|
||||
<template slot="right"> |
|
||||
<ele-header-right |
|
||||
:show-setting="needSetting" |
|
||||
@item-click="onItemClick"/> |
|
||||
</template> |
|
||||
<!-- 修改密码弹窗 --> |
|
||||
<ele-password :visible.sync="showPassword"/> |
|
||||
</ele-pro-layout> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import {mapGetters} from 'vuex'; |
|
||||
import setting from '@/config/setting'; |
|
||||
import EleHeaderRight from './header-right'; |
|
||||
import ElePassword from './password'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'EleLayout', |
|
||||
components: { |
|
||||
EleHeaderRight, |
|
||||
ElePassword |
|
||||
}, |
|
||||
computed: { |
|
||||
// 主页标题 |
|
||||
homeTitle() { |
|
||||
return setting.homeTitle; |
|
||||
}, |
|
||||
// 需要缓存的组件 |
|
||||
keepAliveList() { |
|
||||
return setting.keepAliveList; |
|
||||
}, |
|
||||
// 是否需要主题设置按钮 |
|
||||
needSetting() { |
|
||||
return setting.showSetting; |
|
||||
}, |
|
||||
...mapGetters(['theme', 'user']) |
|
||||
}, |
|
||||
data() { |
|
||||
return { |
|
||||
// 项目名 |
|
||||
projectName: process.env.VUE_APP_NAME, |
|
||||
// 是否显示修改密码弹窗 |
|
||||
showPassword: false, |
|
||||
// 是否显示主题设置抽屉 |
|
||||
showSetting: false, |
|
||||
// 是否显示主体部分, 如果你的首页用到了权限控制指令, 把这个改成false, 避免权限控制指令可能不生效 |
|
||||
showContent: true |
|
||||
}; |
|
||||
}, |
|
||||
mounted() { |
|
||||
// 获取用户信息 |
|
||||
this.getUserInfo(); |
|
||||
}, |
|
||||
methods: { |
|
||||
/* 获取当前用户信息 */ |
|
||||
getUserInfo() { |
|
||||
if (setting.userUrl) { |
|
||||
this.$http.get(setting.userUrl).then(res => { |
|
||||
let result; |
|
||||
if (setting.parseUser) { |
|
||||
result = setting.parseUser(res.data); |
|
||||
} else { |
|
||||
result = res.data; |
|
||||
} |
|
||||
if (res.data.code === 0) { |
|
||||
const user = result.data; |
|
||||
this.$store.dispatch('user/setUser', user); |
|
||||
this.$store.dispatch('user/setRoles', user ? user.roles : null); |
|
||||
this.$store.dispatch('user/setAuthorities', user ? user.authorities : null); |
|
||||
} else { |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
// 在用户权限信息请求完成后再渲染主体部分, 以免权限控制指令不生效 |
|
||||
this.showContent = true; |
|
||||
}).catch(e => { |
|
||||
this.showContent = true; |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
} |
|
||||
}, |
|
||||
/* 顶栏右侧点击 */ |
|
||||
onItemClick(key) { |
|
||||
if (key === 'password') { |
|
||||
this.showPassword = true; |
|
||||
} else if (key === 'setting') { |
|
||||
this.showSetting = true; |
|
||||
} |
|
||||
}, |
|
||||
/* 更新collapse */ |
|
||||
updateCollapse(value) { |
|
||||
this.$store.dispatch('theme/set', { |
|
||||
key: 'collapse', |
|
||||
value: value |
|
||||
}); |
|
||||
}, |
|
||||
/* 更新屏幕尺寸 */ |
|
||||
updateScreen() { |
|
||||
this.$store.dispatch('theme/updateScreen'); |
|
||||
}, |
|
||||
/* 切换主题色 */ |
|
||||
changeColor(value) { |
|
||||
const loading = this.$loading({ |
|
||||
lock: true, |
|
||||
background: 'transparent' |
|
||||
}); |
|
||||
this.$store.dispatch('theme/setColor', value).then(() => { |
|
||||
loading.close(); |
|
||||
}).catch(e => { |
|
||||
loading.close(); |
|
||||
console.error(e); |
|
||||
this.$message.error('主题加载失败'); |
|
||||
}); |
|
||||
}, |
|
||||
/* 切换主题风格 */ |
|
||||
changeStyle(value) { |
|
||||
this.$store.dispatch('theme/set', value); |
|
||||
}, |
|
||||
/* 添加tab */ |
|
||||
tabAdd(value) { |
|
||||
this.$store.dispatch('user/tabAdd', value); |
|
||||
}, |
|
||||
/* 移除tab */ |
|
||||
tabRemove(obj) { |
|
||||
this.$store.dispatch('user/tabRemove', obj.name).then(last => { |
|
||||
if (obj.active === obj.name) { |
|
||||
this.$router.push(last === -1 ? '/' : this.user.tabs[last].path); |
|
||||
} |
|
||||
}); |
|
||||
}, |
|
||||
/* 移除左边tab */ |
|
||||
tabRemoveLeft(value) { |
|
||||
this.$store.dispatch('user/tabRemoveLeft', value); |
|
||||
}, |
|
||||
/* 移除右边tab */ |
|
||||
tabRemoveRight(value) { |
|
||||
this.$store.dispatch('user/tabRemoveRight', value); |
|
||||
}, |
|
||||
/* 移除其它tab */ |
|
||||
tabRemoveOther(value) { |
|
||||
this.$store.dispatch('user/tabRemoveOther', value); |
|
||||
}, |
|
||||
/* 移除全部tab */ |
|
||||
tabRemoveAll() { |
|
||||
this.$store.dispatch('user/tabRemoveAll'); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
@ -1,300 +0,0 @@ |
|||||
<!-- 顶栏消息图标 --> |
|
||||
<template> |
|
||||
<el-popover |
|
||||
width="300" |
|
||||
v-model="visible" |
|
||||
trigger="click" |
|
||||
popper-class="ele-notice-pop" |
|
||||
transition="el-zoom-in-top" |
|
||||
class="ele-notice-group"> |
|
||||
<div |
|
||||
class="ele-notice-group" |
|
||||
slot="reference"> |
|
||||
<el-badge |
|
||||
:value="allNum" |
|
||||
:hidden="!allNum"> |
|
||||
<i class="el-icon-bell"></i> |
|
||||
</el-badge> |
|
||||
</div> |
|
||||
<el-tabs |
|
||||
v-model="active" |
|
||||
class="user-info-tabs"> |
|
||||
<el-tab-pane |
|
||||
:label="noticeLabel" |
|
||||
name="notice"> |
|
||||
<div class="ele-notice-list ele-scrollbar-mini"> |
|
||||
<div |
|
||||
v-for="(item,index) in notice" |
|
||||
:key="index" |
|
||||
class="ele-notice-item"> |
|
||||
<div class="ele-cell ele-notice-item-wrapper"> |
|
||||
<i :class="[item.icon,'ele-notice-item-icon']"></i> |
|
||||
<div class="ele-cell-content"> |
|
||||
<div class="ele-elip">{{ item.title }}</div> |
|
||||
<div class="ele-text-secondary ele-elip">{{ item.pub_time }}</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<el-divider/> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div |
|
||||
v-if="notice.length" |
|
||||
class="ele-cell ele-notice-actions"> |
|
||||
<!-- <div--> |
|
||||
<!-- @click="clear(1)"--> |
|
||||
<!-- class="ele-cell-content">清空通知--> |
|
||||
<!-- </div>--> |
|
||||
<el-divider |
|
||||
direction="vertical" |
|
||||
class="line-color-light"/> |
|
||||
<div |
|
||||
@click="more(1)" |
|
||||
class="ele-cell-content">查看更多 |
|
||||
</div> |
|
||||
</div> |
|
||||
<ele-empty |
|
||||
v-if="!notice.length" |
|
||||
text="你已查看所有通知"/> |
|
||||
</el-tab-pane> |
|
||||
<el-tab-pane |
|
||||
:label="messageLabel" |
|
||||
name="message"> |
|
||||
<div class="ele-notice-list ele-scrollbar-mini"> |
|
||||
<div |
|
||||
v-for="(item,index) in message" |
|
||||
:key="index" |
|
||||
class="ele-notice-item"> |
|
||||
<div class="ele-cell ele-notice-item-wrapper ele-cell-align-top"> |
|
||||
<el-avatar |
|
||||
:src="item.avatar_str" |
|
||||
size="medium"/> |
|
||||
<div class="ele-cell-content"> |
|
||||
<div class="ele-elip">{{ item.title }}</div> |
|
||||
<div class="ele-text-secondary ele-elip">{{ item.content }}</div> |
|
||||
<div class="ele-cell-desc ele-elip">{{ item.pub_time }}</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<el-divider/> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div |
|
||||
v-if="message.length" |
|
||||
class="ele-cell ele-notice-actions"> |
|
||||
<!-- <div--> |
|
||||
<!-- @click="clear(2)"--> |
|
||||
<!-- class="ele-cell-content">清空消息--> |
|
||||
<!-- </div>--> |
|
||||
<el-divider |
|
||||
direction="vertical" |
|
||||
class="line-color-light"/> |
|
||||
<div |
|
||||
@click="more(2)" |
|
||||
class="ele-cell-content">查看更多 |
|
||||
</div> |
|
||||
</div> |
|
||||
<ele-empty |
|
||||
v-if="!message.length" |
|
||||
text="你已读完所有私信"/> |
|
||||
</el-tab-pane> |
|
||||
</el-tabs> |
|
||||
</el-popover> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
name: 'EleNotice', |
|
||||
data() { |
|
||||
return { |
|
||||
visible: false, |
|
||||
active: 'notice', |
|
||||
notice: [ |
|
||||
|
|
||||
], |
|
||||
notice_count:0, |
|
||||
message: [ |
|
||||
|
|
||||
], |
|
||||
message_count:0, |
|
||||
}; |
|
||||
}, |
|
||||
|
|
||||
computed: { |
|
||||
|
|
||||
|
|
||||
// 通知标题 |
|
||||
noticeLabel() { |
|
||||
if (this.notice_count) { |
|
||||
return `通知(${this.notice_count})`; |
|
||||
} |
|
||||
return '通知'; |
|
||||
}, |
|
||||
// 私信标题 |
|
||||
messageLabel() { |
|
||||
if (this.message_count) { |
|
||||
return `私信(${this.message_count})`; |
|
||||
} |
|
||||
return '私信'; |
|
||||
}, |
|
||||
|
|
||||
// 所有消息数量 |
|
||||
allNum() { |
|
||||
return this.notice_count + this.message_count ; |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
mounted() { |
|
||||
// 获取用户信息 |
|
||||
this.getMessage(); |
|
||||
|
|
||||
setInterval(this.setM,60000) |
|
||||
}, |
|
||||
|
|
||||
methods: { |
|
||||
setM(){ |
|
||||
this.setMessage(); |
|
||||
this.getMessage(); |
|
||||
}, |
|
||||
getMessage(){ |
|
||||
this.$http.get('/manager/getMessage?type=99').then(res => { |
|
||||
if (res.data.code === 0) { |
|
||||
this.message = res.data.data.sx.list; |
|
||||
this.notice = res.data.data.gg.list; |
|
||||
this.message_count = res.data.data.sx.count; |
|
||||
this.notice_count = res.data.data.gg.count; |
|
||||
} |
|
||||
}) |
|
||||
}, |
|
||||
setMessage(){ |
|
||||
this.$http.get('/manager/setMessage?type=99').then(res => { |
|
||||
if (res.data.code === 0) { |
|
||||
this.message = res.data.data.sx.list; |
|
||||
this.notice = res.data.data.gg.list; |
|
||||
this.message_count = res.data.data.sx.count; |
|
||||
this.notice_count = res.data.data.gg.count; |
|
||||
} |
|
||||
}) |
|
||||
}, |
|
||||
|
|
||||
/* 清空消息 */ |
|
||||
clear(type) { |
|
||||
if (type === 1) { |
|
||||
this.notice = []; |
|
||||
} else if (type === 2) { |
|
||||
this.message = []; |
|
||||
} |
|
||||
}, |
|
||||
/* 查看更多 */ |
|
||||
more(type) { |
|
||||
console.log(type); |
|
||||
if (this.$route.path !== '/user/message') { |
|
||||
this.$router.push('/user/message'); |
|
||||
} |
|
||||
this.show = false; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style lang="scss"> |
|
||||
.ele-notice-group { |
|
||||
vertical-align: top !important; |
|
||||
display: inline-block; |
|
||||
|
|
||||
.el-badge { |
|
||||
line-height: normal; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/* 消息通知pop */ |
|
||||
.ele-notice-pop { |
|
||||
margin: 0 !important; |
|
||||
padding: 0 !important; |
|
||||
|
|
||||
/* tab */ |
|
||||
.el-tabs__nav-scroll { |
|
||||
text-align: center; |
|
||||
} |
|
||||
|
|
||||
.el-tabs__nav { |
|
||||
float: none; |
|
||||
display: inline-block; |
|
||||
} |
|
||||
|
|
||||
.el-tabs__item { |
|
||||
padding: 0 20px; |
|
||||
} |
|
||||
|
|
||||
/* 空视图 */ |
|
||||
.ele-empty { |
|
||||
padding: 100px 0; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/* 列表 */ |
|
||||
.ele-notice-list { |
|
||||
padding-top: 8px; |
|
||||
max-height: 360px; |
|
||||
overflow: auto; |
|
||||
} |
|
||||
|
|
||||
.ele-notice-item { |
|
||||
.ele-notice-item-wrapper { |
|
||||
padding: 12px 15px; |
|
||||
transition: background-color .2s; |
|
||||
cursor: pointer; |
|
||||
|
|
||||
&:hover { |
|
||||
background-color: hsla(0, 0%, 60%, .05); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.ele-text-secondary { |
|
||||
margin-top: 5px; |
|
||||
font-size: 13px; |
|
||||
} |
|
||||
|
|
||||
.ele-cell-desc { |
|
||||
margin-top: 3px !important; |
|
||||
font-size: 12px !important; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.ele-notice-item-icon { |
|
||||
width: 32px; |
|
||||
height: 32px; |
|
||||
line-height: 32px !important; |
|
||||
color: #FFF; |
|
||||
font-size: 16px; |
|
||||
background-color: #60B2FC; |
|
||||
border-radius: 50%; |
|
||||
text-align: center; |
|
||||
|
|
||||
|
|
||||
&.el-icon-s-check { |
|
||||
background-color: #F5686F; |
|
||||
} |
|
||||
|
|
||||
&.el-icon-video-camera { |
|
||||
background-color: #7CD734; |
|
||||
} |
|
||||
|
|
||||
&.el-icon-s-claim { |
|
||||
background-color: #FAAD14; |
|
||||
} |
|
||||
|
|
||||
&.el-icon-message-solid { |
|
||||
background-color: #2BCACD; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/* 操作按钮 */ |
|
||||
.ele-notice-actions > .ele-cell-content { |
|
||||
line-height: 42px; |
|
||||
text-align: center; |
|
||||
cursor: pointer; |
|
||||
|
|
||||
&:hover { |
|
||||
background-color: hsla(0, 0%, 60%, .05); |
|
||||
} |
|
||||
} |
|
||||
</style> |
|
||||
@ -1,136 +0,0 @@ |
|||||
<!-- 修改密码弹窗 --> |
|
||||
<template> |
|
||||
<el-dialog |
|
||||
:visible="visible" |
|
||||
title="修改密码" |
|
||||
width="400px" |
|
||||
@closed="onClose" |
|
||||
@update:visible="updateVisible" |
|
||||
:append-to-body="true" |
|
||||
:lock-scroll="false"> |
|
||||
<el-form |
|
||||
ref="form" |
|
||||
:model="form" |
|
||||
:rules="rules" |
|
||||
label-width="82px" |
|
||||
@keyup.enter.native="save"> |
|
||||
<el-form-item |
|
||||
label="旧密码:" |
|
||||
prop="old"> |
|
||||
<el-input |
|
||||
v-model="form.old" |
|
||||
placeholder="请输入旧密码" |
|
||||
show-password/> |
|
||||
</el-form-item> |
|
||||
<el-form-item |
|
||||
label="新密码:" |
|
||||
prop="password"> |
|
||||
<el-input |
|
||||
v-model="form.password" |
|
||||
placeholder="请输入新密码" |
|
||||
show-password/> |
|
||||
</el-form-item> |
|
||||
<el-form-item |
|
||||
label="确认密码:" |
|
||||
prop="password2"> |
|
||||
<el-input |
|
||||
v-model="form.password2" |
|
||||
placeholder="请再次输入新密码" |
|
||||
show-password/> |
|
||||
</el-form-item> |
|
||||
</el-form> |
|
||||
<div slot="footer"> |
|
||||
<el-button |
|
||||
@click="cancel">取消 |
|
||||
</el-button> |
|
||||
<el-button |
|
||||
type="primary" |
|
||||
@click="save">确定 |
|
||||
</el-button> |
|
||||
</div> |
|
||||
</el-dialog> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
name: 'ElePassword', |
|
||||
props: { |
|
||||
visible: Boolean |
|
||||
}, |
|
||||
data() { |
|
||||
let rePswRule = (rule, value, callback) => { |
|
||||
if (!value) { |
|
||||
callback(new Error('请再次输入新密码')); |
|
||||
} else if (value !== this.form.password) { |
|
||||
callback(new Error('两次输入密码不一致')); |
|
||||
} else { |
|
||||
callback(); |
|
||||
} |
|
||||
}; |
|
||||
return { |
|
||||
// 表单数据 |
|
||||
form: { |
|
||||
old: '', |
|
||||
password: '', |
|
||||
password2: '' |
|
||||
}, |
|
||||
// 表单验证 |
|
||||
rules: { |
|
||||
old: [ |
|
||||
{required: true, message: '请输入旧密码', trigger: 'blur'} |
|
||||
], |
|
||||
password: [ |
|
||||
{required: true, message: '请输入新密码', trigger: 'blur'} |
|
||||
], |
|
||||
password2: [ |
|
||||
{validator: rePswRule, trigger: 'blur'} |
|
||||
] |
|
||||
}, |
|
||||
// 按钮loading |
|
||||
loading: false |
|
||||
}; |
|
||||
}, |
|
||||
methods: { |
|
||||
/* 保存修改 */ |
|
||||
save() { |
|
||||
this.$refs['form'].validate((valid) => { |
|
||||
if (valid) { |
|
||||
this.loading = true; |
|
||||
let formData = new FormData(); |
|
||||
formData.append('old_password', this.form.old); |
|
||||
formData.append('password', this.form.password); |
|
||||
formData.append('password2', this.form.password2); |
|
||||
this.$http.post('/manager/passwordEdit', formData).then(res => { |
|
||||
this.loading = false; |
|
||||
if (res.data.code === 0) { |
|
||||
this.$message({type: 'success', message: res.data.msg}); |
|
||||
this.cancel(); |
|
||||
} else { |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
this.loading = false; |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
} else { |
|
||||
return false; |
|
||||
} |
|
||||
}); |
|
||||
}, |
|
||||
/* 取消 */ |
|
||||
cancel() { |
|
||||
this.updateVisible(false); |
|
||||
}, |
|
||||
/* 关闭回调 */ |
|
||||
onClose() { |
|
||||
this.form = {}; |
|
||||
this.$refs['form'].resetFields(); |
|
||||
this.loading = false; |
|
||||
}, |
|
||||
/* 修改visible */ |
|
||||
updateVisible(value) { |
|
||||
this.$emit('update:visible', value); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
@ -1,23 +0,0 @@ |
|||||
/** 主入口js */ |
|
||||
import Vue from 'vue'; |
|
||||
import App from './App.vue'; |
|
||||
import router from './router'; |
|
||||
import store from './store'; |
|
||||
import setting from './config/setting'; |
|
||||
import permission from '@/utils/permission'; |
|
||||
import VueClipboard from 'vue-clipboard2'; |
|
||||
import './config/axios-config'; |
|
||||
import EleAdmin from 'ele-admin'; |
|
||||
import './styles/index.scss'; |
|
||||
|
|
||||
Vue.config.productionTip = false; |
|
||||
Vue.prototype.$setting = setting; |
|
||||
Vue.use(EleAdmin, {size: 'medium'}); |
|
||||
Vue.use(permission); |
|
||||
Vue.use(VueClipboard); |
|
||||
|
|
||||
new Vue({ |
|
||||
router, |
|
||||
store, |
|
||||
render: h => h(App) |
|
||||
}).$mount('#app'); |
|
||||
@ -1,145 +0,0 @@ |
|||||
/** |
|
||||
* 路由配置 |
|
||||
*/ |
|
||||
import Vue from 'vue'; |
|
||||
import VueRouter from 'vue-router'; |
|
||||
import store from '@/store'; |
|
||||
import setting from '@/config/setting'; |
|
||||
import EleLayout from '@/layout'; |
|
||||
import {EleEmptyLayout, EleIframeLayout} from 'ele-admin'; |
|
||||
import NProgress from 'nprogress'; |
|
||||
|
|
||||
Vue.use(VueRouter); |
|
||||
|
|
||||
// 静态路由
|
|
||||
const routes = [ |
|
||||
{ |
|
||||
path: '/login', |
|
||||
component: () => import('@/views/login/login'), |
|
||||
meta: {title: '登录'} |
|
||||
}, |
|
||||
{ |
|
||||
path: '/forget', |
|
||||
component: () => import('@/views/login/forget'), |
|
||||
meta: {title: '忘记密码'} |
|
||||
}, |
|
||||
{ |
|
||||
path: '*', |
|
||||
component: () => import('@/views/exception/404'), |
|
||||
meta: {title: ''} |
|
||||
} |
|
||||
]; |
|
||||
|
|
||||
const router = new VueRouter({ |
|
||||
routes, |
|
||||
mode: 'history' // 把这个删掉就是hash模式
|
|
||||
}); |
|
||||
|
|
||||
// 路由守卫
|
|
||||
router.beforeEach((to, from, next) => { |
|
||||
NProgress.start(); |
|
||||
updateTitle(to); |
|
||||
// 判断是否登录
|
|
||||
if (setting.takeToken()) { |
|
||||
// 判断是否已经注册动态路由
|
|
||||
if (!store.state.user.menus) { |
|
||||
// 获取动态路由
|
|
||||
store.dispatch('user/getMenus').then(({menus, home}) => { |
|
||||
if (menus) { |
|
||||
router.addRoute({ |
|
||||
name: '/', |
|
||||
path: '/', |
|
||||
component: EleLayout, |
|
||||
redirect: setting.homePath || home, |
|
||||
children: menuToRoutes(menus) |
|
||||
}); |
|
||||
} |
|
||||
next({...to, replace: true}); |
|
||||
}).catch(() => { |
|
||||
next(); |
|
||||
}); |
|
||||
} else { |
|
||||
next(); |
|
||||
} |
|
||||
} else if (setting.whiteList.indexOf(to.path) !== -1) { |
|
||||
next(); // 在无需登录的白名单内
|
|
||||
} else { |
|
||||
// 未登录跳转登录页面
|
|
||||
next({path: '/login', query: to.path === '/' ? {} : {from: to.path}}); |
|
||||
} |
|
||||
}); |
|
||||
|
|
||||
router.afterEach(() => { |
|
||||
setTimeout(() => { |
|
||||
NProgress.done(true); |
|
||||
}, 300); |
|
||||
}); |
|
||||
|
|
||||
export default router; |
|
||||
|
|
||||
/** |
|
||||
* 菜单生成路由 |
|
||||
* @param menus |
|
||||
* @returns {[]} |
|
||||
*/ |
|
||||
function menuToRoutes(menus) { |
|
||||
if (!menus) { |
|
||||
return null; |
|
||||
} |
|
||||
let routes = []; |
|
||||
menus.forEach(item => { |
|
||||
const path = item.path; |
|
||||
if (path && !isUrl(path)) { |
|
||||
let meta = Object.assign({}, item.meta); |
|
||||
let component; |
|
||||
if (item.component) { |
|
||||
if (isUrl(item.component)) { |
|
||||
component = EleIframeLayout; |
|
||||
meta.iframe = item.component; |
|
||||
meta.hideFooter = true; |
|
||||
} else { |
|
||||
component = () => import('@/views' + item.component); |
|
||||
} |
|
||||
} else { |
|
||||
component = EleEmptyLayout; |
|
||||
} |
|
||||
routes.push({ |
|
||||
meta: meta, |
|
||||
name: item.path, |
|
||||
path: item.path, |
|
||||
component: component, |
|
||||
redirect: item.redirect, |
|
||||
children: menuToRoutes(item.children) |
|
||||
}); |
|
||||
} |
|
||||
}); |
|
||||
return routes; |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* 判断是否是网址 |
|
||||
* @param url |
|
||||
*/ |
|
||||
function isUrl(url) { |
|
||||
return url && ( |
|
||||
url.startsWith('http://') || |
|
||||
url.startsWith('https://') || |
|
||||
url.startsWith('//') |
|
||||
); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* 更新浏览器标题 |
|
||||
* @param route |
|
||||
*/ |
|
||||
function updateTitle(route) { |
|
||||
let names = []; |
|
||||
if (route && route.meta && route.meta.title) { |
|
||||
names.push(route.meta.title); |
|
||||
} |
|
||||
const appName = process.env.VUE_APP_NAME; |
|
||||
if (appName) { |
|
||||
names.push(appName); |
|
||||
} |
|
||||
document.title = names.join(' - '); |
|
||||
} |
|
||||
@ -1,4 +0,0 @@ |
|||||
export default { |
|
||||
theme: state => state.theme, |
|
||||
user: state => state.user |
|
||||
} |
|
||||
@ -1,21 +0,0 @@ |
|||||
/** |
|
||||
* vuex状态管理 |
|
||||
*/ |
|
||||
import Vue from 'vue'; |
|
||||
import Vuex from 'vuex'; |
|
||||
import getters from './getters'; |
|
||||
import theme from './modules/theme'; |
|
||||
import user from './modules/user'; |
|
||||
|
|
||||
Vue.use(Vuex); |
|
||||
|
|
||||
export default new Vuex.Store({ |
|
||||
state: {}, |
|
||||
mutations: {}, |
|
||||
actions: {}, |
|
||||
modules: { |
|
||||
theme, |
|
||||
user |
|
||||
}, |
|
||||
getters |
|
||||
}); |
|
||||
@ -1,302 +0,0 @@ |
|||||
/** |
|
||||
* 主题状态管理 license by http://eleadmin.com
|
|
||||
*/ |
|
||||
import setting from '@/config/setting'; |
|
||||
|
|
||||
// 获取本地缓存配置
|
|
||||
let cache = {}; |
|
||||
try { |
|
||||
cache = JSON.parse(localStorage.getItem(setting.themeStoreName)) || {}; |
|
||||
} catch (e) { |
|
||||
console.error(e); |
|
||||
} |
|
||||
|
|
||||
// 获取缓存的主题配置和缓存的主题css
|
|
||||
const cacheTheme = getCache(cache, [ |
|
||||
'color', 'sideStyle', 'headStyle', |
|
||||
'tabStyle', 'layoutStyle', 'bodyFull', |
|
||||
'fixedHeader', 'fixedSidebar', 'fixedBody', |
|
||||
'showTabs', 'logoAutoSize', 'colorfulIcon', |
|
||||
'sideUniqueOpen', 'showFooter', 'weakMode', 'darkMode' |
|
||||
], setting); |
|
||||
|
|
||||
// 恢复色弱模式
|
|
||||
if (cacheTheme.weakMode) { |
|
||||
document.body.classList.add('ele-admin-weak'); |
|
||||
} |
|
||||
|
|
||||
// 恢复主题色
|
|
||||
window.onload = function () { |
|
||||
changeTheme(cacheTheme.color, cacheTheme.darkMode).catch(e => { |
|
||||
console.error(e); |
|
||||
}); |
|
||||
} |
|
||||
|
|
||||
// 获取屏幕宽度
|
|
||||
const screenWidth = document.documentElement.clientWidth || document.body.clientWidth, |
|
||||
screenHeight = document.documentElement.clientHeight || document.body.clientHeight; |
|
||||
|
|
||||
export default { |
|
||||
namespaced: true, |
|
||||
state: { |
|
||||
// 侧边栏风格: 0亮色, 1暗色
|
|
||||
sideStyle: cacheTheme.sideStyle, |
|
||||
// 顶栏风格: 0亮色, 1暗色, 2主色
|
|
||||
headStyle: cacheTheme.headStyle, |
|
||||
// 标签页风格: 0默认, 1圆点, 2卡片
|
|
||||
tabStyle: cacheTheme.tabStyle, |
|
||||
// 布局风格: 0默认, 1顶部菜单风格, 2混合菜单风格
|
|
||||
layoutStyle: cacheTheme.layoutStyle, |
|
||||
// 是否固定侧栏
|
|
||||
fixedSidebar: cacheTheme.fixedSidebar, |
|
||||
// 是否固定顶栏
|
|
||||
fixedHeader: cacheTheme.fixedHeader, |
|
||||
// 是否固定主体
|
|
||||
fixedBody: cacheTheme.fixedBody, |
|
||||
// 内容区域宽度铺满
|
|
||||
bodyFull: cacheTheme.bodyFull, |
|
||||
// 是否开启多标签
|
|
||||
showTabs: cacheTheme.showTabs, |
|
||||
// logo是否自适应宽度
|
|
||||
logoAutoSize: cacheTheme.logoAutoSize, |
|
||||
// 侧栏是否多彩图标
|
|
||||
colorfulIcon: cacheTheme.colorfulIcon, |
|
||||
// 侧边栏是否只保持一个子菜单展开
|
|
||||
sideUniqueOpen: cacheTheme.sideUniqueOpen, |
|
||||
// 是否开启页脚
|
|
||||
showFooter: cacheTheme.showFooter, |
|
||||
// 是否是色弱模式
|
|
||||
weakMode: cacheTheme.weakMode, |
|
||||
// 是否是暗黑模式
|
|
||||
darkMode: cacheTheme.darkMode, |
|
||||
// 主题色
|
|
||||
color: cacheTheme.color, |
|
||||
// 是否折叠侧边栏
|
|
||||
collapse: screenWidth < 992, |
|
||||
// 当前屏幕宽度
|
|
||||
screenWidth: screenWidth, |
|
||||
// 当前屏幕高度
|
|
||||
screenHeight: screenHeight |
|
||||
}, |
|
||||
mutations: { |
|
||||
SET: (state, obj) => { |
|
||||
state[obj.key] = obj.value; |
|
||||
// 开关色弱模式
|
|
||||
if ('weakMode' === obj.key) { |
|
||||
if (obj.value) { |
|
||||
document.body.classList.add('ele-admin-weak'); |
|
||||
} else { |
|
||||
document.body.classList.remove('ele-admin-weak'); |
|
||||
} |
|
||||
} |
|
||||
// 缓存修改的配置
|
|
||||
if (['collapse', 'screenWidth', 'screenHeight'].indexOf(obj.key) === -1) { |
|
||||
let temp = JSON.parse(localStorage.getItem(setting.themeStoreName) || '{}'); |
|
||||
temp[obj.key] = obj.value; |
|
||||
localStorage.setItem(setting.themeStoreName, JSON.stringify(temp)); |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
actions: { |
|
||||
/** |
|
||||
* 修改配置 |
|
||||
* @param commit |
|
||||
* @param obj |
|
||||
*/ |
|
||||
set({commit}, obj) { |
|
||||
commit('SET', obj); |
|
||||
}, |
|
||||
/** |
|
||||
* 切换配置(boolean类型的配置) |
|
||||
* @param commit |
|
||||
* @param state |
|
||||
* @param key |
|
||||
*/ |
|
||||
toggle({commit, state}, key) { |
|
||||
commit('SET', {key: key, value: !state[key]}); |
|
||||
}, |
|
||||
/** |
|
||||
* 更新屏幕尺寸 |
|
||||
* @param commit |
|
||||
* @param state |
|
||||
*/ |
|
||||
updateScreen({commit, state}) { |
|
||||
const w = document.documentElement.clientWidth || document.body.clientWidth, |
|
||||
h = document.documentElement.clientHeight || document.body.clientHeight; |
|
||||
if (w !== state.screenWidth) { |
|
||||
commit('SET', {key: 'screenWidth', value: w}); |
|
||||
} |
|
||||
if (h !== state.screenHeight) { |
|
||||
commit('SET', {key: 'screenHeight', value: h}); |
|
||||
} |
|
||||
}, |
|
||||
/** |
|
||||
* 切换主题色 |
|
||||
* @param commit |
|
||||
* @param state |
|
||||
* @param color |
|
||||
* @returns {Promise<>} |
|
||||
*/ |
|
||||
setColor({commit, state}, color) { |
|
||||
return new Promise((resolve, reject) => { |
|
||||
changeTheme(color, state.darkMode).then(() => { |
|
||||
commit('SET', {key: 'color', value: color}); |
|
||||
return resolve(); |
|
||||
}).catch(e => { |
|
||||
reject(e); |
|
||||
}); |
|
||||
}); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* 获取缓存配置项 |
|
||||
* @param cache 缓存数据 |
|
||||
* @param k 配置项 |
|
||||
* @param v 默认值 |
|
||||
*/ |
|
||||
function getCache(cache, k, v) { |
|
||||
if (Array.isArray(k)) { |
|
||||
let obj = {}; |
|
||||
k.forEach(t => { |
|
||||
obj[t] = (cache[t] === null || cache[t] === undefined) ? v[t] : cache[t]; |
|
||||
}); |
|
||||
return obj; |
|
||||
} else { |
|
||||
if (cache[k] === null || cache[k] === undefined) { |
|
||||
return v; |
|
||||
} |
|
||||
return cache[k]; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* 切换主题 |
|
||||
* @param color 主题色 |
|
||||
* @param darkMode 是否是暗黑模式 |
|
||||
* @returns {Promise<>} |
|
||||
*/ |
|
||||
function changeTheme(color, darkMode) { |
|
||||
const version = process.env.VUE_APP_VERSION; |
|
||||
// 对应的css文件名
|
|
||||
let colorCss; |
|
||||
if (darkMode) { |
|
||||
if (color) { |
|
||||
colorCss = color + '-dark'; |
|
||||
} else { |
|
||||
colorCss = 'dark'; |
|
||||
} |
|
||||
} else { |
|
||||
colorCss = color; |
|
||||
} |
|
||||
// 获取缓存的主题css
|
|
||||
let themeCache = {}, |
|
||||
cacheStoreName = setting.themeStoreName + '-cache'; |
|
||||
if (window.eleThemeCache) { |
|
||||
themeCache = window.eleThemeCache; |
|
||||
} else { |
|
||||
try { |
|
||||
const localCache = JSON.parse(localStorage.getItem(cacheStoreName) || '{}'); |
|
||||
if (localCache && version === localCache.version && localCache.cache) { |
|
||||
themeCache = localCache.cache; |
|
||||
window.eleThemeCache = themeCache; |
|
||||
} |
|
||||
} catch (e) { |
|
||||
console.error(e); |
|
||||
} |
|
||||
} |
|
||||
// 加载主题css
|
|
||||
return new Promise((resolve, reject) => { |
|
||||
// 恢复默认主题
|
|
||||
if (!colorCss) { |
|
||||
removeTheme(); |
|
||||
return resolve(); |
|
||||
} |
|
||||
// 主题css已经缓存过
|
|
||||
if (themeCache[colorCss]) { |
|
||||
removeTheme(); // 移除上次的主题
|
|
||||
let elem = document.createElement('style'); |
|
||||
elem.id = `ele-theme-${colorCss}`; |
|
||||
elem.setAttribute('type', 'text/css'); |
|
||||
elem.innerHTML = themeCache[colorCss]; |
|
||||
document.head.appendChild(elem); |
|
||||
return resolve(); |
|
||||
} |
|
||||
// 主题css的js模块已被加载过
|
|
||||
const oldElem = document.head.querySelector(`#ele-theme-${colorCss}-js`); |
|
||||
if (oldElem) { |
|
||||
removeTheme(); // 移除上次的主题
|
|
||||
let elem = document.createElement('link'); |
|
||||
elem.id = `ele-theme-${colorCss}`; |
|
||||
elem.setAttribute('type', 'text/css'); |
|
||||
elem.setAttribute('rel', 'stylesheet'); |
|
||||
elem.setAttribute('href', oldElem.getAttribute('ele-css')); |
|
||||
document.head.appendChild(elem); |
|
||||
return resolve(); |
|
||||
} |
|
||||
// 把head下面相关元素标记为非主题元素
|
|
||||
const nid = ':not([id^="ele-theme-"])', sel = `style${nid},link${nid},script${nid}`; |
|
||||
document.head.querySelectorAll(sel).forEach(elem => { |
|
||||
if (!elem.getAttribute('ele-theme')) { |
|
||||
elem.setAttribute('ele-theme', 'no'); |
|
||||
} |
|
||||
}); |
|
||||
// 加载主题css模块
|
|
||||
import(`@/styles/theme/${colorCss}.scss`).then(() => { |
|
||||
removeTheme(); // 移除上次的主题
|
|
||||
// 获取import之后的主题标签
|
|
||||
let elem = document.head.querySelectorAll('style:not([ele-theme="no"])'); |
|
||||
elem = elem.length ? elem[elem.length - 1] : null; |
|
||||
if (!elem) { |
|
||||
// 可能是style标签也可能是link标签
|
|
||||
elem = document.head.querySelectorAll('link:not([ele-theme="no"])'); |
|
||||
elem = elem.length ? elem[elem.length - 1] : null; |
|
||||
if (!elem) { |
|
||||
return reject(new Error('theme element not found.')); |
|
||||
} |
|
||||
// 再找到对应的主题js模块的标签
|
|
||||
const href = elem.getAttribute('href'), |
|
||||
uuid = href.substring(href.indexOf('chunk-'), href.indexOf('.')), |
|
||||
qs = `script[src^="/js/${uuid}"]:not([ele-theme="no"])`; |
|
||||
let node = document.head.querySelectorAll(qs); |
|
||||
if (node.length) { |
|
||||
node[node.length - 1].id = `ele-theme-${colorCss}-js`; |
|
||||
// 记录css地址
|
|
||||
node[node.length - 1].setAttribute('ele-css', href); |
|
||||
} |
|
||||
} |
|
||||
elem.id = `ele-theme-${colorCss}`; |
|
||||
// 缓存主题css
|
|
||||
if (elem.innerHTML) { |
|
||||
let cache = {}; |
|
||||
cache[colorCss] = elem.innerHTML; |
|
||||
try { |
|
||||
localStorage.setItem(cacheStoreName, JSON.stringify({ |
|
||||
version: version, |
|
||||
cache: cache |
|
||||
})); |
|
||||
} catch (e) { |
|
||||
console.error(e); |
|
||||
} |
|
||||
if (!window.eleThemeCache) { |
|
||||
window.eleThemeCache = {}; |
|
||||
} |
|
||||
window.eleThemeCache[colorCss] = cache[colorCss]; |
|
||||
} |
|
||||
return resolve(); |
|
||||
}).catch(e => { |
|
||||
reject(e); |
|
||||
}); |
|
||||
}); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* 移除主题 |
|
||||
*/ |
|
||||
function removeTheme() { |
|
||||
const sel = 'style[id^="ele-theme-"],link[id^="ele-theme-"]'; |
|
||||
document.head.querySelectorAll(sel).forEach(elem => { |
|
||||
elem.parentNode.removeChild(elem); |
|
||||
}); |
|
||||
} |
|
||||
@ -1,259 +0,0 @@ |
|||||
/** |
|
||||
* 登录状态管理 |
|
||||
*/ |
|
||||
import axios from 'axios'; |
|
||||
import {util} from 'ele-admin'; |
|
||||
import setting from '@/config/setting'; |
|
||||
|
|
||||
export default { |
|
||||
namespaced: true, |
|
||||
state: { |
|
||||
// 当前用户信息
|
|
||||
user: setting.takeUser(), |
|
||||
// 当前用户权限
|
|
||||
authorities: [], |
|
||||
// 当前用户角色
|
|
||||
roles: [], |
|
||||
// 当前用户的菜单
|
|
||||
menus: null, |
|
||||
// 当前打开的选项卡
|
|
||||
tabs: [] |
|
||||
}, |
|
||||
mutations: { |
|
||||
SET: (state, obj) => { |
|
||||
state[obj.key] = obj.value; |
|
||||
}, |
|
||||
SET_TOKEN: (state, obj) => { |
|
||||
setting.cacheToken(obj.token, obj.remember); |
|
||||
state.token = obj.token; |
|
||||
if (!obj.token) { |
|
||||
state.user = {}; |
|
||||
state.menus = null; |
|
||||
state.tabs = []; |
|
||||
setting.cacheUser(); |
|
||||
} |
|
||||
}, |
|
||||
TAB_PUSH(state, obj) { |
|
||||
if (!state.tabs.some(r => r.path === obj.path)) { |
|
||||
state.tabs.push(obj); |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
actions: { |
|
||||
/** |
|
||||
* 缓存token |
|
||||
* @param commit |
|
||||
* @param token {String, {token: String, remember: String}} |
|
||||
*/ |
|
||||
setToken({commit}, token) { |
|
||||
let remember = true; |
|
||||
if (typeof token === 'object') { |
|
||||
remember = token.remember; |
|
||||
token = token.token; |
|
||||
} |
|
||||
commit('SET_TOKEN', {token: token, remember: remember}); |
|
||||
}, |
|
||||
/** |
|
||||
* 移除token |
|
||||
* @param commit |
|
||||
*/ |
|
||||
removeToken({commit}) { |
|
||||
commit('SET_TOKEN', {}); |
|
||||
}, |
|
||||
/** |
|
||||
* 缓存用户信息 |
|
||||
* @param commit |
|
||||
* @param user {Object} 用户信息 |
|
||||
*/ |
|
||||
setUser({commit}, user) { |
|
||||
setting.cacheUser(user); |
|
||||
commit('SET', {key: 'user', value: user}); |
|
||||
}, |
|
||||
/** |
|
||||
* 设置用户权限 |
|
||||
* @param commit |
|
||||
* @param authorities {Array<String>} 权限 |
|
||||
*/ |
|
||||
setAuthorities({commit}, authorities) { |
|
||||
commit('SET', {key: 'authorities', value: authorities}); |
|
||||
}, |
|
||||
/** |
|
||||
* 设置用户角色 |
|
||||
* @param commit |
|
||||
* @param roles {Array<String>} 角色 |
|
||||
*/ |
|
||||
setRoles({commit}, roles) { |
|
||||
commit('SET', {key: 'roles', value: roles}); |
|
||||
}, |
|
||||
/** |
|
||||
* 设置用户菜单 |
|
||||
* @param commit |
|
||||
* @param menus {Array<Object>} 菜单 |
|
||||
*/ |
|
||||
setMenus({commit}, menus) { |
|
||||
commit('SET', {key: 'menus', value: menus}); |
|
||||
}, |
|
||||
/** |
|
||||
* 获取用户菜单路由 |
|
||||
* @param commit |
|
||||
* @returns {Promise<Object>} {menus: Array, home: String} |
|
||||
*/ |
|
||||
getMenus({commit}) { |
|
||||
return new Promise((resolve, reject) => { |
|
||||
if (!setting.menuUrl) { |
|
||||
let menus = setting.menus || []; |
|
||||
commit('SET', {key: 'menus', value: menus}); |
|
||||
return resolve({menus: menus}); |
|
||||
} |
|
||||
axios.get(setting.menuUrl).then(res => { |
|
||||
let result = setting.parseMenu ? setting.parseMenu(res.data) : res.data; |
|
||||
let menus = result.data, home = null; |
|
||||
if (!menus) { |
|
||||
return reject(new Error(result.msg)); |
|
||||
} |
|
||||
util.eachTreeData(menus, item => { |
|
||||
if (setting.parseMenuItem) { |
|
||||
item = setting.parseMenuItem(item); |
|
||||
} |
|
||||
item.meta = Object.assign({ |
|
||||
title: item.title, |
|
||||
icon: item.icon, |
|
||||
hide: item.hide, |
|
||||
active: item.active || item.uid, |
|
||||
hideFooter: item.hideFooter |
|
||||
}, item.meta); |
|
||||
if (!item.children || !item.children.length) { |
|
||||
if (!home && item.path && !( |
|
||||
item.path.startsWith('http://') || |
|
||||
item.path.startsWith('https://') || |
|
||||
item.path.startsWith('//') |
|
||||
)) { |
|
||||
home = item.path; |
|
||||
if (!setting.homeTitle) { |
|
||||
setting.homeTitle = item.title; |
|
||||
} |
|
||||
} |
|
||||
} else if (item.children[0].path) { |
|
||||
if (!item.redirect) { |
|
||||
item.redirect = item.children[0].path; |
|
||||
} |
|
||||
if (!item.path) { |
|
||||
const cp = item.children[0].path; |
|
||||
item.path = cp.substring(0, cp.lastIndexOf('/')); |
|
||||
} |
|
||||
} |
|
||||
}); |
|
||||
commit('SET', {key: 'menus', value: menus}); |
|
||||
resolve({menus: menus, home: home}); |
|
||||
}).catch(e => { |
|
||||
reject(e); |
|
||||
}); |
|
||||
}); |
|
||||
}, |
|
||||
/** |
|
||||
* 添加新tab |
|
||||
* @param commit |
|
||||
* @param obj {{path: String, title: String}} tab信息 |
|
||||
*/ |
|
||||
tabAdd({commit}, obj) { |
|
||||
commit('TAB_PUSH', obj); |
|
||||
}, |
|
||||
/** |
|
||||
* 关闭指定tab |
|
||||
* @param commit |
|
||||
* @param state |
|
||||
* @param path {String} tab路由 |
|
||||
* @returns {Promise<Number>} 前一个tab位置 |
|
||||
*/ |
|
||||
tabRemove({commit, state}, path) { |
|
||||
return new Promise((resolve) => { |
|
||||
let lastIndex = -1, lastPath, last; |
|
||||
for (let i = 0; i < state.tabs.length; i++) { |
|
||||
if (state.tabs[i].path === path) { |
|
||||
break; |
|
||||
} |
|
||||
lastIndex = i; |
|
||||
last = state.tabs[i]; |
|
||||
lastPath = last.path; |
|
||||
} |
|
||||
commit('SET', { |
|
||||
key: 'tabs', |
|
||||
value: state.tabs.filter(d => d.path !== path) |
|
||||
}); |
|
||||
resolve({ |
|
||||
lastIndex: lastIndex, |
|
||||
lastPath: lastPath, |
|
||||
last: last |
|
||||
}); |
|
||||
}); |
|
||||
}, |
|
||||
/** |
|
||||
* 关闭所有tab |
|
||||
* @param commit |
|
||||
*/ |
|
||||
tabRemoveAll({commit}) { |
|
||||
commit('SET', {key: 'tabs', value: []}); |
|
||||
}, |
|
||||
/** |
|
||||
* 关闭左侧tab |
|
||||
* @param commit |
|
||||
* @param state |
|
||||
* @param path {String} tab路由 |
|
||||
*/ |
|
||||
tabRemoveLeft({commit, state}, path) { |
|
||||
for (let i = 0; i < state.tabs.length; i++) { |
|
||||
if (state.tabs[i].path === path) { |
|
||||
commit('SET', { |
|
||||
key: 'tabs', |
|
||||
value: state.tabs.slice(i) |
|
||||
}); |
|
||||
break; |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
/** |
|
||||
* 关闭右侧tab |
|
||||
* @param commit |
|
||||
* @param state |
|
||||
* @param path {String} tab路由 |
|
||||
*/ |
|
||||
tabRemoveRight({commit, state}, path) { |
|
||||
for (let i = 0; i < state.tabs.length; i++) { |
|
||||
if (state.tabs[i].path === path) { |
|
||||
commit('SET', { |
|
||||
key: 'tabs', |
|
||||
value: state.tabs.slice(0, i + 1) |
|
||||
}); |
|
||||
break; |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
/** |
|
||||
* 关闭其他tab |
|
||||
* @param commit |
|
||||
* @param state |
|
||||
* @param path {String} tab路由 |
|
||||
*/ |
|
||||
tabRemoveOther({commit, state}, path) { |
|
||||
commit('SET', { |
|
||||
key: 'tabs', |
|
||||
value: state.tabs.filter(d => d.path === path) |
|
||||
}); |
|
||||
}, |
|
||||
/** |
|
||||
* 修改指定tab标题 |
|
||||
* @param commit |
|
||||
* @param state |
|
||||
* @param obj {{path: String, title: String}} |
|
||||
*/ |
|
||||
tabSetTitle({commit, state}, obj) { |
|
||||
let i = state.tabs.findIndex(d => d.path === obj.path); |
|
||||
let tabs = state.tabs.slice(0, i).concat([ |
|
||||
Object.assign({}, state.tabs[i], { |
|
||||
title: obj.title |
|
||||
}) |
|
||||
]).concat(state.tabs.slice(i + 1)); |
|
||||
commit('SET', {key: 'tabs', value: tabs}); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,63 +0,0 @@ |
|||||
/** 如果需要自己定义一些全局样式写在这里 */ |
|
||||
|
|
||||
$--ele-font-path: "~ele-admin/packages/style/fonts"; |
|
||||
|
|
||||
@import "./var.scss"; |
|
||||
@import "~ele-admin/packages/style/index.scss"; |
|
||||
|
|
||||
/* 异常页面 */ |
|
||||
.ele-exception { |
|
||||
margin: 145px 0; |
|
||||
|
|
||||
.ele-exception-img, |
|
||||
.ele-exception-content { |
|
||||
margin: 15px 30px; |
|
||||
display: inline-block; |
|
||||
vertical-align: middle; |
|
||||
} |
|
||||
|
|
||||
.ele-exception-content > h1 { |
|
||||
font-size: 72px; |
|
||||
font-weight: 600; |
|
||||
margin: 0 0 20px 0; |
|
||||
} |
|
||||
|
|
||||
&:not(.ele-exception-dark) .ele-exception-content > h1 { |
|
||||
color: #515A6E; |
|
||||
} |
|
||||
|
|
||||
.ele-exception-content > p { |
|
||||
font-size: 20px; |
|
||||
margin: 0 0 25px 0; |
|
||||
} |
|
||||
|
|
||||
&:not(.ele-exception-dark) .ele-exception-content > p { |
|
||||
color: #808695; |
|
||||
} |
|
||||
|
|
||||
&.ele-exception-dark .ele-exception-img { |
|
||||
opacity: .7; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
@media screen and (max-width: 768px) { |
|
||||
.ele-exception { |
|
||||
margin: 40px 0; |
|
||||
|
|
||||
.ele-exception-img { |
|
||||
margin: 0; |
|
||||
|
|
||||
img { |
|
||||
max-height: 200px; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.ele-exception-content { |
|
||||
text-align: center; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
//表格不对齐bug |
|
||||
.el-table th.gutter { |
|
||||
display: table-cell !important; |
|
||||
} |
|
||||
@ -1,5 +0,0 @@ |
|||||
/** 明青主题暗黑 */ |
|
||||
|
|
||||
$--color-primary: #2BCCCE; |
|
||||
|
|
||||
@import "./dark.scss"; |
|
||||
@ -1,6 +0,0 @@ |
|||||
/** 明青主题 */ |
|
||||
|
|
||||
$--color-primary: #2BCCCE; |
|
||||
|
|
||||
@import "../var.scss"; |
|
||||
@import "~ele-admin/packages/style/themes/default.scss"; |
|
||||
@ -1,4 +0,0 @@ |
|||||
/** 暗黑主题 */ |
|
||||
|
|
||||
@import "../var.scss"; |
|
||||
@import "~ele-admin/packages/style/themes/dark.scss"; |
|
||||
@ -1,5 +0,0 @@ |
|||||
/** 薄暮主题暗黑 */ |
|
||||
|
|
||||
$--color-primary: #5F80C7; |
|
||||
|
|
||||
@import "./dark.scss"; |
|
||||
@ -1,6 +0,0 @@ |
|||||
/** 薄暮主题 */ |
|
||||
|
|
||||
$--color-primary: #5F80C7; |
|
||||
|
|
||||
@import "../var.scss"; |
|
||||
@import "~ele-admin/packages/style/themes/default.scss"; |
|
||||
@ -1,5 +0,0 @@ |
|||||
/** 极客蓝主题暗黑 */ |
|
||||
|
|
||||
$--color-primary: #32A2D4; |
|
||||
|
|
||||
@import "./dark.scss"; |
|
||||
@ -1,6 +0,0 @@ |
|||||
/** 极客蓝主题 */ |
|
||||
|
|
||||
$--color-primary: #32A2D4; |
|
||||
|
|
||||
@import "../var.scss"; |
|
||||
@import "~ele-admin/packages/style/themes/default.scss"; |
|
||||
@ -1,5 +0,0 @@ |
|||||
/** 极光绿主题暗黑 */ |
|
||||
|
|
||||
$--color-primary: #33CC99; |
|
||||
|
|
||||
@import "./dark.scss"; |
|
||||
@ -1,6 +0,0 @@ |
|||||
/** 极光绿主题 */ |
|
||||
|
|
||||
$--color-primary: #33CC99; |
|
||||
|
|
||||
@import "../var.scss"; |
|
||||
@import "~ele-admin/packages/style/themes/default.scss"; |
|
||||
@ -1,5 +0,0 @@ |
|||||
/** 酱紫主题暗黑 */ |
|
||||
|
|
||||
$--color-primary: #9266F9; |
|
||||
|
|
||||
@import "./dark.scss"; |
|
||||
@ -1,6 +0,0 @@ |
|||||
/** 酱紫主题 */ |
|
||||
|
|
||||
$--color-primary: #9266F9; |
|
||||
|
|
||||
@import "../var.scss"; |
|
||||
@import "~ele-admin/packages/style/themes/default.scss"; |
|
||||
@ -1,5 +0,0 @@ |
|||||
/** 日暮主题暗黑 */ |
|
||||
|
|
||||
$--color-primary: #FAAD14; |
|
||||
|
|
||||
@import "./dark.scss"; |
|
||||
@ -1,6 +0,0 @@ |
|||||
/** 日暮主题 */ |
|
||||
|
|
||||
$--color-primary: #FAAD14; |
|
||||
|
|
||||
@import "../var.scss"; |
|
||||
@import "~ele-admin/packages/style/themes/default.scss"; |
|
||||
@ -1,5 +0,0 @@ |
|||||
/** 火山主题暗黑 */ |
|
||||
|
|
||||
$--color-primary: #F5686F; |
|
||||
|
|
||||
@import "./dark.scss"; |
|
||||
@ -1,6 +0,0 @@ |
|||||
/** 火山主题 */ |
|
||||
|
|
||||
$--color-primary: #F5686F; |
|
||||
|
|
||||
@import "../var.scss"; |
|
||||
@import "~ele-admin/packages/style/themes/default.scss"; |
|
||||
@ -1,2 +0,0 @@ |
|||||
/** 如果需要覆盖框架样式变量写在这里 */ |
|
||||
$--sidebar-width: 220px; // 侧边栏宽度 |
|
||||
@ -1,128 +0,0 @@ |
|||||
/** |
|
||||
* 权限、角色控制组件 |
|
||||
*/ |
|
||||
import store from '@/store'; |
|
||||
|
|
||||
export default { |
|
||||
install(Vue) { |
|
||||
// 添加全局方法
|
|
||||
Vue.prototype.$hasRole = this.hasRole; |
|
||||
Vue.prototype.$hasAnyRole = this.hasAnyRole; |
|
||||
Vue.prototype.$hasPermission = this.hasPermission; |
|
||||
Vue.prototype.$hasAnyPermission = this.hasAnyPermission; |
|
||||
|
|
||||
// 添加自定义指令
|
|
||||
Vue.directive('role', { |
|
||||
inserted: (el, binding) => { |
|
||||
if (!this.hasRole(binding.value)) { |
|
||||
el.parentNode && el.parentNode.removeChild(el); |
|
||||
} |
|
||||
} |
|
||||
}); |
|
||||
Vue.directive('any-role', { |
|
||||
inserted: (el, binding) => { |
|
||||
if (!this.hasAnyRole(binding.value)) { |
|
||||
el.parentNode && el.parentNode.removeChild(el); |
|
||||
} |
|
||||
} |
|
||||
}); |
|
||||
Vue.directive('permission', { |
|
||||
inserted: (el, binding) => { |
|
||||
if (!this.hasPermission(binding.value)) { |
|
||||
el.parentNode && el.parentNode.removeChild(el); |
|
||||
} |
|
||||
} |
|
||||
}); |
|
||||
Vue.directive('any-permission', { |
|
||||
inserted: (el, binding) => { |
|
||||
if (!this.hasAnyPermission(binding.value)) { |
|
||||
el.parentNode && el.parentNode.removeChild(el); |
|
||||
} |
|
||||
} |
|
||||
}); |
|
||||
}, |
|
||||
/** |
|
||||
* 是否有某些角色 |
|
||||
* @param role {String, Array<String>} 角色字符或字符数组 |
|
||||
* @returns {boolean} |
|
||||
*/ |
|
||||
hasRole(role) { |
|
||||
const data = store.state.user ? store.state.user.roles : null; |
|
||||
return arrayHas(data, role); |
|
||||
}, |
|
||||
/** |
|
||||
* 是否有任意角色 |
|
||||
* @param role {String, Array<String>} 角色字符或字符数组 |
|
||||
* @returns {boolean} |
|
||||
*/ |
|
||||
hasAnyRole(role) { |
|
||||
const data = store.state.user ? store.state.user.roles : null; |
|
||||
return arrayHasAny(data, role); |
|
||||
}, |
|
||||
/** |
|
||||
* 是否有某些权限 |
|
||||
* @param auth {String, Array<String>} 权限字符或字符数组 |
|
||||
* @returns {boolean} |
|
||||
*/ |
|
||||
hasPermission(auth) { |
|
||||
const data = store.state.user ? store.state.user.authorities : null; |
|
||||
return arrayHas(data, auth); |
|
||||
}, |
|
||||
/** |
|
||||
* 是否有任意权限 |
|
||||
* @param auth {String, Array<String>} 权限字符或字符数组 |
|
||||
* @returns {boolean} |
|
||||
*/ |
|
||||
hasAnyPermission(auth) { |
|
||||
const data = store.state.user ? store.state.user.authorities : null; |
|
||||
return arrayHasAny(data, auth); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* 数组是否有某些值 |
|
||||
* @param array {Array<String>} 数组 |
|
||||
* @param obj {String, Array<String>} 值 |
|
||||
* @returns {boolean} |
|
||||
*/ |
|
||||
function arrayHas(array, obj) { |
|
||||
if (!obj) { |
|
||||
return true; |
|
||||
} |
|
||||
if (!array) { |
|
||||
return false; |
|
||||
} |
|
||||
if (Array.isArray(obj)) { |
|
||||
for (let i = 0; i < obj.length; i++) { |
|
||||
if (array.indexOf(obj[i]) === -1) { |
|
||||
return false; |
|
||||
} |
|
||||
} |
|
||||
return true; |
|
||||
} |
|
||||
return array.indexOf(obj) !== -1; |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* 数组是否有任意值 |
|
||||
* @param array {Array<String>} 数组 |
|
||||
* @param obj {String, Array<String>} 值 |
|
||||
* @returns {boolean} |
|
||||
*/ |
|
||||
function arrayHasAny(array, obj) { |
|
||||
if (!obj) { |
|
||||
return true; |
|
||||
} |
|
||||
if (!array) { |
|
||||
return false; |
|
||||
} |
|
||||
if (Array.isArray(obj)) { |
|
||||
for (let i = 0; i < obj.length; i++) { |
|
||||
if (array.indexOf(obj[i]) !== -1) { |
|
||||
return true; |
|
||||
} |
|
||||
} |
|
||||
return false; |
|
||||
} |
|
||||
return array.indexOf(obj) !== -1; |
|
||||
} |
|
||||
@ -1,202 +0,0 @@ |
|||||
<!-- 用户编辑弹窗 --> |
|
||||
<template> |
|
||||
<el-dialog |
|
||||
:title="isUpdate?'修改广告':'添加广告'" |
|
||||
:visible="visible" |
|
||||
width="600px" |
|
||||
:destroy-on-close="true" |
|
||||
:lock-scroll="false" |
|
||||
custom-class="ele-dialog-form" |
|
||||
@update:visible="updateVisible"> |
|
||||
<el-form |
|
||||
:model="form" |
|
||||
ref="form" |
|
||||
:rules="rules" |
|
||||
label-width="82px"> |
|
||||
<el-row :gutter="15"> |
|
||||
<el-col> |
|
||||
<el-form-item |
|
||||
label="名称:" |
|
||||
prop="name"> |
|
||||
<el-input |
|
||||
v-model="form.name" |
|
||||
placeholder="请输入广告名称" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item |
|
||||
label="排序号:" |
|
||||
prop="sortNumber"> |
|
||||
<el-input-number |
|
||||
v-model="form.sort" |
|
||||
controls-position="right" |
|
||||
:min="0" |
|
||||
placeholder="请输入排序号" |
|
||||
class="ele-fluid ele-text-left"/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item |
|
||||
label="跳转链接:" |
|
||||
prop="url"> |
|
||||
<el-input |
|
||||
v-model="form.url" |
|
||||
placeholder="请输入跳转链接" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="起止日期:" prop="datetime"> |
|
||||
<el-date-picker |
|
||||
v-model="form.datetime" |
|
||||
type="daterange" |
|
||||
unlink-panels range-separator="-" |
|
||||
start-placeholder="开始日期" |
|
||||
end-placeholder="结束日期" |
|
||||
value-format="yyyy-MM-dd" |
|
||||
format="yyyy-MM-dd" |
|
||||
class="ele-fluid"/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="图片"> |
|
||||
<el-row> |
|
||||
<el-col> |
|
||||
<el-input |
|
||||
v-model="form.image" |
|
||||
placeholder="请上传图片" |
|
||||
clearable/> |
|
||||
<el-upload |
|
||||
class="upload-demo" |
|
||||
:show-file-list="false" |
|
||||
:action="this.uploadImage+'?upload_type=img'" |
|
||||
:on-success="afterUploadImage"> |
|
||||
<img v-if="form.image" :src="form.image" width="150" height="150" class="avatar"> |
|
||||
<i v-else class="el-icon-plus avatar-uploader-icon"></i> |
|
||||
</el-upload> |
|
||||
</el-col> |
|
||||
</el-row> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="描述:"> |
|
||||
<el-input |
|
||||
v-model="form.desc" |
|
||||
placeholder="请输入描述" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
</el-col> |
|
||||
</el-row> |
|
||||
</el-form> |
|
||||
<div slot="footer"> |
|
||||
<el-button |
|
||||
@click="updateVisible(false)">取消 |
|
||||
</el-button> |
|
||||
<el-button |
|
||||
type="primary" |
|
||||
@click="save" |
|
||||
:loading="loading">保存 |
|
||||
</el-button> |
|
||||
</div> |
|
||||
</el-dialog> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
|
|
||||
import setting from "@/config/setting"; |
|
||||
|
|
||||
export default { |
|
||||
name: 'AdDataEdit', |
|
||||
props: { |
|
||||
// 弹窗是否打开 |
|
||||
visible: Boolean, |
|
||||
// 修改回显的数据 |
|
||||
data: Object, |
|
||||
|
|
||||
}, |
|
||||
data() { |
|
||||
return { |
|
||||
// 表单数据 |
|
||||
form: Object.assign({ |
|
||||
ad_id:this.$route.query.ad_id |
|
||||
}, this.data), |
|
||||
// 表单验证规则 |
|
||||
rules: { |
|
||||
name: [ |
|
||||
{required: true, message: '请输入广告名称', trigger: 'blur'} |
|
||||
], |
|
||||
sort: [ |
|
||||
{required: true, message: '请输入广告排序', trigger: 'blur'} |
|
||||
], |
|
||||
|
|
||||
}, |
|
||||
// 提交状态 |
|
||||
loading: false, |
|
||||
// 是否是修改 |
|
||||
isUpdate: false, |
|
||||
// 角色列表 |
|
||||
tagLists: [], |
|
||||
uploadImage: setting.uploadImageUrl, |
|
||||
} |
|
||||
}, |
|
||||
watch: { |
|
||||
data() { |
|
||||
if (this.data) { |
|
||||
this.form = Object.assign({}, this.data); |
|
||||
this.isUpdate = true; |
|
||||
console.log(222) |
|
||||
} else { |
|
||||
this.form = {}; |
|
||||
this.$set(this.form,'ad_id',this.$route.query.ad_id) |
|
||||
this.isUpdate = false; |
|
||||
console.log(1111) |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
mounted() { |
|
||||
|
|
||||
}, |
|
||||
methods: { |
|
||||
afterUploadImage(response) { |
|
||||
if (response.code != 0 || response.url == '') { |
|
||||
this.$message.error(response.msg) |
|
||||
} else { |
|
||||
this.$set(this.form,'image',response.url) |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
/* 保存编辑 */ |
|
||||
save() { |
|
||||
this.$refs['form'].validate((valid) => { |
|
||||
if (valid) { |
|
||||
this.loading = true; |
|
||||
|
|
||||
this.$http.post('/AdData/' + (this.isUpdate ? 'edit' : 'add'), this.form).then(res => { |
|
||||
this.loading = false; |
|
||||
if (res.data.code === 0) { |
|
||||
this.$message({type: 'success', message: res.data.msg}); |
|
||||
if (!this.isUpdate) { |
|
||||
this.$set(this.form,'ad_id',this.$route.query.ad_id) |
|
||||
this.form = {}; |
|
||||
} |
|
||||
this.updateVisible(false); |
|
||||
this.$emit('done'); |
|
||||
} else { |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
this.loading = false; |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
} else { |
|
||||
return false; |
|
||||
} |
|
||||
}); |
|
||||
}, |
|
||||
/* 更新visible */ |
|
||||
updateVisible(value) { |
|
||||
this.$emit('update:visible', value); |
|
||||
}, |
|
||||
|
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style scoped> |
|
||||
</style> |
|
||||
@ -1,263 +0,0 @@ |
|||||
<template> |
|
||||
<div class="ele-body"> |
|
||||
<el-card shadow="never"> |
|
||||
<!-- 搜索表单 --> |
|
||||
<el-form |
|
||||
:model="where" |
|
||||
label-width="77px" |
|
||||
class="ele-form-search" |
|
||||
@keyup.enter.native="reload" |
|
||||
@submit.native.prevent> |
|
||||
<el-row :gutter="15"> |
|
||||
<el-col :md="5" :sm="12"> |
|
||||
<el-form-item label="名称:"> |
|
||||
<el-input |
|
||||
v-model="where.name" |
|
||||
placeholder="请输入广告名称" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
</el-col> |
|
||||
|
|
||||
|
|
||||
<el-col :md="6" :sm="12"> |
|
||||
<div class="ele-form-actions"> |
|
||||
<el-button |
|
||||
type="primary" |
|
||||
@click="reload" |
|
||||
icon="el-icon-search" |
|
||||
class="ele-btn-icon">查询 |
|
||||
</el-button> |
|
||||
<el-button @click="reset">重置</el-button> |
|
||||
</div> |
|
||||
</el-col> |
|
||||
</el-row> |
|
||||
</el-form> |
|
||||
<!-- 数据表格 --> |
|
||||
<ele-pro-table |
|
||||
ref="table" |
|
||||
:datasource="url" |
|
||||
:columns="columns" |
|
||||
:where="where" |
|
||||
:selection.sync="selection"> |
|
||||
<!-- 表头工具栏 --> |
|
||||
<template slot="toolbar"> |
|
||||
<el-button |
|
||||
@click="openEdit(null)" |
|
||||
type="primary" |
|
||||
icon="el-icon-plus" |
|
||||
class="ele-btn-icon" |
|
||||
size="small">添加 |
|
||||
</el-button> |
|
||||
<el-button |
|
||||
@click="removeBatch" |
|
||||
type="danger" |
|
||||
icon="el-icon-delete" |
|
||||
class="ele-btn-icon" |
|
||||
size="small">删除 |
|
||||
</el-button> |
|
||||
</template> |
|
||||
<template slot="image" slot-scope="{row}"> |
|
||||
<div class="ele-cell"> |
|
||||
<a :href="row.image" target="_blank"><el-avatar shape="square" :size="100" :src="row.image"/></a> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<!-- 操作列 --> |
|
||||
<template slot="action" slot-scope="{row}"> |
|
||||
|
|
||||
<el-link |
|
||||
@click="openEdit(row)" |
|
||||
icon="el-icon-edit" |
|
||||
type="primary" |
|
||||
:underline="false">修改 |
|
||||
</el-link> |
|
||||
|
|
||||
<el-popconfirm |
|
||||
title="确定要删除广告位吗?" |
|
||||
@confirm="remove(row)" |
|
||||
class="ele-action"> |
|
||||
<el-link |
|
||||
slot="reference" |
|
||||
icon="el-icon-delete" |
|
||||
type="danger" |
|
||||
:underline="false">删除 |
|
||||
</el-link> |
|
||||
</el-popconfirm> |
|
||||
</template> |
|
||||
</ele-pro-table> |
|
||||
</el-card> |
|
||||
<!-- 编辑弹窗 --> |
|
||||
<ad-data-edit |
|
||||
:visible.sync="showEdit" |
|
||||
:data="current" |
|
||||
@done="reload"/> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import AdDataEdit from './ad-data-edit'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'adData', |
|
||||
components: { AdDataEdit}, |
|
||||
data() { |
|
||||
return { |
|
||||
// 表格数据接口 |
|
||||
url: '/AdData/index', |
|
||||
// 表格列配置 |
|
||||
columns: [ |
|
||||
{ |
|
||||
columnKey: 'selection', |
|
||||
type: 'selection', |
|
||||
width: 45, |
|
||||
align: 'center', |
|
||||
fixed: 'left' |
|
||||
}, |
|
||||
|
|
||||
{ |
|
||||
prop: 'name', |
|
||||
label: '广告名称', |
|
||||
sortable: false, |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 80 |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'image', |
|
||||
label: '图片', |
|
||||
sortable: false, |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 100, |
|
||||
slot: "image" |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'url', |
|
||||
label: '广告链接', |
|
||||
sortable: false, |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 180 |
|
||||
}, |
|
||||
|
|
||||
{ |
|
||||
prop: 'sort', |
|
||||
label: '排序', |
|
||||
width: 80, |
|
||||
sortable: true, |
|
||||
align: 'center', |
|
||||
fixed: 'left', |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'start_time', |
|
||||
label: '开始时间', |
|
||||
sortable: 'custom', |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 130, |
|
||||
formatter: (row, column, cellValue) => { |
|
||||
return this.$util.toDateString(cellValue); |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'end_time', |
|
||||
label: '结束时间', |
|
||||
sortable: 'custom', |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 130, |
|
||||
formatter: (row, column, cellValue) => { |
|
||||
return this.$util.toDateString(cellValue); |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
columnKey: 'action', |
|
||||
label: '操作', |
|
||||
width: 180, |
|
||||
align: 'center', |
|
||||
resizable: false, |
|
||||
slot: 'action' |
|
||||
} |
|
||||
], |
|
||||
// 表格搜索条件 |
|
||||
where: { |
|
||||
ad_id:this.$route.query.ad_id |
|
||||
}, |
|
||||
// 表格选中数据 |
|
||||
selection: [], |
|
||||
// 当前编辑数据 |
|
||||
current: null, |
|
||||
// 是否显示编辑弹窗 |
|
||||
showEdit: false, |
|
||||
// 是否显示导入弹窗 |
|
||||
showImport: false, |
|
||||
} |
|
||||
}, |
|
||||
mounted() { |
|
||||
|
|
||||
}, |
|
||||
methods: { |
|
||||
|
|
||||
/* 刷新表格 */ |
|
||||
reload() { |
|
||||
this.$refs.table.reload({page: 1}); |
|
||||
}, |
|
||||
/* 重置搜索 */ |
|
||||
reset() { |
|
||||
this.where = {}; |
|
||||
this.$nextTick(() => { |
|
||||
this.reload(); |
|
||||
}); |
|
||||
}, |
|
||||
/* 显示编辑 */ |
|
||||
openEdit(row) { |
|
||||
this.current = row; |
|
||||
this.showEdit = true; |
|
||||
}, |
|
||||
/* 删除 */ |
|
||||
remove(row) { |
|
||||
const loading = this.$loading({lock: true}); |
|
||||
let formData = new FormData(); |
|
||||
formData.append('id', row.id); |
|
||||
this.$http.post('/AdData/delete/', formData).then(res => { |
|
||||
loading.close(); |
|
||||
if (res.data.code === 0) { |
|
||||
this.$message({type: 'success', message: res.data.msg}); |
|
||||
this.reload(); |
|
||||
} else { |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
loading.close(); |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
}, |
|
||||
/* 批量删除 */ |
|
||||
removeBatch() { |
|
||||
if (!this.selection.length) { |
|
||||
this.$message.error('请至少选择一条数据') |
|
||||
return; |
|
||||
} |
|
||||
this.$confirm('确定要删除选中的广告吗?', '提示', { |
|
||||
type: 'warning' |
|
||||
}).then(() => { |
|
||||
const loading = this.$loading({lock: true}); |
|
||||
let formData = new FormData(); |
|
||||
formData.append('id', this.selection.map(d => d.id)); |
|
||||
this.$http.post('/AdData/delete/', formData).then(res => { |
|
||||
loading.close(); |
|
||||
if (res.data.code === 0) { |
|
||||
this.$message({type: 'success', message: res.data.msg}); |
|
||||
this.reload(); |
|
||||
} else { |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
loading.close(); |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
}).catch(() => { |
|
||||
}); |
|
||||
}, |
|
||||
|
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style scoped> |
|
||||
</style> |
|
||||
@ -1,190 +0,0 @@ |
|||||
<!-- 用户编辑弹窗 --> |
|
||||
<template> |
|
||||
<el-dialog |
|
||||
:title="isUpdate?'修改广告位':'添加广告位'" |
|
||||
:visible="visible" |
|
||||
width="600px" |
|
||||
:destroy-on-close="true" |
|
||||
:lock-scroll="false" |
|
||||
custom-class="ele-dialog-form" |
|
||||
@update:visible="updateVisible"> |
|
||||
<el-form |
|
||||
:model="form" |
|
||||
ref="form" |
|
||||
:rules="rules" |
|
||||
label-width="82px"> |
|
||||
<el-row :gutter="15"> |
|
||||
<el-col> |
|
||||
<el-form-item |
|
||||
label="名称:" |
|
||||
prop="name"> |
|
||||
<el-input |
|
||||
v-model="form.name" |
|
||||
placeholder="请输入广告位名称" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
<el-form-item |
|
||||
label="广告标识:" |
|
||||
prop="name"> |
|
||||
<el-input |
|
||||
v-model="form.idf" |
|
||||
:disabled="isUpdate?true:false" |
|
||||
placeholder="请输入广告位前台调用标识" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="分类:"> |
|
||||
<el-select |
|
||||
v-model="form.type" |
|
||||
placeholder="请选择广告位分类" |
|
||||
class="ele-fluid"> |
|
||||
<el-option |
|
||||
v-for="item in tagLists" |
|
||||
:key="item.id" |
|
||||
:label="item.name" |
|
||||
:value="item.id"> |
|
||||
<span style="padding-left: 8px;">{{ item.name }}</span> |
|
||||
</el-option> |
|
||||
</el-select> |
|
||||
</el-form-item> |
|
||||
|
|
||||
|
|
||||
<el-form-item |
|
||||
label="排序号:" |
|
||||
prop="sortNumber"> |
|
||||
<el-input-number |
|
||||
v-model="form.sort" |
|
||||
controls-position="right" |
|
||||
:min="0" |
|
||||
placeholder="请输入排序号" |
|
||||
class="ele-fluid ele-text-left"/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="描述:"> |
|
||||
<el-input |
|
||||
v-model="form.desc" |
|
||||
placeholder="请输入描述" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
</el-col> |
|
||||
</el-row> |
|
||||
</el-form> |
|
||||
<div slot="footer"> |
|
||||
<el-button |
|
||||
@click="updateVisible(false)">取消 |
|
||||
</el-button> |
|
||||
<el-button |
|
||||
type="primary" |
|
||||
@click="save" |
|
||||
:loading="loading">保存 |
|
||||
</el-button> |
|
||||
</div> |
|
||||
</el-dialog> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
|
|
||||
export default { |
|
||||
name: 'AdEdit', |
|
||||
props: { |
|
||||
// 弹窗是否打开 |
|
||||
visible: Boolean, |
|
||||
// 修改回显的数据 |
|
||||
data: Object, |
|
||||
|
|
||||
}, |
|
||||
data() { |
|
||||
return { |
|
||||
// 表单数据 |
|
||||
form: Object.assign({}, this.data), |
|
||||
// 表单验证规则 |
|
||||
rules: { |
|
||||
name: [ |
|
||||
{required: true, message: '请输入广告位名称', trigger: 'blur'} |
|
||||
], |
|
||||
sort: [ |
|
||||
{required: true, message: '请输入广告位排序', trigger: 'blur'} |
|
||||
], |
|
||||
|
|
||||
}, |
|
||||
// 提交状态 |
|
||||
loading: false, |
|
||||
// 是否是修改 |
|
||||
isUpdate: false, |
|
||||
// 角色列表 |
|
||||
tagLists: [], |
|
||||
} |
|
||||
}, |
|
||||
watch: { |
|
||||
data() { |
|
||||
if (this.data) { |
|
||||
this.form = Object.assign({}, this.data); |
|
||||
console.log(this.form ) |
|
||||
this.isUpdate = true; |
|
||||
} else { |
|
||||
this.form = {}; |
|
||||
this.isUpdate = false; |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
mounted() { |
|
||||
this.getTagLists(); // 查询角色列表 |
|
||||
}, |
|
||||
methods: { |
|
||||
afterUploadImage(response) { |
|
||||
if (response.code != 0 || response.url == '') { |
|
||||
this.$message.error(response.msg) |
|
||||
} else { |
|
||||
// console.log(this.form) |
|
||||
// this.form.url = response.url |
|
||||
// console.log(this.form) |
|
||||
|
|
||||
this.$set(this.form,'url',response.url) |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
/* 保存编辑 */ |
|
||||
save() { |
|
||||
this.$refs['form'].validate((valid) => { |
|
||||
if (valid) { |
|
||||
this.loading = true; |
|
||||
|
|
||||
this.$http.post('/Ad/' + (this.isUpdate ? 'edit' : 'add'), this.form).then(res => { |
|
||||
this.loading = false; |
|
||||
if (res.data.code === 0) { |
|
||||
this.$message({type: 'success', message: res.data.msg}); |
|
||||
if (!this.isUpdate) { |
|
||||
this.form = {}; |
|
||||
} |
|
||||
this.updateVisible(false); |
|
||||
this.$emit('done'); |
|
||||
} else { |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
this.loading = false; |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
} else { |
|
||||
return false; |
|
||||
} |
|
||||
}); |
|
||||
}, |
|
||||
/* 更新visible */ |
|
||||
updateVisible(value) { |
|
||||
this.$emit('update:visible', value); |
|
||||
}, |
|
||||
/* 查询角色列表 */ |
|
||||
getTagLists(){ |
|
||||
this.$http.get('/Ad/getType').then(res => { |
|
||||
if (res.data.code === 0) { |
|
||||
this.tagLists = res.data.data; |
|
||||
} |
|
||||
}) |
|
||||
}, |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style scoped> |
|
||||
</style> |
|
||||
@ -1,276 +0,0 @@ |
|||||
<template> |
|
||||
<div class="ele-body"> |
|
||||
<el-card shadow="never"> |
|
||||
<!-- 搜索表单 --> |
|
||||
<el-form |
|
||||
:model="where" |
|
||||
label-width="77px" |
|
||||
class="ele-form-search" |
|
||||
@keyup.enter.native="reload" |
|
||||
@submit.native.prevent> |
|
||||
<el-row :gutter="15"> |
|
||||
<el-col :md="5" :sm="12"> |
|
||||
<el-form-item label="名称:"> |
|
||||
<el-input |
|
||||
v-model="where.name" |
|
||||
placeholder="请输入名称" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
</el-col> |
|
||||
|
|
||||
<el-col :md="4" :sm="12"> |
|
||||
<el-form-item label="分类:"> |
|
||||
<el-select |
|
||||
v-model="where.type" |
|
||||
placeholder="请选择" |
|
||||
clearable |
|
||||
class="ele-fluid"> |
|
||||
<el-option |
|
||||
v-for="item in tagLists" |
|
||||
:key="item.id" |
|
||||
:label="item.name" |
|
||||
:value="item.id"> |
|
||||
</el-option> |
|
||||
</el-select> |
|
||||
</el-form-item> |
|
||||
</el-col> |
|
||||
<el-col :md="6" :sm="12"> |
|
||||
<div class="ele-form-actions"> |
|
||||
<el-button |
|
||||
type="primary" |
|
||||
@click="reload" |
|
||||
icon="el-icon-search" |
|
||||
class="ele-btn-icon">查询 |
|
||||
</el-button> |
|
||||
<el-button @click="reset">重置</el-button> |
|
||||
</div> |
|
||||
</el-col> |
|
||||
</el-row> |
|
||||
</el-form> |
|
||||
<!-- 数据表格 --> |
|
||||
<ele-pro-table |
|
||||
ref="table" |
|
||||
:datasource="url" |
|
||||
:columns="columns" |
|
||||
:where="where" |
|
||||
:selection.sync="selection"> |
|
||||
<!-- 表头工具栏 --> |
|
||||
<template slot="toolbar"> |
|
||||
<el-button |
|
||||
@click="openEdit(null)" |
|
||||
type="primary" |
|
||||
icon="el-icon-plus" |
|
||||
class="ele-btn-icon" |
|
||||
size="small">添加 |
|
||||
</el-button> |
|
||||
<el-button |
|
||||
@click="removeBatch" |
|
||||
type="danger" |
|
||||
icon="el-icon-delete" |
|
||||
class="ele-btn-icon" |
|
||||
size="small">删除 |
|
||||
</el-button> |
|
||||
</template> |
|
||||
<!-- 操作列 --> |
|
||||
<template slot="action" slot-scope="{row}"> |
|
||||
<el-link |
|
||||
@click="openAdLists(row)" |
|
||||
icon="el-icon-_nav" |
|
||||
type="primary" |
|
||||
:underline="false">查看广告 |
|
||||
</el-link> |
|
||||
|
|
||||
<el-link |
|
||||
@click="openEdit(row)" |
|
||||
icon="el-icon-edit" |
|
||||
type="primary" |
|
||||
:underline="false">修改 |
|
||||
</el-link> |
|
||||
|
|
||||
<el-popconfirm |
|
||||
title="确定要删除广告位吗?" |
|
||||
@confirm="remove(row)" |
|
||||
class="ele-action"> |
|
||||
<el-link |
|
||||
slot="reference" |
|
||||
icon="el-icon-delete" |
|
||||
type="danger" |
|
||||
:underline="false">删除 |
|
||||
</el-link> |
|
||||
</el-popconfirm> |
|
||||
</template> |
|
||||
</ele-pro-table> |
|
||||
</el-card> |
|
||||
<!-- 编辑弹窗 --> |
|
||||
<ad-edit |
|
||||
:visible.sync="showEdit" |
|
||||
:data="current" |
|
||||
@done="reload"/> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import AdEdit from './ad-edit'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'ad', |
|
||||
components: { AdEdit}, |
|
||||
data() { |
|
||||
return { |
|
||||
// 表格数据接口 |
|
||||
url: '/Ad/index', |
|
||||
// 表格列配置 |
|
||||
columns: [ |
|
||||
{ |
|
||||
columnKey: 'selection', |
|
||||
type: 'selection', |
|
||||
width: 45, |
|
||||
align: 'center', |
|
||||
fixed: 'left' |
|
||||
}, |
|
||||
{ |
|
||||
columnKey: 'id', |
|
||||
type: 'index', |
|
||||
width: 45, |
|
||||
align: 'center', |
|
||||
fixed: 'left', |
|
||||
showOverflowTooltip: true |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'name', |
|
||||
label: '广告位名称', |
|
||||
sortable: false, |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 80 |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'sort', |
|
||||
label: '排序', |
|
||||
width: 80, |
|
||||
sortable: true, |
|
||||
align: 'center', |
|
||||
fixed: 'left', |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'desc', |
|
||||
label: '备注', |
|
||||
sortable: false, |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 100, |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'type_str', |
|
||||
label: '分类', |
|
||||
sortable: false, |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 60 |
|
||||
}, |
|
||||
{ |
|
||||
columnKey: 'action', |
|
||||
label: '操作', |
|
||||
width: 220, |
|
||||
align: 'center', |
|
||||
resizable: false, |
|
||||
slot: 'action' |
|
||||
} |
|
||||
], |
|
||||
// 表格搜索条件 |
|
||||
where: {}, |
|
||||
// 表格选中数据 |
|
||||
selection: [], |
|
||||
// 当前编辑数据 |
|
||||
current: null, |
|
||||
// 是否显示编辑弹窗 |
|
||||
showEdit: false, |
|
||||
// 是否显示导入弹窗 |
|
||||
showImport: false, |
|
||||
tagLists:[], |
|
||||
} |
|
||||
}, |
|
||||
mounted() { |
|
||||
this.getTagLists(); |
|
||||
}, |
|
||||
methods: { |
|
||||
getTagLists(){ |
|
||||
this.$http.get('/Ad/getType').then(res => { |
|
||||
if (res.data.code === 0) { |
|
||||
this.tagLists = res.data.data; |
|
||||
} |
|
||||
}) |
|
||||
}, |
|
||||
/* 刷新表格 */ |
|
||||
reload() { |
|
||||
this.$refs.table.reload({page: 1}); |
|
||||
}, |
|
||||
/* 重置搜索 */ |
|
||||
reset() { |
|
||||
this.where = {}; |
|
||||
this.$nextTick(() => { |
|
||||
this.reload(); |
|
||||
}); |
|
||||
}, |
|
||||
/* 显示编辑 */ |
|
||||
openEdit(row) { |
|
||||
this.current = row; |
|
||||
this.showEdit = true; |
|
||||
}, |
|
||||
/* 删除 */ |
|
||||
remove(row) { |
|
||||
const loading = this.$loading({lock: true}); |
|
||||
let formData = new FormData(); |
|
||||
formData.append('id', row.id); |
|
||||
this.$http.post('/Ad/delete/', formData).then(res => { |
|
||||
loading.close(); |
|
||||
if (res.data.code === 0) { |
|
||||
this.$message({type: 'success', message: res.data.msg}); |
|
||||
this.reload(); |
|
||||
} else { |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
loading.close(); |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
}, |
|
||||
/* 批量删除 */ |
|
||||
removeBatch() { |
|
||||
if (!this.selection.length) { |
|
||||
this.$message.error('请至少选择一条数据') |
|
||||
return; |
|
||||
} |
|
||||
this.$confirm('确定要删除选中的广告位吗?', '提示', { |
|
||||
type: 'warning' |
|
||||
}).then(() => { |
|
||||
const loading = this.$loading({lock: true}); |
|
||||
let formData = new FormData(); |
|
||||
formData.append('id', this.selection.map(d => d.id)); |
|
||||
this.$http.post('/Ad/delete/', formData).then(res => { |
|
||||
loading.close(); |
|
||||
if (res.data.code === 0) { |
|
||||
this.$message({type: 'success', message: res.data.msg}); |
|
||||
this.reload(); |
|
||||
} else { |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
loading.close(); |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
}).catch(() => { |
|
||||
}); |
|
||||
}, |
|
||||
openAdLists(row){ |
|
||||
this.$router.push({ |
|
||||
path:'/ad/ad-data', |
|
||||
query:{ |
|
||||
ad_id : row.id |
|
||||
} |
|
||||
}) |
|
||||
}, |
|
||||
|
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style scoped> |
|
||||
</style> |
|
||||
@ -1,355 +0,0 @@ |
|||||
<!-- 编辑弹窗 --> |
|
||||
<template> |
|
||||
<el-dialog |
|
||||
width="720px" |
|
||||
:visible="visible" |
|
||||
:lock-scroll="false" |
|
||||
:destroy-on-close="true" |
|
||||
custom-class="ele-dialog-form" |
|
||||
:title="isUpdate?'修改栏目':'添加栏目'" |
|
||||
@update:visible="updateVisible"> |
|
||||
<el-form |
|
||||
ref="form" |
|
||||
:model="form" |
|
||||
:rules="rules" |
|
||||
label-width="92px" |
|
||||
@keyup.enter.native="save" |
|
||||
@submit.native.prevent> |
|
||||
<el-card |
|
||||
shadow="never" |
|
||||
header="基础设置" |
|
||||
body-style="padding: 10px 10px 0 10px;"> |
|
||||
<el-row :gutter="15"> |
|
||||
<el-form-item label="上级栏目:"> |
|
||||
<treeselect |
|
||||
:options="cateList" |
|
||||
v-model="form.parent_id" |
|
||||
:defaultExpandLevel="3" |
|
||||
:normalizer="normalizer" |
|
||||
placeholder="请选择上级栏目"/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="模型:"> |
|
||||
<el-select |
|
||||
v-model="form.module_id" |
|
||||
class="ele-fluid" |
|
||||
placeholder="请选择模型" |
|
||||
> |
|
||||
<el-option |
|
||||
v-for="item in moduleList" |
|
||||
:key="item.module_id" |
|
||||
:label="item.module_name" |
|
||||
:value="item.module_id"> |
|
||||
<span style="padding-left: 8px;">{{ item.module_name }}</span> |
|
||||
</el-option> |
|
||||
</el-select> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="栏目名称:" prop="cate_name"> |
|
||||
<el-input |
|
||||
clearable |
|
||||
v-model="form.cate_name" |
|
||||
placeholder="请输入栏目名称"/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="英文名称:" prop="en_name"> |
|
||||
<el-input |
|
||||
clearable |
|
||||
v-model="form.en_name" |
|
||||
placeholder="请输入栏目英文名称"/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="栏目目录:" prop="cate_folder"> |
|
||||
<el-input |
|
||||
clearable |
|
||||
v-model="form.cate_folder" |
|
||||
placeholder="请输入栏目目录"/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="栏目图片"> |
|
||||
<el-row> |
|
||||
<el-col> |
|
||||
<el-input |
|
||||
v-model="form.image" |
|
||||
placeholder="请上传图片" |
|
||||
clearable/> |
|
||||
<el-upload |
|
||||
class="upload-demo" |
|
||||
:show-file-list="false" |
|
||||
:action="this.uploadImage+'?upload_type=img'" |
|
||||
:on-success="afterUploadImage"> |
|
||||
<img v-if="form.image" :src="form.image" width="150" height="150" class="avatar"> |
|
||||
<i v-else class="el-icon-plus avatar-uploader-icon"></i> |
|
||||
</el-upload> |
|
||||
</el-col> |
|
||||
</el-row> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="ico图片"> |
|
||||
<el-row> |
|
||||
<el-col> |
|
||||
<el-input |
|
||||
v-model="form.ico_image" |
|
||||
placeholder="请上传ico" |
|
||||
clearable/> |
|
||||
<el-upload |
|
||||
class="upload-demo" |
|
||||
:show-file-list="false" |
|
||||
:action="this.uploadImage+'?upload_type=img'" |
|
||||
:on-success="afterUploadIcoImage"> |
|
||||
<img v-if="form.ico_image" :src="form.ico_image" width="150" height="150" class="avatar"> |
|
||||
<i v-else class="el-icon-plus avatar-uploader-icon"></i> |
|
||||
</el-upload> |
|
||||
</el-col> |
|
||||
</el-row> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="简介:"> |
|
||||
<el-input |
|
||||
v-model="form.summary" |
|
||||
placeholder="请输入简介" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="导航状态:"> |
|
||||
<el-radio-group |
|
||||
v-model="form.is_menu"> |
|
||||
<el-radio :label="1">显示</el-radio> |
|
||||
<el-radio :label="0">隐藏</el-radio> |
|
||||
</el-radio-group> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="状态:"> |
|
||||
<el-radio-group |
|
||||
v-model="form.status"> |
|
||||
<el-radio :label="1">显示</el-radio> |
|
||||
<el-radio :label="0">隐藏</el-radio> |
|
||||
</el-radio-group> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="排序号:" prop="sort"> |
|
||||
<el-input-number |
|
||||
:min="0" |
|
||||
v-model="form.sort" |
|
||||
placeholder="请输入排序号" |
|
||||
controls-position="right" |
|
||||
class="ele-fluid ele-text-left"/> |
|
||||
</el-form-item> |
|
||||
</el-row> |
|
||||
</el-card> |
|
||||
<el-card |
|
||||
shadow="never" |
|
||||
header="SEO设置" |
|
||||
body-style="padding: 10px 10px 0 10px;"> |
|
||||
<el-row :gutter="15"> |
|
||||
<el-form-item label="SEO标题:" prop="seo_title"> |
|
||||
<el-input |
|
||||
clearable |
|
||||
v-model="form.seo_title" |
|
||||
placeholder="请输入SEO标题"/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="SEO关键字:" prop="seo_keyword"> |
|
||||
<el-input |
|
||||
clearable |
|
||||
v-model="form.seo_keyword" |
|
||||
placeholder="请输入SEO关键字"/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="SEO描述:" prop="seo_description"> |
|
||||
<el-input |
|
||||
clearable |
|
||||
v-model="form.seo_description" |
|
||||
placeholder="请输入SEO描述"/> |
|
||||
</el-form-item> |
|
||||
</el-row> |
|
||||
</el-card> |
|
||||
|
|
||||
<el-card |
|
||||
shadow="never" |
|
||||
header="其他设置" |
|
||||
body-style="padding: 10px 10px 0 10px;"> |
|
||||
<el-row :gutter="15"> |
|
||||
<el-form-item label="外部链接:" prop="url"> |
|
||||
<el-input |
|
||||
clearable |
|
||||
v-model="form.url" |
|
||||
placeholder="请输入外部链接"/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="列表模块:" prop="template_list"> |
|
||||
<el-input |
|
||||
clearable |
|
||||
v-model="form.template_list" |
|
||||
placeholder="请输入列表模块"/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="详情模板:" prop="template_show"> |
|
||||
<el-input |
|
||||
clearable |
|
||||
v-model="form.template_show" |
|
||||
placeholder="请输入详情模板"/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="分页条数:" prop="page_size"> |
|
||||
<el-input-number |
|
||||
:min="0" |
|
||||
v-model="form.page_size" |
|
||||
placeholder="请输入分页数" |
|
||||
controls-position="right" |
|
||||
class="ele-fluid ele-text-left"/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="跳转下级:"> |
|
||||
<el-radio-group |
|
||||
v-model="form.is_next"> |
|
||||
<el-radio :label="1">是</el-radio> |
|
||||
<el-radio :label="0">否</el-radio> |
|
||||
</el-radio-group> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="新窗口打开:"> |
|
||||
<el-radio-group |
|
||||
v-model="form.is_blank"> |
|
||||
<el-radio :label="1">是</el-radio> |
|
||||
<el-radio :label="0">否</el-radio> |
|
||||
</el-radio-group> |
|
||||
</el-form-item> |
|
||||
|
|
||||
</el-row> |
|
||||
</el-card> |
|
||||
</el-form> |
|
||||
<div slot="footer"> |
|
||||
<el-button @click="updateVisible(false)">取消</el-button> |
|
||||
<el-button |
|
||||
type="primary" |
|
||||
:loading="loading" |
|
||||
@click="save">保存 |
|
||||
</el-button> |
|
||||
</div> |
|
||||
</el-dialog> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import Treeselect from '@riophae/vue-treeselect'; |
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'; |
|
||||
import setting from "@/config/setting"; |
|
||||
// import EleIconPicker from 'ele-admin/packages/ele-icon-picker'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'CateEdit', |
|
||||
components: {Treeselect}, |
|
||||
props: { |
|
||||
// 弹窗是否打开 |
|
||||
visible: Boolean, |
|
||||
// 修改回显的数据 |
|
||||
data: Object, |
|
||||
// 全部菜单数据 |
|
||||
cateList: Array, |
|
||||
moduleList: Array, |
|
||||
|
|
||||
}, |
|
||||
data() { |
|
||||
return { |
|
||||
uploadImage: setting.uploadImageUrl, |
|
||||
// 表单数据 |
|
||||
form: this.initFormData(this.data), |
|
||||
// 表单验证规则 |
|
||||
rules: { |
|
||||
cate_name: [ |
|
||||
{required: true, message: '请输入栏目名称', trigger: 'blur'} |
|
||||
], |
|
||||
}, |
|
||||
// 提交状态 |
|
||||
loading: false, |
|
||||
// 是否是修改 |
|
||||
isUpdate: false |
|
||||
}; |
|
||||
}, |
|
||||
watch: { |
|
||||
data() { |
|
||||
this.isUpdate = !!(this.data && this.data.id); |
|
||||
this.form = this.initFormData(this.data); |
|
||||
} |
|
||||
}, |
|
||||
methods: { |
|
||||
afterUploadImage(response) { |
|
||||
if (response.code != 0 || response.url == '') { |
|
||||
this.$message.error(response.msg) |
|
||||
} else { |
|
||||
this.$set(this.form,'image',response.url) |
|
||||
} |
|
||||
}, |
|
||||
afterUploadIcoImage(response) { |
|
||||
if (response.code != 0 || response.url == '') { |
|
||||
this.$message.error(response.msg) |
|
||||
} else { |
|
||||
this.$set(this.form,'ico_image',response.url) |
|
||||
} |
|
||||
}, |
|
||||
/* 下拉树格式化 */ |
|
||||
normalizer(d) { |
|
||||
return { |
|
||||
id: d.id, |
|
||||
label: d.cate_name, |
|
||||
children: d.children || undefined |
|
||||
}; |
|
||||
}, |
|
||||
/* 保存编辑 */ |
|
||||
save() { |
|
||||
this.$refs['form'].validate((valid) => { |
|
||||
if (valid) { |
|
||||
this.loading = true; |
|
||||
this.$http.post('/Cate/' + (this.isUpdate ? 'edit' : 'add'), |
|
||||
Object.assign({}, this.form, { |
|
||||
parent_id: this.form.parent_id || 0, |
|
||||
module_id: this.form.module_id || 0, |
|
||||
}) |
|
||||
).then(res => { |
|
||||
this.loading = false; |
|
||||
if (res.data.code === 0) { |
|
||||
this.$message({type: 'success', message: res.data.msg}); |
|
||||
this.updateVisible(false); |
|
||||
this.$emit('done'); |
|
||||
} else { |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
this.loading = false; |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
} else { |
|
||||
return false; |
|
||||
} |
|
||||
}); |
|
||||
}, |
|
||||
/* 更新visible */ |
|
||||
updateVisible(value) { |
|
||||
this.$emit('update:visible', value); |
|
||||
}, |
|
||||
|
|
||||
/* 初始化form数据 */ |
|
||||
initFormData(data) { |
|
||||
let form = { |
|
||||
parent_id : 0, |
|
||||
module_id : 0, |
|
||||
is_menu : 1, |
|
||||
status : 1, |
|
||||
is_next:0, |
|
||||
is_blank:0, |
|
||||
}; |
|
||||
if (data) { |
|
||||
Object.assign(form, data, { |
|
||||
parent_id: data.parent_id === 0 ? null : data.parent_id, |
|
||||
module_id: data.module_id === 0 ? null : data.module_id, |
|
||||
}); |
|
||||
} |
|
||||
return form; |
|
||||
}, |
|
||||
|
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style scoped> |
|
||||
</style> |
|
||||
@ -1,174 +0,0 @@ |
|||||
<!-- 编辑弹窗 --> |
|
||||
<template> |
|
||||
<el-dialog |
|
||||
width="720px" |
|
||||
:visible="visible" |
|
||||
:lock-scroll="false" |
|
||||
:destroy-on-close="true" |
|
||||
custom-class="ele-dialog-form" |
|
||||
:title="isUpdate?'修改栏目调用配置':'添加栏目调用配置'" |
|
||||
@update:visible="updateVisible"> |
|
||||
<el-form |
|
||||
ref="form" |
|
||||
:model="form" |
|
||||
:rules="rules" |
|
||||
label-width="92px" |
|
||||
@keyup.enter.native="save" |
|
||||
@submit.native.prevent> |
|
||||
<el-row :gutter="15"> |
|
||||
|
|
||||
<el-form-item label="调用标志:" prop="idf"> |
|
||||
<el-input |
|
||||
clearable |
|
||||
v-model="form.idf" |
|
||||
placeholder="请输入调用标志"/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="使用备注:" prop="remark"> |
|
||||
<el-input |
|
||||
clearable |
|
||||
v-model="form.remark" |
|
||||
placeholder="请输入调用标志"/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
|
|
||||
<el-form-item label="数据栏目:"> |
|
||||
<treeselect |
|
||||
:options="cateList" |
|
||||
v-model="form.cate_ids_arr" |
|
||||
:multiple="true" |
|
||||
:defaultExpandLevel="3" |
|
||||
:normalizer="normalizer" |
|
||||
placeholder="请选择栏目"/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
|
|
||||
|
|
||||
<el-form-item label="数据类型:"> |
|
||||
<el-radio-group |
|
||||
v-model="form.type"> |
|
||||
<el-radio :label="0">栏目自身</el-radio> |
|
||||
<el-radio :label="1">栏目内容</el-radio> |
|
||||
</el-radio-group> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="状态:"> |
|
||||
<el-radio-group |
|
||||
v-model="form.status"> |
|
||||
<el-radio :label="1">显示</el-radio> |
|
||||
<el-radio :label="0">隐藏</el-radio> |
|
||||
</el-radio-group> |
|
||||
</el-form-item> |
|
||||
</el-row> |
|
||||
|
|
||||
</el-form> |
|
||||
<div slot="footer"> |
|
||||
<el-button @click="updateVisible(false)">取消</el-button> |
|
||||
<el-button |
|
||||
type="primary" |
|
||||
:loading="loading" |
|
||||
@click="save">保存 |
|
||||
</el-button> |
|
||||
</div> |
|
||||
</el-dialog> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import Treeselect from '@riophae/vue-treeselect'; |
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'; |
|
||||
export default { |
|
||||
name: 'CateRelationEdit', |
|
||||
components: {Treeselect}, |
|
||||
props: { |
|
||||
// 弹窗是否打开 |
|
||||
visible: Boolean, |
|
||||
// 修改回显的数据 |
|
||||
data: Object, |
|
||||
// 全部菜单数据 |
|
||||
cateList: Array, |
|
||||
moduleList: Array, |
|
||||
|
|
||||
}, |
|
||||
data() { |
|
||||
return { |
|
||||
// 表单数据 |
|
||||
form: this.initFormData(this.data), |
|
||||
// 表单验证规则 |
|
||||
rules: { |
|
||||
idf: [ |
|
||||
{required: true, message: '请输入调用名称', trigger: 'blur'} |
|
||||
], |
|
||||
}, |
|
||||
// 提交状态 |
|
||||
loading: false, |
|
||||
// 是否是修改 |
|
||||
isUpdate: false |
|
||||
}; |
|
||||
}, |
|
||||
watch: { |
|
||||
data() { |
|
||||
this.isUpdate = !!(this.data && this.data.id); |
|
||||
this.form = this.initFormData(this.data); |
|
||||
} |
|
||||
}, |
|
||||
methods: { |
|
||||
/* 下拉树格式化 */ |
|
||||
normalizer(d) { |
|
||||
return { |
|
||||
id: d.id, |
|
||||
label: d.cate_name, |
|
||||
children: d.children || undefined |
|
||||
}; |
|
||||
}, |
|
||||
/* 保存编辑 */ |
|
||||
save() { |
|
||||
this.$refs['form'].validate((valid) => { |
|
||||
if (valid) { |
|
||||
this.loading = true; |
|
||||
this.$http.post('/CateRelation/' + (this.isUpdate ? 'edit' : 'add'), Object.assign({}, this.form) |
|
||||
).then(res => { |
|
||||
this.loading = false; |
|
||||
if (res.data.code === 0) { |
|
||||
this.$message({type: 'success', message: res.data.msg}); |
|
||||
this.updateVisible(false); |
|
||||
this.$emit('done'); |
|
||||
} else { |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
this.loading = false; |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
} else { |
|
||||
return false; |
|
||||
} |
|
||||
}); |
|
||||
}, |
|
||||
/* 更新visible */ |
|
||||
updateVisible(value) { |
|
||||
this.$emit('update:visible', value); |
|
||||
}, |
|
||||
|
|
||||
/* 初始化form数据 */ |
|
||||
initFormData(data) { |
|
||||
let form = { |
|
||||
catd_ids : '', |
|
||||
status : 1, |
|
||||
type:0, |
|
||||
cate_ids_arr:[] |
|
||||
}; |
|
||||
if (data) { |
|
||||
let cate_ids_arr = data.cate_ids.split(',') |
|
||||
Object.assign(form, data, { |
|
||||
cate_ids_arr : cate_ids_arr |
|
||||
}); |
|
||||
} |
|
||||
return form; |
|
||||
}, |
|
||||
|
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style scoped> |
|
||||
</style> |
|
||||
@ -1,298 +0,0 @@ |
|||||
<template> |
|
||||
<div class="ele-body"> |
|
||||
<el-card shadow="never"> |
|
||||
<!-- 搜索表单 --> |
|
||||
<el-form |
|
||||
:model="where" |
|
||||
label-width="77px" |
|
||||
class="ele-form-search" |
|
||||
@keyup.enter.native="reload" |
|
||||
@submit.native.prevent> |
|
||||
<el-row :gutter="15"> |
|
||||
<el-col :md="5" :sm="12"> |
|
||||
<el-form-item label="标志:"> |
|
||||
<el-input |
|
||||
v-model="where.idf" |
|
||||
placeholder="请输入调用标志" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
</el-col> |
|
||||
|
|
||||
<el-col :md="6" :sm="12"> |
|
||||
<div class="ele-form-actions"> |
|
||||
<el-button |
|
||||
type="primary" |
|
||||
@click="reload" |
|
||||
icon="el-icon-search" |
|
||||
class="ele-btn-icon">查询 |
|
||||
</el-button> |
|
||||
<el-button @click="reset">重置</el-button> |
|
||||
</div> |
|
||||
</el-col> |
|
||||
</el-row> |
|
||||
</el-form> |
|
||||
<!-- 数据表格 --> |
|
||||
<ele-pro-table |
|
||||
ref="table" |
|
||||
:datasource="url" |
|
||||
:columns="columns" |
|
||||
:where="where" |
|
||||
:selection.sync="selection"> |
|
||||
<!-- 表头工具栏 --> |
|
||||
<template slot="toolbar"> |
|
||||
<el-button |
|
||||
@click="openEdit(null)" |
|
||||
type="primary" |
|
||||
icon="el-icon-plus" |
|
||||
class="ele-btn-icon" |
|
||||
size="small">添加 |
|
||||
</el-button> |
|
||||
<el-button |
|
||||
@click="removeBatch" |
|
||||
type="danger" |
|
||||
icon="el-icon-delete" |
|
||||
class="ele-btn-icon" |
|
||||
size="small">删除 |
|
||||
</el-button> |
|
||||
</template> |
|
||||
|
|
||||
<!-- 状态列 --> |
|
||||
<template slot="status" slot-scope="{row}"> |
|
||||
<el-switch |
|
||||
v-model="row.status" |
|
||||
@change="editStatus(row)" |
|
||||
:active-value="1" |
|
||||
:inactive-value="0"/> |
|
||||
</template> |
|
||||
|
|
||||
<!-- 操作列 --> |
|
||||
<template slot="action" slot-scope="{row}"> |
|
||||
<el-link |
|
||||
@click="openEdit(row)" |
|
||||
icon="el-icon-edit" |
|
||||
type="primary" |
|
||||
:underline="false">修改 |
|
||||
</el-link> |
|
||||
|
|
||||
<el-popconfirm |
|
||||
title="确定要删除此调用吗?" |
|
||||
@confirm="remove(row)" |
|
||||
class="ele-action"> |
|
||||
<el-link |
|
||||
slot="reference" |
|
||||
icon="el-icon-delete" |
|
||||
type="danger" |
|
||||
:underline="false">删除 |
|
||||
</el-link> |
|
||||
</el-popconfirm> |
|
||||
</template> |
|
||||
</ele-pro-table> |
|
||||
</el-card> |
|
||||
<!-- 编辑弹窗 --> |
|
||||
<CateRelation-edit |
|
||||
:visible.sync="showEdit" |
|
||||
:data="current" |
|
||||
:cate-list="cateList" |
|
||||
@done="reload"/> |
|
||||
|
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import CateRelationEdit from './cate-relation-edit'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'cateRelation', |
|
||||
components: {CateRelationEdit}, |
|
||||
data() { |
|
||||
return { |
|
||||
// 表格数据接口 |
|
||||
url: '/CateRelation/index', |
|
||||
// 表格列配置 |
|
||||
columns: [ |
|
||||
{ |
|
||||
columnKey: 'selection', |
|
||||
type: 'selection', |
|
||||
width: 45, |
|
||||
align: 'center', |
|
||||
fixed: 'left' |
|
||||
}, |
|
||||
{ |
|
||||
columnKey: 'index', |
|
||||
type: 'index', |
|
||||
width: 45, |
|
||||
align: 'center', |
|
||||
fixed: 'left', |
|
||||
showOverflowTooltip: true |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'idf', |
|
||||
label: '标志', |
|
||||
sortable: false, |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 80 |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'remark', |
|
||||
label: '备注', |
|
||||
sortable: false, |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 80 |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'cate_strs', |
|
||||
label: '调用栏目', |
|
||||
sortable: false, |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 60 |
|
||||
}, |
|
||||
|
|
||||
{ |
|
||||
prop: 'create_time', |
|
||||
label: '创建时间', |
|
||||
sortable: 'custom', |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 100, |
|
||||
formatter: (row, column, cellValue) => { |
|
||||
return this.$util.toDateString(cellValue); |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'status', |
|
||||
label: '状态', |
|
||||
align: 'center', |
|
||||
sortable: 'custom', |
|
||||
width: 80, |
|
||||
resizable: false, |
|
||||
slot: 'status' |
|
||||
}, |
|
||||
{ |
|
||||
columnKey: 'action', |
|
||||
label: '操作', |
|
||||
width: 150, |
|
||||
align: 'center', |
|
||||
resizable: false, |
|
||||
slot: 'action' |
|
||||
} |
|
||||
], |
|
||||
// 表格搜索条件 |
|
||||
where: {}, |
|
||||
// 表格选中数据 |
|
||||
selection: [], |
|
||||
cateList:[], |
|
||||
// 当前编辑数据 |
|
||||
current: null, |
|
||||
// 是否显示编辑弹窗 |
|
||||
showEdit: false, |
|
||||
// 是否显示导入弹窗 |
|
||||
showImport: false |
|
||||
} |
|
||||
}, |
|
||||
mounted() { |
|
||||
this.getCateLists() |
|
||||
}, |
|
||||
|
|
||||
methods: { |
|
||||
/* 查询栏目列表 */ |
|
||||
getCateLists(){ |
|
||||
this.$http.get('/Cate/index?limit=1000').then(res => { |
|
||||
if (res.data.code === 0) { |
|
||||
this.parseData(res.data) |
|
||||
} |
|
||||
}) |
|
||||
}, |
|
||||
|
|
||||
/* 刷新表格 */ |
|
||||
reload() { |
|
||||
this.$refs.table.reload({page: 1}); |
|
||||
}, |
|
||||
/* 重置搜索 */ |
|
||||
reset() { |
|
||||
this.where = {}; |
|
||||
this.$nextTick(() => { |
|
||||
this.reload(); |
|
||||
}); |
|
||||
}, |
|
||||
/* 解析接口返回数据 */ |
|
||||
parseData(res) { |
|
||||
console.log(res.data) |
|
||||
res.data = this.$util.toTreeData(res.data, 'id', 'parent_id'); |
|
||||
this.cateList = res.data; |
|
||||
return res; |
|
||||
}, |
|
||||
/* 显示编辑 */ |
|
||||
openEdit(row) { |
|
||||
this.current = row; |
|
||||
this.showEdit = true; |
|
||||
}, |
|
||||
/* 删除 */ |
|
||||
remove(row) { |
|
||||
const loading = this.$loading({lock: true}); |
|
||||
let formData = new FormData(); |
|
||||
formData.append('id', row.id); |
|
||||
this.$http.post('/CateRelation/delete/', formData).then(res => { |
|
||||
loading.close(); |
|
||||
if (res.data.code === 0) { |
|
||||
this.$message({type: 'success', message: res.data.msg}); |
|
||||
this.reload(); |
|
||||
} else { |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
loading.close(); |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
}, |
|
||||
/* 批量删除 */ |
|
||||
removeBatch() { |
|
||||
if (!this.selection.length) { |
|
||||
this.$message.error('请至少选择一条数据') |
|
||||
return; |
|
||||
} |
|
||||
this.$confirm('确定要删除选中的碎片吗?', '提示', { |
|
||||
type: 'warning' |
|
||||
}).then(() => { |
|
||||
const loading = this.$loading({lock: true}); |
|
||||
let formData = new FormData(); |
|
||||
formData.append('id', this.selection.map(d => d.id)); |
|
||||
this.$http.post('/CateRelation/delete/', formData).then(res => { |
|
||||
loading.close(); |
|
||||
if (res.data.code === 0) { |
|
||||
this.$message({type: 'success', message: res.data.msg}); |
|
||||
this.reload(); |
|
||||
} else { |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
loading.close(); |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
}).catch(() => { |
|
||||
}); |
|
||||
}, |
|
||||
|
|
||||
/* 更改状态 */ |
|
||||
editStatus(row) { |
|
||||
const loading = this.$loading({lock: true}); |
|
||||
let params = new FormData(); |
|
||||
params.append('status', row.status); |
|
||||
params.append('id', row.id); |
|
||||
this.$http.post('/CateRelation/status', params).then(res => { |
|
||||
loading.close(); |
|
||||
if (res.data.code === 0) { |
|
||||
this.$message({type: 'success', message: res.data.msg}); |
|
||||
} else { |
|
||||
row.status = !row.status ? 1 : 0; |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
loading.close(); |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style scoped> |
|
||||
</style> |
|
||||
@ -1,367 +0,0 @@ |
|||||
<template> |
|
||||
<div class="ele-body"> |
|
||||
<el-card shadow="never"> |
|
||||
<!-- 搜索表单 --> |
|
||||
<el-form |
|
||||
:model="where" |
|
||||
label-width="77px" |
|
||||
class="ele-form-search" |
|
||||
@keyup.enter.native="reload" |
|
||||
@submit.native.prevent> |
|
||||
<el-row :gutter="15"> |
|
||||
<el-col :md="6" :sm="12"> |
|
||||
<el-form-item label="栏目名称:"> |
|
||||
<el-input |
|
||||
v-model="where.catename" |
|
||||
placeholder="请输入" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
</el-col> |
|
||||
<el-col :md="6" :sm="12"> |
|
||||
<el-form-item label="选择模型:"> |
|
||||
<el-select |
|
||||
v-model="where.module_id" |
|
||||
class="ele-fluid" |
|
||||
placeholder="请选择模型" |
|
||||
> |
|
||||
<el-option |
|
||||
v-for="item in moduleLists" |
|
||||
:key="item.module_id" |
|
||||
:label="item.module_name" |
|
||||
:value="item.module_id"> |
|
||||
<span style="padding-left: 8px;">{{ item.module_name }}</span> |
|
||||
</el-option> |
|
||||
</el-select> |
|
||||
</el-form-item> |
|
||||
</el-col> |
|
||||
<el-col :md="12" :sm="12"> |
|
||||
<div class="ele-form-actions"> |
|
||||
<el-button |
|
||||
type="primary" |
|
||||
@click="reload" |
|
||||
icon="el-icon-search" |
|
||||
class="ele-btn-icon">查询 |
|
||||
</el-button> |
|
||||
<el-button @click="reset">重置</el-button> |
|
||||
</div> |
|
||||
</el-col> |
|
||||
</el-row> |
|
||||
|
|
||||
|
|
||||
</el-form> |
|
||||
<!-- 数据表格 --> |
|
||||
<ele-pro-table |
|
||||
ref="table" |
|
||||
:datasource="url" |
|
||||
:columns="columns" |
|
||||
:where="where" |
|
||||
:parse-data="parseData" |
|
||||
row-key="id" |
|
||||
height="calc(100vh - 265px)" |
|
||||
default-expand-all |
|
||||
:need-page="false"> |
|
||||
<!-- 表头工具栏 --> |
|
||||
<template slot="toolbar"> |
|
||||
<el-button |
|
||||
@click="openEdit(null)" |
|
||||
type="primary" |
|
||||
icon="el-icon-plus" |
|
||||
class="ele-btn-icon" |
|
||||
size="small">添加 |
|
||||
</el-button> |
|
||||
<el-button |
|
||||
@click="expandAll" |
|
||||
class="ele-btn-icon" |
|
||||
size="small">展开全部 |
|
||||
</el-button> |
|
||||
<el-button |
|
||||
@click="foldAll" |
|
||||
class="ele-btn-icon" |
|
||||
size="small">折叠全部 |
|
||||
</el-button> |
|
||||
</template> |
|
||||
<!-- 标题列 --> |
|
||||
<template slot="cate_name" slot-scope="{row}"> |
|
||||
{{ row.cate_name }} |
|
||||
</template> |
|
||||
|
|
||||
<!-- 类型列 --> |
|
||||
<template slot="is_menu" slot-scope="{row}"> |
|
||||
<el-tag |
|
||||
:type="['info','primary'][row.is_menu]" |
|
||||
size="mini"> |
|
||||
{{ [ '隐藏','显示'][row.is_menu] }} |
|
||||
</el-tag> |
|
||||
</template> |
|
||||
<!-- 跳转下级 --> |
|
||||
<template slot="is_next" slot-scope="{row}"> |
|
||||
<el-tag |
|
||||
:type="['info','primary'][row.is_next]" |
|
||||
size="mini"> |
|
||||
{{ ['否','是'][row.is_next] }} |
|
||||
</el-tag> |
|
||||
</template> |
|
||||
<!-- 状态列 --> |
|
||||
<template slot="status" slot-scope="{row}"> |
|
||||
<el-switch |
|
||||
v-model="row.status" |
|
||||
@change="editStatus(row)" |
|
||||
:active-value="1" |
|
||||
:inactive-value="0"/> |
|
||||
</template> |
|
||||
|
|
||||
<!-- 操作列 --> |
|
||||
<template slot="action" slot-scope="{row}"> |
|
||||
<el-link |
|
||||
@click="openEdit(null, row.id)" |
|
||||
icon="el-icon-plus" |
|
||||
type="primary" |
|
||||
:underline="false">添加 |
|
||||
</el-link> |
|
||||
<el-link |
|
||||
@click="openEdit(row)" |
|
||||
icon="el-icon-edit" |
|
||||
type="primary" |
|
||||
:underline="false">修改 |
|
||||
</el-link> |
|
||||
<el-popconfirm |
|
||||
title="确定要删除栏目吗?" |
|
||||
@confirm="remove(row)" |
|
||||
class="ele-action"> |
|
||||
<el-link |
|
||||
slot="reference" |
|
||||
icon="el-icon-delete" |
|
||||
type="danger" |
|
||||
:underline="false">删除 |
|
||||
</el-link> |
|
||||
</el-popconfirm> |
|
||||
</template> |
|
||||
</ele-pro-table> |
|
||||
</el-card> |
|
||||
<!-- 编辑弹窗 --> |
|
||||
<cate-edit |
|
||||
:visible.sync="showEdit" |
|
||||
:data="current" |
|
||||
:cate-list="cateList" |
|
||||
:module-list="moduleLists" |
|
||||
@done="reload"/> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import CateEdit from './cate-edit'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'Cate', |
|
||||
components: {CateEdit}, |
|
||||
data() { |
|
||||
return { |
|
||||
// 表格数据接口 |
|
||||
url: '/Cate/index', |
|
||||
// 表格列配置 |
|
||||
columns: [ |
|
||||
{ |
|
||||
columnKey: 'index', |
|
||||
type: 'index', |
|
||||
width: 45, |
|
||||
align: 'center', |
|
||||
fixed: 'left', |
|
||||
showOverflowTooltip: true |
|
||||
}, |
|
||||
|
|
||||
{ |
|
||||
prop: 'cate_name', |
|
||||
label: '栏目名称', |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 160, |
|
||||
slot: 'cate_name' |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'module_name', |
|
||||
label: '所属模块', |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 160, |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'en_name', |
|
||||
label: '英文名称', |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 110 |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'cate_folder', |
|
||||
label: '栏目目录', |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 110 |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'is_menu', |
|
||||
label: '导航状态', |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 100, |
|
||||
slot: 'is_menu' |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'is_next', |
|
||||
label: '跳转下级', |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 100, |
|
||||
slot: 'is_next' |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'sort', |
|
||||
label: '排序', |
|
||||
align: 'center', |
|
||||
showOverflowTooltip: true, |
|
||||
width: 60 |
|
||||
}, |
|
||||
|
|
||||
{ |
|
||||
prop: 'status', |
|
||||
label: '状态', |
|
||||
align: 'center', |
|
||||
sortable: 'custom', |
|
||||
width: 80, |
|
||||
resizable: false, |
|
||||
slot: 'status' |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'create_time', |
|
||||
label: '创建时间', |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 110, |
|
||||
formatter: (row, column, cellValue) => { |
|
||||
return this.$util.toDateString(cellValue); |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
columnKey: 'action', |
|
||||
label: '操作', |
|
||||
width: 190, |
|
||||
align: 'center', |
|
||||
resizable: false, |
|
||||
slot: 'action' |
|
||||
} |
|
||||
], |
|
||||
// 表格搜索条件 |
|
||||
where: {}, |
|
||||
// 表格选中数据 |
|
||||
selection: [], |
|
||||
// 当前编辑数据 |
|
||||
current: null, |
|
||||
// 是否显示编辑弹窗 |
|
||||
showEdit: false, |
|
||||
// 全部菜单数据 |
|
||||
cateList: [], |
|
||||
moduleLists:[], |
|
||||
} |
|
||||
}, |
|
||||
mounted() { |
|
||||
this.getModuleLists() |
|
||||
}, |
|
||||
methods: { |
|
||||
/* 查询模型列表 */ |
|
||||
getModuleLists(){ |
|
||||
this.$http.get('/Module/index?limit=100').then(res => { |
|
||||
if (res.data.code === 0) { |
|
||||
var moduleLists = []; |
|
||||
var tmp = {} |
|
||||
tmp['module_id'] = '0' |
|
||||
tmp['module_name'] = '请选择' |
|
||||
moduleLists[0] = tmp |
|
||||
var data_tmp = res.data.data; |
|
||||
for(var i =0;i<=res.data.data.length;i++){ |
|
||||
|
|
||||
tmp = {} |
|
||||
if(data_tmp[i]){ |
|
||||
tmp['module_id'] = data_tmp[i]['id'] |
|
||||
tmp['module_name'] = data_tmp[i]['module_name'] |
|
||||
moduleLists[i+1] = tmp ; |
|
||||
} |
|
||||
} |
|
||||
this.moduleLists = moduleLists; |
|
||||
} |
|
||||
}) |
|
||||
}, |
|
||||
/* 解析接口返回数据 */ |
|
||||
parseData(res) { |
|
||||
res.data = this.$util.toTreeData(res.data, 'id', 'parent_id'); |
|
||||
this.cateList = res.data; |
|
||||
return res; |
|
||||
}, |
|
||||
/* 刷新表格 */ |
|
||||
reload() { |
|
||||
this.$refs.table.reload(); |
|
||||
}, |
|
||||
/* 重置搜索 */ |
|
||||
reset() { |
|
||||
this.where = {}; |
|
||||
this.$nextTick(() => { |
|
||||
this.reload(); |
|
||||
}); |
|
||||
}, |
|
||||
/* 显示编辑 */ |
|
||||
openEdit(row, parent_id) { |
|
||||
this.current = Object.assign({ |
|
||||
parent_id: parent_id |
|
||||
}, row); |
|
||||
this.showEdit = true; |
|
||||
}, |
|
||||
/* 删除 */ |
|
||||
remove(row) { |
|
||||
if (row.children && row.children.length > 0) { |
|
||||
this.$message.error('请先删除子节点'); |
|
||||
return; |
|
||||
} |
|
||||
const loading = this.$loading({lock: true}); |
|
||||
this.$http.get('/Cate/delete/id/' + row.id).then(res => { |
|
||||
loading.close(); |
|
||||
if (res.data.code === 0) { |
|
||||
this.$message({type: 'success', message: res.data.msg}); |
|
||||
this.reload(); |
|
||||
} else { |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
loading.close(); |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
}, |
|
||||
/* 更改状态 */ |
|
||||
editStatus(row) { |
|
||||
const loading = this.$loading({lock: true}); |
|
||||
let params = new FormData(); |
|
||||
params.append('status', row.status); |
|
||||
params.append('en_name', row.en_name); |
|
||||
params.append('id', row.id); |
|
||||
this.$http.post('/Cate/status', params).then(res => { |
|
||||
loading.close(); |
|
||||
if (res.data.code === 0) { |
|
||||
this.$message({type: 'success', message: res.data.msg}); |
|
||||
} else { |
|
||||
row.status = !row.status ? 1 : 0; |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
loading.close(); |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
}, |
|
||||
/* 展开全部 */ |
|
||||
expandAll() { |
|
||||
this.$refs.table.data.forEach(d => { |
|
||||
this.$refs.table.toggleRowExpansion(d, true); |
|
||||
}); |
|
||||
}, |
|
||||
/* 折叠全部 */ |
|
||||
foldAll() { |
|
||||
this.$refs.table.data.forEach(d => { |
|
||||
this.$refs.table.toggleRowExpansion(d, false); |
|
||||
}); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style scoped> |
|
||||
</style> |
|
||||
@ -1,404 +0,0 @@ |
|||||
<template> |
|
||||
<div class="ele-body" id="table" v-show="loaded"> |
|
||||
<el-row :gutter="15"> |
|
||||
<el-col> |
|
||||
<el-card shadow="never" body-style="padding-top: 5px;"> |
|
||||
<el-tabs v-model="active" class="user-info-tabs"> |
|
||||
<el-tab-pane label="基础设置" name="base"> |
|
||||
<el-form |
|
||||
ref="configForm" |
|
||||
:model="form" |
|
||||
:rules="rules" |
|
||||
label-width="110px" |
|
||||
style="max-width: 450px;padding-top: 40px;" |
|
||||
@keyup.enter.native="save" |
|
||||
@submit.native.prevent> |
|
||||
<el-form-item label="网站名称:" prop="name"> |
|
||||
<el-input |
|
||||
v-model="form.name" |
|
||||
placeholder="请输入网站名称" |
|
||||
auto-complete="on" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="网站域名:" prop="host"> |
|
||||
<el-input |
|
||||
v-model="form.host" |
|
||||
placeholder="请输入网站域名" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="电脑端Logo"> |
|
||||
<el-row> |
|
||||
<el-col> |
|
||||
<el-input |
|
||||
v-model="form.logo" |
|
||||
placeholder="请上传电脑端Logo" |
|
||||
clearable/> |
|
||||
<el-upload |
|
||||
class="upload-demo" |
|
||||
:show-file-list="false" |
|
||||
:action="this.uploadImage+'?upload_type=img'" |
|
||||
:on-success="afterUploadLogo"> |
|
||||
<img v-if="form.logo" :src="form.logo" width="150" height="150" class="avatar"> |
|
||||
<i v-else class="el-icon-plus avatar-uploader-icon"></i> |
|
||||
</el-upload> |
|
||||
</el-col> |
|
||||
</el-row> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="手机端Logo:" prop="logo_phone"> |
|
||||
<el-input |
|
||||
v-model="form.logo_phone" |
|
||||
placeholder="请上传手机端Logo" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="电脑端Icon:" prop="icon"> |
|
||||
<el-input |
|
||||
v-model="form.icon" |
|
||||
placeholder="请上传电脑端电脑端Icon" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="手机端Icon:" prop="icon_phone"> |
|
||||
<el-input |
|
||||
v-model="form.icon_phone" |
|
||||
placeholder="请上传手机端Icon" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="网站备案号:" prop="record"> |
|
||||
<el-input |
|
||||
v-model="form.record" |
|
||||
placeholder="请输入网站备案号" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="公安备案号:" prop="public_security_record"> |
|
||||
<el-input |
|
||||
v-model="form.public_security_record" |
|
||||
placeholder="请输入网站公安备案号" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="版权信息:" prop="copyright"> |
|
||||
<el-input |
|
||||
v-model="form.copyright" |
|
||||
placeholder="请输入版权信息" |
|
||||
:rows="4" |
|
||||
type="textarea" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item> |
|
||||
<el-button |
|
||||
type="primary" |
|
||||
@click="save" |
|
||||
:loading="loading">保存更改 |
|
||||
</el-button> |
|
||||
</el-form-item> |
|
||||
</el-form> |
|
||||
</el-tab-pane> |
|
||||
<el-tab-pane label="SEO配置" name="seo"> |
|
||||
<el-form |
|
||||
ref="configSeoForm" |
|
||||
:model="form" |
|
||||
:rules="rules" |
|
||||
label-width="110px" |
|
||||
style="max-width: 450px;padding-top: 40px;" |
|
||||
@keyup.enter.native="save" |
|
||||
@submit.native.prevent> |
|
||||
<el-form-item label="SEO标题:" prop="seo_title"> |
|
||||
<el-input |
|
||||
v-model="form.seo_title" |
|
||||
placeholder="请输入SEO标题" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="SEO关键词:" prop="seo_keyword"> |
|
||||
<el-input |
|
||||
v-model="form.seo_keyword" |
|
||||
placeholder="请输入SEO关键词" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="SEO描述:" prop="seo_description"> |
|
||||
<el-input |
|
||||
v-model="form.seo_description" |
|
||||
placeholder="请输入SEO描述" |
|
||||
:rows="4" |
|
||||
type="textarea"/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item> |
|
||||
<el-button |
|
||||
type="primary" |
|
||||
@click="saveSeo" |
|
||||
:loading="loading">保存更改 |
|
||||
</el-button> |
|
||||
</el-form-item> |
|
||||
</el-form> |
|
||||
</el-tab-pane> |
|
||||
<el-tab-pane label="联系方式" name="contact"> |
|
||||
<el-form |
|
||||
ref="configContactForm" |
|
||||
:model="form" |
|
||||
:rules="rules" |
|
||||
label-width="110px" |
|
||||
style="max-width: 450px;padding-top: 40px;" |
|
||||
@keyup.enter.native="save" |
|
||||
@submit.native.prevent> |
|
||||
|
|
||||
<el-form-item label="联系人:" prop="contact_person"> |
|
||||
<el-input |
|
||||
v-model="form.contact_person" |
|
||||
placeholder="请输入联系人姓名" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="公司地址:" prop="address"> |
|
||||
<el-input |
|
||||
v-model="form.address" |
|
||||
placeholder="请输入公司地址" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="QQ客服:" prop="qq"> |
|
||||
<el-input |
|
||||
v-model="form.qq" |
|
||||
placeholder="请输入QQ客服" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="联系电话:" prop="tel"> |
|
||||
<el-input |
|
||||
v-model="form.tel" |
|
||||
placeholder="请输入联系电话" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="400电话:" prop="tel_400"> |
|
||||
<el-input |
|
||||
v-model="form.tel_400" |
|
||||
placeholder="请输入400电话" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="手机号码:" prop="phone"> |
|
||||
<el-input |
|
||||
v-model="form.phone" |
|
||||
placeholder="请输入手机号码" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="传真号码:" prop="fax"> |
|
||||
<el-input |
|
||||
v-model="form.fax" |
|
||||
placeholder="请输入传真号码" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="邮箱:" prop="email"> |
|
||||
<el-input |
|
||||
v-model="form.email" |
|
||||
placeholder="请输入邮箱" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="公众号二维码:" prop="qrcode_wechat"> |
|
||||
<el-input |
|
||||
v-model="form.qrcode_wechat" |
|
||||
placeholder="请上传公众号二维码" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item> |
|
||||
<el-button |
|
||||
type="primary" |
|
||||
@click="saveContact" |
|
||||
:loading="loading">保存更改 |
|
||||
</el-button> |
|
||||
</el-form-item> |
|
||||
</el-form> |
|
||||
</el-tab-pane> |
|
||||
<el-tab-pane label="统计代码" name="jscode"> |
|
||||
<el-form |
|
||||
ref="configJscodeForm" |
|
||||
:model="form" |
|
||||
:rules="rules" |
|
||||
label-width="110px" |
|
||||
style="max-width: 450px;padding-top: 40px;" |
|
||||
@keyup.enter.native="save" |
|
||||
@submit.native.prevent> |
|
||||
<el-form-item label="统计代码:" prop="js_code"> |
|
||||
<el-input |
|
||||
v-model="form.js_code" |
|
||||
placeholder="请输入统计代码" |
|
||||
:rows="4" |
|
||||
type="textarea" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="客服代码:" prop="js_code_service"> |
|
||||
<el-input |
|
||||
v-model="form.js_code_service" |
|
||||
placeholder="请输入客服代码" |
|
||||
:rows="4" |
|
||||
type="textarea" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item> |
|
||||
<el-button |
|
||||
type="primary" |
|
||||
@click="saveJscode" |
|
||||
:loading="loading">保存更改 |
|
||||
</el-button> |
|
||||
</el-form-item> |
|
||||
</el-form> |
|
||||
</el-tab-pane> |
|
||||
</el-tabs> |
|
||||
</el-card> |
|
||||
</el-col> |
|
||||
</el-row> |
|
||||
|
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import setting from "@/config/setting"; |
|
||||
|
|
||||
export default { |
|
||||
|
|
||||
name: 'ConfigIndex', |
|
||||
data() { |
|
||||
return { |
|
||||
uploadImage: setting.uploadImageUrl, |
|
||||
// tab页选中 |
|
||||
active: 'base', |
|
||||
labelPosition: 'left', |
|
||||
// 表单数据 |
|
||||
form: {}, |
|
||||
// 表单验证规则 |
|
||||
rules: { |
|
||||
name: [ |
|
||||
{required: true, message: '请输入网站名称', trigger: 'blur'} |
|
||||
], |
|
||||
host: [ |
|
||||
{required: true, message: '请输入网站域名', trigger: 'blur'} |
|
||||
], |
|
||||
}, |
|
||||
// 保存按钮loading |
|
||||
loading: false, |
|
||||
// 是否显示裁剪弹窗 |
|
||||
showCropper: false, |
|
||||
// 加载完成 |
|
||||
loaded: false, |
|
||||
} |
|
||||
}, |
|
||||
created() { |
|
||||
this.loading = true; |
|
||||
this.$http.get('/config/index').then(res => { |
|
||||
this.loading = false; |
|
||||
if (res.data.code === 0) { |
|
||||
this.form = res.data.data; |
|
||||
} else { |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
this.loaded = true; |
|
||||
}).catch(e => { |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
}, |
|
||||
methods: { |
|
||||
afterUploadLogo(response) { |
|
||||
if (response.code != 0 || response.url == '') { |
|
||||
this.$message.error(response.msg) |
|
||||
} else { |
|
||||
this.form.logo = response.url |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
/* 保存更改 */ |
|
||||
save() { |
|
||||
this.$refs['configForm'].validate((valid) => { |
|
||||
return this.postSave(valid); |
|
||||
}); |
|
||||
}, |
|
||||
saveSeo() { |
|
||||
this.$refs['configSeoForm'].validate((valid) => { |
|
||||
return this.postSave(valid); |
|
||||
}); |
|
||||
}, |
|
||||
saveContact() { |
|
||||
|
|
||||
this.$refs['configContactForm'].validate((valid) => { |
|
||||
return this.postSave(valid); |
|
||||
}); |
|
||||
}, |
|
||||
saveJscode() { |
|
||||
this.$refs['configJscodeForm'].validate((valid) => { |
|
||||
return this.postSave(valid); |
|
||||
}); |
|
||||
}, |
|
||||
postSave(valid) { |
|
||||
if (!valid) { |
|
||||
return false; |
|
||||
} |
|
||||
this.loading = true; |
|
||||
this.$http.post('/config/save', this.form).then(res => { |
|
||||
this.loading = false; |
|
||||
if (res.data.code === 0) { |
|
||||
this.$message({type: 'success', message: res.data.msg}); |
|
||||
} else { |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
this.loading = false; |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
}, |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style scoped> |
|
||||
.ele-body { |
|
||||
padding-bottom: 0; |
|
||||
} |
|
||||
|
|
||||
.el-card { |
|
||||
margin-bottom: 15px; |
|
||||
} |
|
||||
|
|
||||
/* tab页签 */ |
|
||||
.user-info-tabs ::v-deep .el-tabs__nav-wrap { |
|
||||
padding-left: 20px; |
|
||||
} |
|
||||
|
|
||||
/* 电脑端头像 */ |
|
||||
.upload-demo{ |
|
||||
padding-top: 15px; |
|
||||
} |
|
||||
|
|
||||
.avatar-uploader-icon { |
|
||||
border: 1px solid #D9D9D9; |
|
||||
font-size: 28px; |
|
||||
color: #409EFF; |
|
||||
width: 148px; |
|
||||
height: 148px; |
|
||||
line-height: 148px; |
|
||||
text-align: center; |
|
||||
border-radius: 6px; |
|
||||
} |
|
||||
.avatar-uploader-icon:hover { |
|
||||
border-color: #409EFF; |
|
||||
} |
|
||||
.avatar { |
|
||||
display: block; |
|
||||
width: 150px; |
|
||||
height: 150px; |
|
||||
border-radius: 6px; |
|
||||
} |
|
||||
</style> |
|
||||
@ -1,470 +0,0 @@ |
|||||
<template> |
|
||||
<div class="ele-body"> |
|
||||
<el-card shadow="never" body-style="padding:0;"> |
|
||||
<div class="ele-cell ele-cell-align-top ele-user-message"> |
|
||||
<el-menu |
|
||||
:default-active="active" |
|
||||
:mode="mode" |
|
||||
@select="query"> |
|
||||
<el-menu-item index="0"> |
|
||||
<span>全部消息</span> |
|
||||
<el-badge |
|
||||
v-if="allUnReadNum" |
|
||||
:value="allUnReadNum" |
|
||||
class="ele-badge-static"/> |
|
||||
</el-menu-item> |
|
||||
<el-menu-item index="1"> |
|
||||
<span>系统通知</span> |
|
||||
<el-badge |
|
||||
v-if="unReadNum1" |
|
||||
:value="unReadNum1" |
|
||||
class="ele-badge-static"/> |
|
||||
</el-menu-item> |
|
||||
<el-menu-item index="2"> |
|
||||
<span>用户私信</span> |
|
||||
<el-badge |
|
||||
v-if="unReadNum2" |
|
||||
:value="unReadNum2" |
|
||||
class="ele-badge-static"/> |
|
||||
</el-menu-item> |
|
||||
<el-menu-item index="3"> |
|
||||
<span>代办事项</span> |
|
||||
<el-badge |
|
||||
v-if="unReadNum3" |
|
||||
:value="unReadNum3" |
|
||||
class="ele-badge-static"/> |
|
||||
</el-menu-item> |
|
||||
</el-menu> |
|
||||
<div class="ele-cell-content"> |
|
||||
<!-- 数据表格 --> |
|
||||
<ele-pro-table |
|
||||
ref="table" |
|
||||
:datasource="data" |
|
||||
:columns="columns" |
|
||||
:selection.sync="choose"> |
|
||||
<template slot="toolbar"> |
|
||||
<el-button |
|
||||
size="small" |
|
||||
@click="read" |
|
||||
type="primary" |
|
||||
plain>标记已读 |
|
||||
</el-button> |
|
||||
<el-button |
|
||||
size="small" |
|
||||
@click="readAll" |
|
||||
type="primary" |
|
||||
plain>全部已读 |
|
||||
</el-button> |
|
||||
<el-button |
|
||||
size="small" |
|
||||
@click="remove()" |
|
||||
type="danger" |
|
||||
plain>删除消息 |
|
||||
</el-button> |
|
||||
</template> |
|
||||
<template slot="state" slot-scope="{row}"> |
|
||||
<span :class="['ele-text-danger','ele-text-info'][row.state]"> |
|
||||
{{ ['未读', '已读'][row.state] }} |
|
||||
</span> |
|
||||
</template> |
|
||||
<template slot="action" slot-scope="{row}"> |
|
||||
<el-link |
|
||||
@click="view(row)" |
|
||||
icon="el-icon-view" |
|
||||
type="primary" |
|
||||
:underline="false">查看 |
|
||||
</el-link> |
|
||||
<el-popconfirm |
|
||||
title="确定要删除此消息吗?" |
|
||||
@confirm="remove(row)" |
|
||||
class="ele-action"> |
|
||||
<el-link |
|
||||
slot="reference" |
|
||||
icon="el-icon-delete" |
|
||||
type="danger" |
|
||||
:underline="false">删除 |
|
||||
</el-link> |
|
||||
</el-popconfirm> |
|
||||
</template> |
|
||||
</ele-pro-table> |
|
||||
</div> |
|
||||
</div> |
|
||||
</el-card> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
name: 'UserMessage', |
|
||||
data() { |
|
||||
return { |
|
||||
// 导航选中 |
|
||||
active: '0', |
|
||||
// 列表显示数据 |
|
||||
data: [], |
|
||||
columns: [ |
|
||||
{ |
|
||||
columnKey: 'selection', |
|
||||
type: 'selection', |
|
||||
width: 45, |
|
||||
align: 'center', |
|
||||
fixed: 'left' |
|
||||
}, |
|
||||
{ |
|
||||
columnKey: 'index', |
|
||||
type: 'index', |
|
||||
width: 45, |
|
||||
align: 'center', |
|
||||
fixed: 'left', |
|
||||
showOverflowTooltip: true |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'title', |
|
||||
label: '标题内容', |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 110 |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'time', |
|
||||
label: '时间', |
|
||||
align: 'center', |
|
||||
showOverflowTooltip: true, |
|
||||
width: 140 |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'state', |
|
||||
label: '状态', |
|
||||
align: 'center', |
|
||||
showOverflowTooltip: true, |
|
||||
width: 80, |
|
||||
slot: 'state' |
|
||||
}, |
|
||||
{ |
|
||||
columnKey: 'action', |
|
||||
label: '操作', |
|
||||
align: 'center', |
|
||||
showOverflowTooltip: true, |
|
||||
width: 140, |
|
||||
fixed: 'right', |
|
||||
resizable: false, |
|
||||
slot: 'action' |
|
||||
} |
|
||||
], |
|
||||
// 列表选中数据 |
|
||||
choose: [], |
|
||||
// 全部数据 |
|
||||
allData: [ |
|
||||
{ |
|
||||
title: '你有两条任务待完成,不要忘了哦~', |
|
||||
type: 3, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 0 |
|
||||
}, |
|
||||
{ |
|
||||
title: '你有两条任务待完成,不要忘了哦~', |
|
||||
type: 3, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 0 |
|
||||
}, |
|
||||
{ |
|
||||
title: '你有两条任务待完成,不要忘了哦~', |
|
||||
type: 3, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 0 |
|
||||
}, |
|
||||
{ |
|
||||
title: '你有两条任务待完成,不要忘了哦~', |
|
||||
type: 3, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 0 |
|
||||
}, |
|
||||
{ |
|
||||
title: '你有两条任务待完成,不要忘了哦~', |
|
||||
type: 3, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: '你有两条任务待完成,不要忘了哦~', |
|
||||
type: 3, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: '你有两条任务待完成,不要忘了哦~', |
|
||||
type: 3, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: '你有两条任务待完成,不要忘了哦~', |
|
||||
type: 3, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: '你有两条任务待完成,不要忘了哦~', |
|
||||
type: 3, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: '你有两条任务待完成,不要忘了哦~', |
|
||||
type: 3, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'Jasmine给你发来了一条私信', |
|
||||
type: 2, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 0 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'Jasmine给你发来了一条私信', |
|
||||
type: 2, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 0 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'Jasmine给你发来了一条私信', |
|
||||
type: 2, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 0 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'Jasmine给你发来了一条私信', |
|
||||
type: 2, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'Jasmine给你发来了一条私信', |
|
||||
type: 2, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'Jasmine给你发来了一条私信', |
|
||||
type: 2, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'Jasmine给你发来了一条私信', |
|
||||
type: 2, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'Jasmine给你发来了一条私信', |
|
||||
type: 2, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'Jasmine给你发来了一条私信', |
|
||||
type: 2, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'Jasmine给你发来了一条私信', |
|
||||
type: 2, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'EleAdmin新版本发布,欢迎体验', |
|
||||
type: 1, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 0 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'EleAdmin新版本发布,欢迎体验', |
|
||||
type: 1, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 0 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'EleAdmin新版本发布,欢迎体验', |
|
||||
type: 1, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'EleAdmin新版本发布,欢迎体验', |
|
||||
type: 1, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'EleAdmin新版本发布,欢迎体验', |
|
||||
type: 1, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'EleAdmin新版本发布,欢迎体验', |
|
||||
type: 1, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'EleAdmin新版本发布,欢迎体验', |
|
||||
type: 1, time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'EleAdmin新版本发布,欢迎体验', |
|
||||
type: 1, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'EleAdmin新版本发布,欢迎体验', |
|
||||
type: 1, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
}, |
|
||||
{ |
|
||||
title: 'EleAdmin新版本发布,欢迎体验', |
|
||||
type: 1, |
|
||||
time: '2020-07-24 11:35', |
|
||||
state: 1 |
|
||||
} |
|
||||
] |
|
||||
} |
|
||||
}, |
|
||||
computed: { |
|
||||
// 小屏幕水平导航 |
|
||||
mode() { |
|
||||
return this.$store.state.theme.screenWidth < 768 ? 'horizontal' : 'vertical'; |
|
||||
}, |
|
||||
// 全部未读数量 |
|
||||
allUnReadNum() { |
|
||||
return this.allData.filter(d => d.state === 0).length; |
|
||||
}, |
|
||||
// 通知未读数量 |
|
||||
unReadNum1() { |
|
||||
return this.allData.filter(d => d.state === 0 && d.type === 1).length; |
|
||||
}, |
|
||||
// 私信未读数量 |
|
||||
unReadNum2() { |
|
||||
return this.allData.filter(d => d.state === 0 && d.type === 2).length; |
|
||||
}, |
|
||||
// 代办未读数量 |
|
||||
unReadNum3() { |
|
||||
return this.allData.filter(d => d.state === 0 && d.type === 3).length; |
|
||||
} |
|
||||
}, |
|
||||
mounted() { |
|
||||
this.query(); |
|
||||
}, |
|
||||
methods: { |
|
||||
/* 查询数据 */ |
|
||||
query(index) { |
|
||||
this.active = index || '0'; |
|
||||
if (this.active === '0') { |
|
||||
this.data = this.allData; |
|
||||
} else { |
|
||||
this.data = this.allData.filter(d => String(d.type) === this.active); |
|
||||
} |
|
||||
}, |
|
||||
/* 查看 */ |
|
||||
view(row) { |
|
||||
console.log(row); |
|
||||
this.$message('点击了查看'); |
|
||||
}, |
|
||||
/* 删除 */ |
|
||||
remove(row) { |
|
||||
if (row) { |
|
||||
// 单个删除 |
|
||||
this.data.splice(this.data.indexOf(row), 1); |
|
||||
this.$message({type: 'success', message: '删除成功'}); |
|
||||
} else { |
|
||||
// 批量删除 |
|
||||
if (this.choose.length === 0) { |
|
||||
return this.$message.error('请至少选择一条数据'); |
|
||||
} |
|
||||
this.$confirm('确定要删除选中的消息吗?', '提示', { |
|
||||
type: 'warning' |
|
||||
}).then(() => { |
|
||||
this.choose.forEach(d => { |
|
||||
this.data.splice(this.data.indexOf(d), 1); |
|
||||
}); |
|
||||
this.$message({type: 'success', message: '删除成功'}); |
|
||||
}).catch(() => { |
|
||||
}); |
|
||||
} |
|
||||
}, |
|
||||
/* 标记已读 */ |
|
||||
read() { |
|
||||
if (this.choose.length === 0) { |
|
||||
return this.$message.error('请至少选择一条数据'); |
|
||||
} |
|
||||
this.choose.forEach(d => { |
|
||||
this.data[this.data.indexOf(d)].state = 1; |
|
||||
}); |
|
||||
}, |
|
||||
/* 全部标记已读 */ |
|
||||
readAll() { |
|
||||
this.data.forEach(d => { |
|
||||
d.state = 1; |
|
||||
}); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style scoped> |
|
||||
.ele-user-message ::v-deep .el-menu { |
|
||||
flex-shrink: 0; |
|
||||
} |
|
||||
|
|
||||
.ele-user-message .ele-cell-content { |
|
||||
padding: 15px; |
|
||||
box-sizing: border-box; |
|
||||
overflow: auto; |
|
||||
} |
|
||||
|
|
||||
.ele-user-message .ele-badge-static { |
|
||||
margin-left: 10px; |
|
||||
} |
|
||||
|
|
||||
@media screen and (min-width: 768px) { |
|
||||
.ele-user-message ::v-deep .el-menu-item { |
|
||||
min-width: 150px; |
|
||||
text-align: right; |
|
||||
border-right: 2px solid transparent; |
|
||||
} |
|
||||
|
|
||||
.ele-user-message ::v-deep .el-menu-item:first-child { |
|
||||
margin-top: 15px; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
@media screen and (max-width: 768px) { |
|
||||
.ele-user-message { |
|
||||
display: block; |
|
||||
} |
|
||||
|
|
||||
.ele-user-message ::v-deep .el-menu-item { |
|
||||
height: 45px; |
|
||||
line-height: 45px; |
|
||||
padding: 0 5px; |
|
||||
display: inline-block; |
|
||||
float: none; |
|
||||
} |
|
||||
|
|
||||
.ele-user-message ::v-deep .el-menu { |
|
||||
text-align: center; |
|
||||
white-space: nowrap; |
|
||||
overflow: auto; |
|
||||
} |
|
||||
|
|
||||
.ele-user-message .ele-badge-static { |
|
||||
margin-left: 3px; |
|
||||
} |
|
||||
} |
|
||||
</style> |
|
||||
@ -1,240 +0,0 @@ |
|||||
<!-- 用户编辑弹窗 --> |
|
||||
<template> |
|
||||
<el-dialog |
|
||||
:title="isUpdate?'修改用户':'添加用户'" |
|
||||
:visible="visible" |
|
||||
width="600px" |
|
||||
:destroy-on-close="true" |
|
||||
:lock-scroll="false" |
|
||||
custom-class="ele-dialog-form" |
|
||||
@update:visible="updateVisible"> |
|
||||
<el-form |
|
||||
:model="form" |
|
||||
ref="form" |
|
||||
:rules="rules" |
|
||||
label-width="82px"> |
|
||||
<el-row :gutter="15"> |
|
||||
<el-col :sm="12"> |
|
||||
<el-form-item label="所属机构:"> |
|
||||
<treeselect |
|
||||
v-model="form.organizationId" |
|
||||
:options="organizationList" |
|
||||
placeholder="请选择所属机构" |
|
||||
:defaultExpandLevel="4" |
|
||||
:normalizer="normalizer"/> |
|
||||
</el-form-item> |
|
||||
<el-form-item |
|
||||
label="用户账号:" |
|
||||
prop="username"> |
|
||||
<el-input |
|
||||
v-model="form.username" |
|
||||
placeholder="请输入账号" |
|
||||
clearable |
|
||||
:disabled="isUpdate"/> |
|
||||
</el-form-item> |
|
||||
<el-form-item |
|
||||
label="用户名:" |
|
||||
prop="nickname"> |
|
||||
<el-input |
|
||||
v-model="form.nickname" |
|
||||
placeholder="请输入用户名" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
<el-form-item |
|
||||
label="性别:" |
|
||||
prop="sex"> |
|
||||
<el-select |
|
||||
v-model="form.sex" |
|
||||
placeholder="请选择性别" |
|
||||
class="ele-block" |
|
||||
clearable> |
|
||||
<el-option label="男" :value="1"/> |
|
||||
<el-option label="女" :value="2"/> |
|
||||
</el-select> |
|
||||
</el-form-item> |
|
||||
<el-form-item |
|
||||
label="角色:" |
|
||||
prop="roleIds"> |
|
||||
<el-select |
|
||||
v-model="form.roleIds" |
|
||||
placeholder="请选择角色" |
|
||||
class="ele-block" |
|
||||
clearable |
|
||||
multiple> |
|
||||
<el-option |
|
||||
v-for="(item,index) in roleList" |
|
||||
:key="index" |
|
||||
:label="item.roleName" |
|
||||
:value="item.roleId"/> |
|
||||
</el-select> |
|
||||
</el-form-item> |
|
||||
</el-col> |
|
||||
<el-col :sm="12"> |
|
||||
<el-form-item label="手机号:"> |
|
||||
<el-input |
|
||||
v-model="form.phone" |
|
||||
placeholder="请输入手机号" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="邮箱:"> |
|
||||
<el-input |
|
||||
v-model="form.email" |
|
||||
placeholder="请输入邮箱" |
|
||||
clearable/> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="个人简介:"> |
|
||||
<el-input |
|
||||
v-model="form.introduction" |
|
||||
placeholder="请输入个人简介" |
|
||||
:rows="4" |
|
||||
type="textarea"/> |
|
||||
</el-form-item> |
|
||||
<el-form-item |
|
||||
v-if="!isUpdate" |
|
||||
label="登录密码:" |
|
||||
prop="password"> |
|
||||
<el-input |
|
||||
v-model="form.password" |
|
||||
placeholder="请输入登录密码" |
|
||||
show-password/> |
|
||||
</el-form-item> |
|
||||
</el-col> |
|
||||
</el-row> |
|
||||
</el-form> |
|
||||
<div slot="footer"> |
|
||||
<el-button @click="updateVisible(false)">取消</el-button> |
|
||||
<el-button |
|
||||
type="primary" |
|
||||
@click="save" |
|
||||
:loading="loading">保存 |
|
||||
</el-button> |
|
||||
</div> |
|
||||
</el-dialog> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import Treeselect from '@riophae/vue-treeselect' |
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css' |
|
||||
|
|
||||
export default { |
|
||||
name: 'ContentEdit', |
|
||||
components: {Treeselect}, |
|
||||
props: { |
|
||||
// 弹窗是否打开 |
|
||||
visible: Boolean, |
|
||||
// 修改回显的数据 |
|
||||
data: Object, |
|
||||
// 全部机构 |
|
||||
organizationList: Array, |
|
||||
// 机构id |
|
||||
organizationId: Number |
|
||||
}, |
|
||||
data() { |
|
||||
return { |
|
||||
// 表单数据 |
|
||||
form: Object.assign({}, this.data, { |
|
||||
organizationId: this.organizationId |
|
||||
}), |
|
||||
// 表单验证规则 |
|
||||
rules: { |
|
||||
username: [ |
|
||||
{required: true, message: '请输入账号', trigger: 'blur'} |
|
||||
], |
|
||||
nickname: [ |
|
||||
{required: true, message: '请输入用户名', trigger: 'blur'} |
|
||||
], |
|
||||
sex: [ |
|
||||
{required: true, message: '请选择性别', trigger: 'blur'} |
|
||||
], |
|
||||
roleIds: [ |
|
||||
{required: true, message: '请选择角色', trigger: 'blur'} |
|
||||
], |
|
||||
password: [ |
|
||||
{required: true, message: '请输入登录密码', trigger: 'blur'} |
|
||||
] |
|
||||
}, |
|
||||
// 提交状态 |
|
||||
loading: false, |
|
||||
// 是否是修改 |
|
||||
isUpdate: false, |
|
||||
// 角色列表 |
|
||||
roleList: [] |
|
||||
} |
|
||||
}, |
|
||||
watch: { |
|
||||
data() { |
|
||||
if (this.data) { |
|
||||
this.form = Object.assign({}, this.data, { |
|
||||
roleIds: this.data.roles.map(d => d.roleId) |
|
||||
}); |
|
||||
this.isUpdate = true; |
|
||||
} else { |
|
||||
this.form = {organizationId: this.organizationId}; |
|
||||
this.isUpdate = false; |
|
||||
} |
|
||||
}, |
|
||||
organizationId() { |
|
||||
if (!this.isUpdate) { |
|
||||
this.form = {organizationId: this.organizationId}; |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
mounted() { |
|
||||
// this.queryRoles(); // 查询角色列表 |
|
||||
}, |
|
||||
methods: { |
|
||||
/* 下拉树组件格式化数据 */ |
|
||||
normalizer(d) { |
|
||||
return { |
|
||||
id: d.organizationId, |
|
||||
label: d.organizationName |
|
||||
}; |
|
||||
}, |
|
||||
/* 保存编辑 */ |
|
||||
save() { |
|
||||
this.$refs['form'].validate((valid) => { |
|
||||
if (valid) { |
|
||||
this.loading = true; |
|
||||
this.$http[this.isUpdate ? 'put' : 'post']('/sys/user', this.form).then(res => { |
|
||||
this.loading = false; |
|
||||
if (res.data.code === 0) { |
|
||||
this.$message({type: 'success', message: res.data.msg}); |
|
||||
if (!this.isUpdate) { |
|
||||
this.form = {}; |
|
||||
} |
|
||||
this.updateVisible(false); |
|
||||
this.$emit('done'); |
|
||||
} else { |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
this.loading = false; |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
} else { |
|
||||
return false; |
|
||||
} |
|
||||
}); |
|
||||
}, |
|
||||
/* 更新visible */ |
|
||||
updateVisible(value) { |
|
||||
this.$emit('update:visible', value); |
|
||||
}, |
|
||||
/* 查询角色列表 */ |
|
||||
queryRoles() { |
|
||||
this.$http.get('/sys/role').then(res => { |
|
||||
if (res.data.code === 0) { |
|
||||
this.roleList = res.data.data; |
|
||||
} else { |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style scoped> |
|
||||
</style> |
|
||||
@ -1,234 +0,0 @@ |
|||||
<template> |
|
||||
<div> |
|
||||
<!-- 数据表格 --> |
|
||||
<ele-pro-table |
|
||||
ref="table" |
|
||||
:datasource="url" |
|
||||
:columns="columns" |
|
||||
:where="where" |
|
||||
height="calc(100vh - 261px)" |
|
||||
tool-class="ele-toolbar-form"> |
|
||||
<!-- 表头工具栏 --> |
|
||||
<template slot="toolbar"> |
|
||||
<el-form |
|
||||
:model="where" |
|
||||
class="ele-form-search" |
|
||||
size="small" |
|
||||
@keyup.enter.native="reload" |
|
||||
@submit.native.prevent> |
|
||||
<el-row :gutter="10"> |
|
||||
<el-col :md="8"> |
|
||||
<el-form-item> |
|
||||
<el-input |
|
||||
v-model="where.title" |
|
||||
placeholder="请输入标题" |
|
||||
clearable |
|
||||
size="small"/> |
|
||||
</el-form-item> |
|
||||
</el-col> |
|
||||
<el-col :md="15"> |
|
||||
<div class="ele-form-actions"> |
|
||||
<el-button |
|
||||
type="primary" |
|
||||
@click="reload" |
|
||||
icon="el-icon-search" |
|
||||
class="ele-btn-icon" |
|
||||
size="small">查询 |
|
||||
</el-button> |
|
||||
<el-button |
|
||||
@click="openEdit(null)" |
|
||||
type="primary" |
|
||||
icon="el-icon-plus" |
|
||||
class="ele-btn-icon" |
|
||||
size="small">添加 |
|
||||
</el-button> |
|
||||
</div> |
|
||||
</el-col> |
|
||||
</el-row> |
|
||||
</el-form> |
|
||||
</template> |
|
||||
<!-- 角色列 --> |
|
||||
<!-- 状态列 --> |
|
||||
<template slot="state" slot-scope="{row}"> |
|
||||
<el-switch |
|
||||
v-model="row.status" |
|
||||
@change="editState(row)" |
|
||||
:active-value="1" |
|
||||
:inactive-value="0"/> |
|
||||
</template> |
|
||||
<!-- 操作列 --> |
|
||||
<template slot="action" slot-scope="{row}"> |
|
||||
<el-link |
|
||||
@click="openEdit(row)" |
|
||||
icon="el-icon-edit" |
|
||||
type="primary" |
|
||||
:underline="false">修改 |
|
||||
</el-link> |
|
||||
<el-popconfirm |
|
||||
title="确定要删除此用户吗?" |
|
||||
@confirm="remove(row)" |
|
||||
class="ele-action"> |
|
||||
<el-link |
|
||||
slot="reference" |
|
||||
icon="el-icon-delete" |
|
||||
type="danger" |
|
||||
:underline="false">删除 |
|
||||
</el-link> |
|
||||
</el-popconfirm> |
|
||||
</template> |
|
||||
</ele-pro-table> |
|
||||
<!-- 编辑弹窗 --> |
|
||||
<content-edit |
|
||||
:visible.sync="showEdit" |
|
||||
:data="current" |
|
||||
:cate_list="cate_list" |
|
||||
:cate_id="cate_id" |
|
||||
@done="reload"/> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import ContentEdit from './content-edit'; |
|
||||
|
|
||||
export default { |
|
||||
name: 'contentList', |
|
||||
components: {ContentEdit}, |
|
||||
props: { |
|
||||
// 机构id |
|
||||
cate_id: Number, |
|
||||
// 全部机构 |
|
||||
cate_list: Array |
|
||||
}, |
|
||||
data() { |
|
||||
return { |
|
||||
// 表格数据接口 |
|
||||
url: '/content/index', |
|
||||
// 表格列配置 |
|
||||
columns: [ |
|
||||
{ |
|
||||
columnKey: 'index', |
|
||||
type: 'index', |
|
||||
width: 45, |
|
||||
align: 'center', |
|
||||
fixed: 'left', |
|
||||
showOverflowTooltip: true |
|
||||
}, |
|
||||
|
|
||||
{ |
|
||||
prop: 'title', |
|
||||
label: '标题', |
|
||||
sortable: 'custom', |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 110 |
|
||||
}, |
|
||||
|
|
||||
{ |
|
||||
prop: 'createTime', |
|
||||
label: '创建时间', |
|
||||
sortable: 'custom', |
|
||||
showOverflowTooltip: true, |
|
||||
minWidth: 110, |
|
||||
formatter: (row, column, cellValue) => { |
|
||||
return this.$util.toDateString(cellValue); |
|
||||
} |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'status', |
|
||||
label: '状态', |
|
||||
align: 'center', |
|
||||
sortable: 'custom', |
|
||||
width: 80, |
|
||||
resizable: false, |
|
||||
slot: 'state' |
|
||||
}, |
|
||||
{ |
|
||||
prop: 'sort', |
|
||||
label: '排序', |
|
||||
align: 'center', |
|
||||
sortable: 'custom', |
|
||||
width: 80, |
|
||||
}, |
|
||||
{ |
|
||||
columnKey: 'action', |
|
||||
label: '操作', |
|
||||
width: 130, |
|
||||
align: 'center', |
|
||||
resizable: false, |
|
||||
slot: 'action' |
|
||||
} |
|
||||
], |
|
||||
response: { |
|
||||
statusName: 'code', // 数据状态的字段名称,支持嵌套写法(xxx.xxx) |
|
||||
statusCode: 0, // 成功的状态码,例如改成200 |
|
||||
msgName: 'msg', // 信息的字段名称,支持嵌套 |
|
||||
dataName: 'data.content_data', // 数据列表的字段名称,支持嵌套,例如:result.list |
|
||||
countName: 'count' // 数据总数的字段名称,支持嵌套 |
|
||||
}, |
|
||||
// 表格搜索条件 |
|
||||
where: { |
|
||||
cate_id: this.cate_id |
|
||||
}, |
|
||||
// 当前编辑数据 |
|
||||
current: null, |
|
||||
// 是否显示编辑弹窗 |
|
||||
showEdit: false |
|
||||
} |
|
||||
}, |
|
||||
methods: { |
|
||||
|
|
||||
/* 刷新表格 */ |
|
||||
reload() { |
|
||||
this.$refs.table.reload({page: 1}); |
|
||||
}, |
|
||||
/* 显示编辑 */ |
|
||||
openEdit(row) { |
|
||||
this.current = row; |
|
||||
this.showEdit = true; |
|
||||
}, |
|
||||
/* 删除 */ |
|
||||
remove(row) { |
|
||||
const loading = this.$loading({lock: true}); |
|
||||
this.$http.get('/Content/delete/id/' + row.id).then(res => { |
|
||||
loading.close(); |
|
||||
if (res.data.code === 0) { |
|
||||
this.$message({type: 'success', message: res.data.msg}); |
|
||||
this.reload(); |
|
||||
} else { |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
loading.close(); |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
}, |
|
||||
/* 更改状态 */ |
|
||||
editState(row) { |
|
||||
const loading = this.$loading({lock: true}); |
|
||||
let params = new FormData(); |
|
||||
params.append('status', row.status); |
|
||||
this.$http.put('/Content/status/' + row.id, params).then(res => { |
|
||||
loading.close(); |
|
||||
if (res.data.code === 0) { |
|
||||
this.$message({type: 'success', message: res.data.msg}); |
|
||||
} else { |
|
||||
row.state = !row.state ? 1 : 0; |
|
||||
this.$message.error(res.data.msg); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
loading.close(); |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
} |
|
||||
}, |
|
||||
watch: { |
|
||||
// 监听机构id变化 |
|
||||
cate_id() { |
|
||||
this.where.cate_id = this.cate_id; |
|
||||
this.reload(); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style scoped> |
|
||||
</style> |
|
||||
@ -1,105 +0,0 @@ |
|||||
<template> |
|
||||
<div class="ele-body"> |
|
||||
<el-card |
|
||||
shadow="never" |
|
||||
v-loading="loading" |
|
||||
body-style="padding-bottom: 0;"> |
|
||||
<el-row :gutter="15"> |
|
||||
<el-col :md="6" style="margin-bottom: 15px;"> |
|
||||
<!-- 机构列表 --> |
|
||||
<div class="org-tree-group"> |
|
||||
<el-tree |
|
||||
ref="tree" |
|
||||
:data="data" |
|
||||
:props="{label: 'cate_name'}" |
|
||||
:expand-on-click-node="false" |
|
||||
node-key="id" |
|
||||
:default-expand-all="false" |
|
||||
@node-click="onNodeClick" |
|
||||
highlight-current/> |
|
||||
</div> |
|
||||
</el-col> |
|
||||
<!-- 内容列表 --> |
|
||||
<el-col :md="18" style="margin-bottom: 15px;"> |
|
||||
<content-list |
|
||||
v-if="current" |
|
||||
:cate_id="current.id" |
|
||||
:cate_list="data" /> |
|
||||
</el-col> |
|
||||
</el-row> |
|
||||
</el-card> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
|
|
||||
import ContentList from './content-list'; |
|
||||
export default { |
|
||||
name: 'Content', |
|
||||
components: {ContentList}, |
|
||||
data() { |
|
||||
return { |
|
||||
// 加载状态 |
|
||||
loading: true, |
|
||||
// 列表数据 |
|
||||
data: [], |
|
||||
// 选中数据 |
|
||||
current: null, |
|
||||
// 是否显示表单弹窗 |
|
||||
showEdit: false, |
|
||||
// 编辑回显数据 |
|
||||
editData: null |
|
||||
} |
|
||||
}, |
|
||||
mounted() { |
|
||||
this.query(); |
|
||||
}, |
|
||||
methods: { |
|
||||
/* 查询 */ |
|
||||
query() { |
|
||||
this.loading = true; |
|
||||
this.$http.get('/Cate/index').then(res => { |
|
||||
this.loading = false; |
|
||||
if (res.data.code === 0) { |
|
||||
this.data = this.$util.toTreeData(res.data.data, 'id', 'parent_id'); |
|
||||
this.$nextTick(() => { |
|
||||
this.onNodeClick(this.data[0]); |
|
||||
}); |
|
||||
} else { |
|
||||
this.$message.error(res.data.msg || '获取数据失败'); |
|
||||
} |
|
||||
}).catch(e => { |
|
||||
this.loading = false; |
|
||||
this.$message.error(e.message); |
|
||||
}); |
|
||||
}, |
|
||||
/* 选择数据 */ |
|
||||
onNodeClick(row) { |
|
||||
if (row != null) { |
|
||||
this.current = row; |
|
||||
this.$refs.tree.setCurrentKey(row.id); |
|
||||
} else { |
|
||||
this.current = null; |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style scoped> |
|
||||
.org-tree-group { |
|
||||
border: 1px solid hsla(0, 0%, 60%, .15); |
|
||||
height: calc(100vh - 262px); |
|
||||
box-sizing: border-box; |
|
||||
overflow: auto; |
|
||||
} |
|
||||
|
|
||||
.org-tree-group ::v-deep .el-tree-node__content { |
|
||||
height: 40px; |
|
||||
} |
|
||||
|
|
||||
.org-tree-group ::v-deep .el-tree-node__content > .el-tree-node__expand-icon { |
|
||||
margin-left: 10px; |
|
||||
} |
|
||||
</style> |
|
||||
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue