Skip to content

Commit

Permalink
Merge branch 'master' into bug_76
Browse files Browse the repository at this point in the history
  • Loading branch information
Labbé nicolas committed Dec 14, 2016
2 parents 7c914d7 + 5b5be35 commit 8504e79
Show file tree
Hide file tree
Showing 28 changed files with 2,429 additions and 112 deletions.
28 changes: 27 additions & 1 deletion docs/types/abe-rich.md
Expand Up @@ -8,4 +8,30 @@
{{abe type='rich' key='rich_key' desc='give some tips' tab='default'}}
```

###Parameters
This will display the rich default rich textarea based on [wysiwygjs](http://wysiwygjs.github.io/)

A toolbar attribut allow to customize the rich textarea (display / hide customization buttons), by default toolbar="*"

###Toolbar parameters
- bold
- italic
- underline
- strikethrough
- forecolor
- highlight
- align (add align [left|right|center|justify] buttons)
- subscript
- superscript
- indent (add [indent|outdent] buttons)
- insertList
- removeFormat
- insertLink
- code
- list (ordered & unordered)
- media (upload image & video)

exemple :

```html
{{abe type='rich' key='may_text_rich' desc='some description' toolbar='bold,italic'}}
```
2 changes: 1 addition & 1 deletion src/cli/cms/data/regex.js
@@ -1,4 +1,4 @@
export let abeTag = /({{abe.*?[\s\S].*?}})/g
export let abeTag = /({{abe.*?[\s\S].*?}})/g;
//
export let abePattern = /[^"']({{abe.*?type=[\'|\"][text|rich|textarea]+[\'|\"][\s\S].*?}})/g
// This pattern finds all abe tags enclosed in a HTML tag attribute
Expand Down
108 changes: 52 additions & 56 deletions src/cli/cms/editor/handlebars/printInput.js
Expand Up @@ -18,6 +18,7 @@ export function getAttributes(params) {
if(params.autocomplete != null) attributes += ` data-autocomplete="${params.autocomplete}"`
if(params.placeholder != null) attributes += ` placeholder="${params.placeholder}"`
if(params.thumbs != null) attributes += ` data-size="${params.thumbs}"`
if(params.toolbar != null) attributes += ` data-toolbar="${params.toolbar}"`
if(params.multiple != null) attributes += ` ${params.multiple}`
if(params.disabled != null) attributes += ` ${params.disabled}`
return attributes
Expand Down Expand Up @@ -80,62 +81,56 @@ export function createInputSource(attributes, inputClass, params) {
}

export function createInputRich(attributes, inputClass, params) {
return `<div class="wysiwyg-container rich">
<div class="wysiwyg-toolbar wysiwyg-toolbar-top">
<a class="wysiwyg-toolbar-icon" href="#" title="Bold (Ctrl+B)" hotkey="b" data-action="bold" data-param="">
<span class="glyphicon glyphicon-bold"></span>
</a>
<a class="wysiwyg-toolbar-icon" href="#" title="Italic (Ctrl+I)" hotkey="i" data-action="italic" data-param="">
<span class="glyphicon glyphicon-italic"></span>
</a>
<a class="wysiwyg-toolbar-icon" href="#" title="Underline (Ctrl+U)" hotkey="u" data-action="underline" data-param="">
<span class="glyphicon underline">U</span>
</a>
<a class="wysiwyg-toolbar-icon" href="#" title="Text color" data-action="forecolor" data-param="" data-popup="color">
<span class="glyphicon glyphicon-text-color"></span>
</a>
<a class="wysiwyg-toolbar-icon" href="#" title="Background color" data-action="highlight" data-param="" data-popup="color">
<span class="glyphicon glyphicon-text-background"></span>
</a>
<a class="wysiwyg-toolbar-icon" href="#" title="Left" data-action="align" data-param="left">
<span class="glyphicon glyphicon-object-align-left"></span>
</a>
<a class="wysiwyg-toolbar-icon" href="#" title="Center" data-action="align" data-param="center">
<span class="glyphicon glyphicon-object-align-vertical"></span>
</a>
<a class="wysiwyg-toolbar-icon" href="#" title="Right" data-action="align" data-param="right">
<span class="glyphicon glyphicon-object-align-right"></span>
</a>
<a class="wysiwyg-toolbar-icon" href="#" title="Justify" data-action="justify" data-param="justify">
<span class="glyphicon glyphicon-menu-hamburger"></span>
</a>
<a class="wysiwyg-toolbar-icon" href="#" title="Subscript" data-action="subscript" data-param="">
<span class="glyphicon glyphicon-subscript"></span>
</a>
<a class="wysiwyg-toolbar-icon" href="#" title="Superscript" data-action="superscript" data-param="">
<span class="glyphicon glyphicon-superscript"></span>
</a>
<a class="wysiwyg-toolbar-icon" href="#" title="Indent" data-action="indent" data-param="">
<span class="glyphicon glyphicon-triangle-right"></span>
</a>
<a class="wysiwyg-toolbar-icon" href="#" title="Outdent" data-action="indent" data-param="outdent">
<span class="glyphicon glyphicon-triangle-left"></span>
</a>
<a class="wysiwyg-toolbar-icon" href="#" title="Unordered list" data-action="insertList" data-param="">
<span class="glyphicon glyphicon-th-list"></span>
</a>
<a class="wysiwyg-toolbar-icon" href="#" title="Remove format" data-action="removeFormat" data-param="">
<span class="glyphicon glyphicon-remove"></span>
</a>
<a class="wysiwyg-toolbar-icon" href="#" title="Add link" data-action="insertLink" data-popup="link" data-param="">
<span class="glyphicon glyphicon-link"></span>
</a>
<a class="wysiwyg-toolbar-icon" href="#" title="Code style" data-action="code" data-param="">
<span class="glyphicon glyphicon-console"></span>
</a>
</div>
<textarea class="${inputClass} form-rich" ${attributes} rows="4">${params.value}</textarea>
</div>`
var buttons = [
{ icon: "bold", title: "Bold (Ctrl+B)", action: "bold", param: "", hotkey: "b", key:"b" },
{ icon: "ti-Italic", title: "Italic (Ctrl+I)", action: "italic", param: "", hotkey: "i" },
{ icon: "ti-underline", title: "Underline (Ctrl+U)", action: "underline", param: "", hotkey: "u" },
{ icon: "strikethrough", title: "Strikethrough", action: "strikethrough",param: "" , key:"s" },
{ icon: "ti-paint-bucket", title: "Text color", action: "forecolor", param: "", popup: "color" },
{ icon: "ti-paint-bucket bg", title: "Background color", action: "highlight", param: "", popup: "color" },
{ icon: "ti-align-left", title: "Left", action: "align", param: "left" },
{ icon: "ti-align-center", title: "Center", action: "align", param: "center" },
{ icon: "ti-align-right", title: "Right", action: "align", param: "right" },
{ icon: "ti-align-justify", title: "Justify", action: "align", param: "justify" },
{ icon: "ti-text ti-text-sub", title: "Subscript", action: "subscript", param: "" },
{ icon: "ti-text ti-text-sup", title: "Superscript", action: "superscript", param: "" },
{ icon: "ti-shift-right-alt", title: "Indent", action: "indent", param: "" },
{ icon: "ti-shift-left-alt", title: "Outdent", action: "indent", param: "outdent" },
{ icon: "ti-list", title: "Unordered list", action: "list", param: "" },
{ icon: "ti-list-ol", title: "Ordered list", action: "list", param: "ordered" },
{ icon: "ti-eraser", title: "Remove format", action: "removeFormat", param: "" },
{ icon: "ti-link", title: "Add link", action: "insertLink", param: "", popup: "link" },
{ icon: "console", title: "Code style", action: "code", param: "", key:"{code}" },
{ icon: "ti-image", title: "media", action: "media", param: "", popup: "image" },
{ icon: "ti-face-smile", title: "smiley", action: "smiley", param: "", popup: "smiley" },
];
if(params.toolbar !== '*') params.toolbar = params.toolbar.split(',')
var inputRich = `<div class="wysiwyg-container rich">
<div class="wysiwyg-toolbar wysiwyg-toolbar-top">`

buttons.forEach(function (button) {
if(params.toolbar === '*' || params.toolbar.indexOf(button.action) > -1){
var hotkey = (button.hotkey != null) ? `hotkey="${button.hotkey}"` : ''
var popup = (button.popup != null) ? `data-popup="${button.popup}"` : ''
if (button.popup === 'image') button.action = 'insertImage'
if (button.action === 'list') button.action = 'insertList'
inputRich += `<a class="wysiwyg-toolbar-icon parent-${button.icon}"
data-action="${button.action}"
data-param="${button.param}"
title="${button.title}"
${hotkey}
${popup}
href="#">
<span class="glyphicon theme-icon ${button.icon}">${(button.key) ? button.key : ''}</span>
</a>`
}
})

inputRich += `</div>
<textarea class="${inputClass} form-rich" ${attributes} rows="4">${params.value}</textarea>
</div>`

return inputRich
}

export function createInputFile(attributes, inputClass, params) {
Expand Down Expand Up @@ -198,6 +193,7 @@ export function printInput (params, root) {
params.value = params.value || ''

if(typeof params.value === 'string') params.value = params.value.replace(/\"/g, '&quot;')
if(!(params.toolbar != null)) params.toolbar = '*'

params.disabled = ''
if (params.tab !== 'slug' && !User.utils.isUserAllowedOnRoute(userWorkflow, `/abe/operations/edit/${params.status}`)) {
Expand Down
6 changes: 3 additions & 3 deletions src/cli/cms/media/image.js
Expand Up @@ -179,9 +179,9 @@ export function getThumbsList() {
}

export function getAssociatedImageFileFromThumb(name) {
var rexMatchImageName = /_(thumb|\d+x\d+)/
var rexMatchImageName = /_(thumb|\d+x\d+)\./
name = path.join(path.sep, name)
var originalName = path.join(path.sep, name.replace(rexMatchImageName, ''))
var originalName = path.join(path.sep, name.replace(rexMatchImageName, '.'))
var imageList = {
thumbFile: name,
originalFile: originalName,
Expand All @@ -194,7 +194,7 @@ export function getAssociatedImageFileFromThumb(name) {
var files = coreUtils.file.getFilesSync(pathThumb, true)
Array.prototype.forEach.call(files, (pathFile) => {
pathFile = pathFile.replace(path.join(config.root, config.publish.url), '')
if(pathFile !== originalName && pathFile !== name && pathFile.replace(rexMatchImageName, '') === originalName){
if(pathFile !== originalName && pathFile !== name && pathFile.replace(rexMatchImageName, '.') === originalName){
imageList.thumbs.push(pathFile)
}
})
Expand Down
5 changes: 4 additions & 1 deletion src/cli/core/config/config.json
Expand Up @@ -55,7 +55,10 @@
"h3": ["style"],
"h4": ["style"],
"pre": ["style"],
"code": ["style"]
"code": ["style"],
"img": ["src", "alt"],
"video": ["style", "controls"],
"source": ["style", "src", "type"]
},
"files": {
"exclude": "^[.]",
Expand Down
Binary file added src/server/public/abejs/fonts/themify.eot
Binary file not shown.

0 comments on commit 8504e79

Please sign in to comment.