Merge branch 'MDL-45403-master' of git://github.com/FMCorz/moodle

Conflicts:
	lib/editor/atto/plugins/link/yui/build/moodle-atto_link-button/moodle-atto_link-button-min.js
This commit is contained in:
Dan Poltawski 2014-05-06 11:48:38 +08:00
commit 02c482704b
8 changed files with 26 additions and 20 deletions

View File

@ -85,7 +85,8 @@ Y.namespace('M.atto_link').Button = Y.Base.create('button', Y.M.editor_atto.Edit
this.addButton({
icon: 'e/insert_edit_link',
callback: this._displayDialogue,
tags: 'a'
tags: 'a',
tagMatchRequiresAll: false
});
// And then the unlink button.
@ -96,7 +97,8 @@ Y.namespace('M.atto_link').Button = Y.Base.create('button', Y.M.editor_atto.Edit
title: 'unlink',
// Watch the following tags and add/remove highlighting as appropriate:
tags: 'a'
tags: 'a',
tagMatchRequiresAll: false
});
},

View File

@ -1 +1 @@
YUI.add("moodle-atto_link-button",function(e,t){var n="atto_link",r={NEWWINDOW:"atto_link_openinnewwindow",URLINPUT:"atto_link_urlentry"},i={URLINPUT:".atto_link_urlentry"},s='<form class="atto_form"><label for="{{elementid}}_atto_link_urlentry">{{get_string "enterurl" component}}</label><input class="fullwidth url {{CSS.URLINPUT}}" type="url" id="{{elementid}}_atto_link_urlentry" size="32"/><br/>{{#if showFilepicker}}<button class="openlinkbrowser">{{get_string "browserepositories" component}}</button><br/>{{/if}}<input type="checkbox" class="newwindow" id="{{elementid}}_{{CSS.NEWWINDOW}}"/><label class="sameline" for="{{elementid}}_{{CSS.NEWWINDOW}}">{{get_string "openinnewwindow" component}}</label><br/><div class="mdl-align"><br/><button type="submit" class="submit">{{get_string "createlink" component}}</button></div></form>';e.namespace("M.atto_link").Button=e.Base.create("button",e.M.editor_atto.EditorPlugin,[],{_currentSelection:null,_content:null,initializer:function(){this.addButton({icon:"e/insert_edit_link",callback:this._displayDialogue,tags:"a"}),this.addButton({buttonName:"unlink",callback:this._unlink,icon:"e/remove_link",title:"unlink",tags:"a"})},_displayDialogue:function(){this._currentSelection=this.get("host").getSelection();if(this._currentSelection===!1||this._currentSelection.collapsed)return;var e=this.getDialogue({headerContent:M.util.get_string("createlink",n),focusAfterHide:!0,focusOnShowSelector:i.URLINPUT});e.set("bodyContent",this._getDialogueContent()),this._resolveAnchors(),e.show()},_resolveAnchors:function(){var t=this.get("host").getSelectionParentNode(),n,r,i,s;if(!t)return;n=this._findSelectedAnchors(e.one(t)),n.length>0&&(r=n[0],this._currentSelection=this.get("host").getSelectionFromNode(r),i=r.getAttribute("href"),s=r.getAttribute("target"),i!==""&&this._content.one(".url").setAttribute("value",i),s==="_blank"?this._content.one(".newwindow").setAttribute("checked","checked"):this._content.one(".newwindow").removeAttribute("checked"))},_filepickerCallback:function(e){this.getDialogue().set("focusAfterHide",null).hide(),e.url!==""&&(this.get("host").setSelection(this._currentSelection),document.execCommand("unlink",!1,null),document.execCommand("createLink",!1,e.url))},_setLink:function(t){var n,r,i,s,o,u=this.get("host");t.preventDefault(),this.getDialogue({focusAfterHide:null}).hide(),n=this._content.one(".url"),o=n.get("value");if(o!==""){this.editor.focus(),u.setSelection(this._currentSelection),document.execCommand("unlink",!1,null),document.execCommand("createLink",!1,o),i=u.getSelectionParentNode();if(!i)return;s=this._findSelectedAnchors(e.one(i)),e.Array.each(s,function(e){r=this._content.one(".newwindow"),r.get("checked")?e.setAttribute("target","_blank"):e.removeAttribute("target")},this),this.markUpdated()}},_findSelectedAnchors:function(e){var t=e.get("tagName"),n,r;return t&&t.toLowerCase()==="a"?[e]:(r=[],e.all("a").each(function(e){!n&&this.get("host").selectionContainsNode(e)&&r.push(e)},this),r.length>0?r:(n=e.ancestor("a"),n?[n]:[]))},_getDialogueContent:function(){var t=this.get("host").canShowFilepicker("link"),i=e.Handlebars.compile(s);return this._content=e.Node.create(i({showFilepicker:t,component:n,CSS:r})),this._content.one(".submit").on("click",this._setLink,this),t&&this._content.one(".openlinkbrowser").on("click",function(e){e.preventDefault(),this.get("host").showFilepicker("link",this._filepickerCallback,this)},this),this._content},_unlink:function(){var e=this.get("host"),t=e.getSelection();if(t&&t.length)if(t[0].startOffset===t[0].endOffset){var n=e.getSelectedNodes();n&&(n.each(function(t){var n=t.ancestor("a",!0);n&&(e.setSelection(e.getSelectionFromNode(n)),document.execCommand("unlink",!1,null))},this),this.markUpdated())}else document.execCommand("unlink",!1,null),this.markUpdated()}})},"@VERSION@",{requires:["moodle-editor_atto-plugin"]});
YUI.add("moodle-atto_link-button",function(e,t){var n="atto_link",r={NEWWINDOW:"atto_link_openinnewwindow",URLINPUT:"atto_link_urlentry"},i={URLINPUT:".atto_link_urlentry"},s='<form class="atto_form"><label for="{{elementid}}_atto_link_urlentry">{{get_string "enterurl" component}}</label><input class="fullwidth url {{CSS.URLINPUT}}" type="url" id="{{elementid}}_atto_link_urlentry" size="32"/><br/>{{#if showFilepicker}}<button class="openlinkbrowser">{{get_string "browserepositories" component}}</button><br/>{{/if}}<input type="checkbox" class="newwindow" id="{{elementid}}_{{CSS.NEWWINDOW}}"/><label class="sameline" for="{{elementid}}_{{CSS.NEWWINDOW}}">{{get_string "openinnewwindow" component}}</label><br/><div class="mdl-align"><br/><button type="submit" class="submit">{{get_string "createlink" component}}</button></div></form>';e.namespace("M.atto_link").Button=e.Base.create("button",e.M.editor_atto.EditorPlugin,[],{_currentSelection:null,_content:null,initializer:function(){this.addButton({icon:"e/insert_edit_link",callback:this._displayDialogue,tags:"a",tagMatchRequiresAll:!1}),this.addButton({buttonName:"unlink",callback:this._unlink,icon:"e/remove_link",title:"unlink",tags:"a",tagMatchRequiresAll:!1})},_displayDialogue:function(){this._currentSelection=this.get("host").getSelection();if(this._currentSelection===!1||this._currentSelection.collapsed)return;var e=this.getDialogue({headerContent:M.util.get_string("createlink",n),focusAfterHide:!0,focusOnShowSelector:i.URLINPUT});e.set("bodyContent",this._getDialogueContent()),this._resolveAnchors(),e.show()},_resolveAnchors:function(){var t=this.get("host").getSelectionParentNode(),n,r,i,s;if(!t)return;n=this._findSelectedAnchors(e.one(t)),n.length>0&&(r=n[0],this._currentSelection=this.get("host").getSelectionFromNode(r),i=r.getAttribute("href"),s=r.getAttribute("target"),i!==""&&this._content.one(".url").setAttribute("value",i),s==="_blank"?this._content.one(".newwindow").setAttribute("checked","checked"):this._content.one(".newwindow").removeAttribute("checked"))},_filepickerCallback:function(e){this.getDialogue().set("focusAfterHide",null).hide(),e.url!==""&&(this.get("host").setSelection(this._currentSelection),document.execCommand("unlink",!1,null),document.execCommand("createLink",!1,e.url))},_setLink:function(t){var n,r,i,s,o,u=this.get("host");t.preventDefault(),this.getDialogue({focusAfterHide:null}).hide(),n=this._content.one(".url"),o=n.get("value");if(o!==""){this.editor.focus(),u.setSelection(this._currentSelection),document.execCommand("unlink",!1,null),document.execCommand("createLink",!1,o),i=u.getSelectionParentNode();if(!i)return;s=this._findSelectedAnchors(e.one(i)),e.Array.each(s,function(e){r=this._content.one(".newwindow"),r.get("checked")?e.setAttribute("target","_blank"):e.removeAttribute("target")},this),this.markUpdated()}},_findSelectedAnchors:function(e){var t=e.get("tagName"),n,r;return t&&t.toLowerCase()==="a"?[e]:(r=[],e.all("a").each(function(e){!n&&this.get("host").selectionContainsNode(e)&&r.push(e)},this),r.length>0?r:(n=e.ancestor("a"),n?[n]:[]))},_getDialogueContent:function(){var t=this.get("host").canShowFilepicker("link"),i=e.Handlebars.compile(s);return this._content=e.Node.create(i({showFilepicker:t,component:n,CSS:r})),this._content.one(".submit").on("click",this._setLink,this),t&&this._content.one(".openlinkbrowser").on("click",function(e){e.preventDefault(),this.get("host").showFilepicker("link",this._filepickerCallback,this)},this),this._content},_unlink:function(){var e=this.get("host"),t=e.getSelection();if(t&&t.length)if(t[0].startOffset===t[0].endOffset){var n=e.getSelectedNodes();n&&(n.each(function(t){var n=t.ancestor("a",!0);n&&(e.setSelection(e.getSelectionFromNode(n)),document.execCommand("unlink",!1,null))},this),this.markUpdated())}else document.execCommand("unlink",!1,null),this.markUpdated()}})},"@VERSION@",{requires:["moodle-editor_atto-plugin"]});

View File

@ -85,7 +85,8 @@ Y.namespace('M.atto_link').Button = Y.Base.create('button', Y.M.editor_atto.Edit
this.addButton({
icon: 'e/insert_edit_link',
callback: this._displayDialogue,
tags: 'a'
tags: 'a',
tagMatchRequiresAll: false
});
// And then the unlink button.
@ -96,7 +97,8 @@ Y.namespace('M.atto_link').Button = Y.Base.create('button', Y.M.editor_atto.Edit
title: 'unlink',
// Watch the following tags and add/remove highlighting as appropriate:
tags: 'a'
tags: 'a',
tagMatchRequiresAll: false
});
},

View File

@ -83,7 +83,8 @@ Y.namespace('M.atto_link').Button = Y.Base.create('button', Y.M.editor_atto.Edit
this.addButton({
icon: 'e/insert_edit_link',
callback: this._displayDialogue,
tags: 'a'
tags: 'a',
tagMatchRequiresAll: false
});
// And then the unlink button.
@ -94,7 +95,8 @@ Y.namespace('M.atto_link').Button = Y.Base.create('button', Y.M.editor_atto.Edit
title: 'unlink',
// Watch the following tags and add/remove highlighting as appropriate:
tags: 'a'
tags: 'a',
tagMatchRequiresAll: false
});
},

View File

@ -316,9 +316,9 @@ EditorPluginButtons.prototype = {
* If multiple key bindings are supplied to config.keys, then only the first is used.
* If set to false, then no description is added to the title.
* @param {string} [config.tags] The tags that trigger this button to be highlighted.
* @param {boolean} [config.tagMatchRequiresAll=false] Working in combination with the tags parameter, highlight
* this button when any match is good enough.
*
* @param {boolean} [config.tagMatchRequiresAll=true] Working in combination with the tags parameter, when true
* every tag of the selection has to match. When false, only one match is needed. Only set this to false when
* necessary as it is much less efficient.
* See {{#crossLink "M.editor_atto.EditorSelection/selectionFilterMatches:method"}}{{/crossLink}} for more information.
* @param {string} [config.title=this.name] The string identifier in the plugin's language file.
* @param {string} [config.buttonName=this.name] The name of the button. This is used in the buttons object, and if
@ -399,7 +399,7 @@ EditorPluginButtons.prototype = {
// Handle highlighting of the button.
if (config.tags) {
var tagMatchRequiresAll = false;
var tagMatchRequiresAll = true;
if (typeof config.tagMatchRequiresAll === 'boolean') {
tagMatchRequiresAll = config.tagMatchRequiresAll;
}

File diff suppressed because one or more lines are too long

View File

@ -316,9 +316,9 @@ EditorPluginButtons.prototype = {
* If multiple key bindings are supplied to config.keys, then only the first is used.
* If set to false, then no description is added to the title.
* @param {string} [config.tags] The tags that trigger this button to be highlighted.
* @param {boolean} [config.tagMatchRequiresAll=false] Working in combination with the tags parameter, highlight
* this button when any match is good enough.
*
* @param {boolean} [config.tagMatchRequiresAll=true] Working in combination with the tags parameter, when true
* every tag of the selection has to match. When false, only one match is needed. Only set this to false when
* necessary as it is much less efficient.
* See {{#crossLink "M.editor_atto.EditorSelection/selectionFilterMatches:method"}}{{/crossLink}} for more information.
* @param {string} [config.title=this.name] The string identifier in the plugin's language file.
* @param {string} [config.buttonName=this.name] The name of the button. This is used in the buttons object, and if
@ -399,7 +399,7 @@ EditorPluginButtons.prototype = {
// Handle highlighting of the button.
if (config.tags) {
var tagMatchRequiresAll = false;
var tagMatchRequiresAll = true;
if (typeof config.tagMatchRequiresAll === 'boolean') {
tagMatchRequiresAll = config.tagMatchRequiresAll;
}

View File

@ -167,9 +167,9 @@ EditorPluginButtons.prototype = {
* If multiple key bindings are supplied to config.keys, then only the first is used.
* If set to false, then no description is added to the title.
* @param {string} [config.tags] The tags that trigger this button to be highlighted.
* @param {boolean} [config.tagMatchRequiresAll=false] Working in combination with the tags parameter, highlight
* this button when any match is good enough.
*
* @param {boolean} [config.tagMatchRequiresAll=true] Working in combination with the tags parameter, when true
* every tag of the selection has to match. When false, only one match is needed. Only set this to false when
* necessary as it is much less efficient.
* See {{#crossLink "M.editor_atto.EditorSelection/selectionFilterMatches:method"}}{{/crossLink}} for more information.
* @param {string} [config.title=this.name] The string identifier in the plugin's language file.
* @param {string} [config.buttonName=this.name] The name of the button. This is used in the buttons object, and if
@ -250,7 +250,7 @@ EditorPluginButtons.prototype = {
// Handle highlighting of the button.
if (config.tags) {
var tagMatchRequiresAll = false;
var tagMatchRequiresAll = true;
if (typeof config.tagMatchRequiresAll === 'boolean') {
tagMatchRequiresAll = config.tagMatchRequiresAll;
}