mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged V4.0-BUG-FIX to HEAD
37067: ALF-13294 CIFS: When versionable aspect is active, using the Microsoft Word for Mac 2008 option "always create a backup copy" leads to document versions loss 37073: ALF-14319 Add a unit test for using the real remote credentials shared container (most use a test one to avoid issues/clashing), and tweak the qname to match other similar ones 37074: Merged V3.4-BUG-FIX to V4.0-BUG_FIX 36881: Merged DEV to V3.4-BUG-FIX 36759: Fix to Checkin failing to distinguish between 'null' and 'unset' properties - Some minor ammendments to unit test as well 36898: Merge HEAD to V3.4-BUG-FIX: 33668: ALF-12541 / ALF-14254: AMP files need to be able to be pinned to specific "edition(s)" of Alfresco. It is now possible to specify a module.editions property (eg. community) which is checked by the MMT. Also, the version is checked on install. Also, started refactoring some of the code for better reuse. 33793: ALF-12541 / ALF-14254: Better fix for ALF-12541 - AMP files need to be able to be pinned to specific "edition(s)" of Alfresco Share doesn't have a version.properties file so I need to cater for that scenario. I didn't want to create the LogOutput interface but its a stop-gap until the MMT gets re-worked. 33695: ALF-12531 / ALF-14255: MMT needs to properly support upgrading of AMP files 33725: ALF-12532 / ALF-14256: MMT should fail with an error if the target war file doesn't exist 33735: ALF-12533 / ALF-14257: When run with -directory, MMT should only backup the alfresco.war file once 33781: ALF-12540 / ALF-14258: AMP - file-mapping.properties: white space at end of line is significant 33880: ALF-12777 / ALF-14259: MMT should not install AMPs which override pre-existing files in the war file, unless -force is provided. The MMT is moving toward more of a validation phase (checks things, calculate changes) then an execution phase (makes the changes). 33707: ALF-12541 / ALF-14254: Fix for failing unit tests 37030: ALF-12511 Allow debugging of the authentication chain at a high level - enable with log4j.loggerorg.alfresco.repo.security.authentication.AbstractChainingAuthenticationService=debug 37066: Merged DEV to V3.4-BUG-FIX (3.4.10) 37063: ALF-11956: WCM accessibility New Tab focus plugin is added for TinyMCE: - plugin covers the RTE changes special for 'XForms'; - configuration for custom appearance has been set in 'web-client-config-wcm.xml' 37069: ALF-13379: READ_ONLY_LOCK prevents access via deprecated CMIS API - Fix by Alex Bykov 37075: Fix for ALF-14267 SOLR index check - First transaction time used instead of first ACL time - indexCheck, checkInitialState 37076: Merged V3.4-BUG-FIX to V4.0-BUG-FIX (RECORD ONLY) 36942: ALF-12081: Cancel Editing button should only be shown for documents that are checked out for offline editing. 36957: ALF-12081: Reverse-merging r36942 pending UI team review git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@37079 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -64,7 +64,7 @@
|
|||||||
<param name="force_p_newlines">true</param>
|
<param name="force_p_newlines">true</param>
|
||||||
<param name="forced_root_block">p</param>
|
<param name="forced_root_block">p</param>
|
||||||
<param name="apply_source_formatting">true</param>
|
<param name="apply_source_formatting">true</param>
|
||||||
<param name="plugins">table</param>
|
<param name="plugins">table,xformstabfocus</param>
|
||||||
<param name="theme_advanced_buttons3">tablecontrols</param>
|
<param name="theme_advanced_buttons3">tablecontrols</param>
|
||||||
</widget>
|
</widget>
|
||||||
<!--
|
<!--
|
||||||
|
@@ -1102,8 +1102,7 @@ alfresco.xforms.RichTextEditor = alfresco.xforms.Widget.extend({
|
|||||||
{
|
{
|
||||||
var result = new Element("a");
|
var result = new Element("a");
|
||||||
result.src = "#";
|
result.src = "#";
|
||||||
result.style.width = "1px";
|
result.addClass("xformsAccessibilityInvisibleText");
|
||||||
result.style.height = "1px";
|
|
||||||
result.style.border.width = 0;
|
result.style.border.width = 0;
|
||||||
result.style.padding = 0;
|
result.style.padding = 0;
|
||||||
result.style.margin = 0;
|
result.style.margin = 0;
|
||||||
@@ -5628,7 +5627,11 @@ alfresco.constants.TINY_MCE_DEFAULT_SETTINGS =
|
|||||||
{
|
{
|
||||||
theme: "advanced",
|
theme: "advanced",
|
||||||
mode: "exact",
|
mode: "exact",
|
||||||
plugins: alfresco.constants.TINY_MCE_DEFAULT_PLUGINS,
|
plugins: ((alfresco.constants.TINY_MCE_DEFAULT_PLUGINS && (alfresco.constants.TINY_MCE_DEFAULT_PLUGINS.length > 0)) ? (alfresco.constants.TINY_MCE_DEFAULT_PLUGINS + ",xformstabfocus") : ("xformstabfocus")), // ALF-11956: Each RTE instance MUST BE configured with 'xformstabfocus' plugin to handle Shift + Tab keys
|
||||||
|
form_scope_id: "alfresco-xforms-ui", // ALF-11956: Id of a root container for all widgets. Scope of elements search
|
||||||
|
editor_condition: 'accesskey="z"', // ALF-11956: CSS class of element which handles events for RTE
|
||||||
|
forward_element_classes: "xformsAccessibilityInvisibleText", // ALF-11956
|
||||||
|
backward_element_classes: "mceButton mceButtonEnabled", // ALF-11956
|
||||||
language: alfresco.constants.LANGUAGE,
|
language: alfresco.constants.LANGUAGE,
|
||||||
width: -1,
|
width: -1,
|
||||||
height: -1,
|
height: -1,
|
||||||
|
1
source/web/scripts/tiny_mce/plugins/xformstabfocus/editor_plugin.js
vendored
Normal file
1
source/web/scripts/tiny_mce/plugins/xformstabfocus/editor_plugin.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
alfresco.xforms.constants.XFORMS_CSS_SELECT_QUERY="input:enabled,area:tabindex,button:tabindex,object:tabindex,select:tabindex,textarea:tabindex";alfresco.xforms.constants.XFORMS_FOCUSABLE_ELEMENTS=["INPUT","AREA","BUTTON","OBJECT","SELECT","TEXTAREA"];(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.XFormsTabFocusPlugin",{init:function(f,g){function e(i,k){var j=(k.which)?(k.wich):(k.keyCode);if(9===j){return a.cancel(k)}}function h(i,m){function n(x){var v=-1;var t=alfresco.xforms.constants.XFORMS_CSS_SELECT_QUERY;if((null!=x.editorCondition)&&(x.editorCondition.length>0)){t+=",*["+x.editorCondition+"]"}var r=((null!=x.forwardClasses)&&(x.forwardClasses.length>0))?(b(x.forwardClasses," ")):(null);var w=((null!=x.backwardClasses)&&(x.backwardClasses.length>0))?(b(x.backwardClasses," ")):(null);function u(y){d(y,function(z){t+=',a[class~="'+z+'"]';return true})}if(r){u(r)}if(w){u(w)}var o=((null!=x.formScopeId)&&(x.formScopeId.length>0))?(c.select(t,document.getElementById(x.formScopeId))):(c.select(t));if(o){var s=c.select("*["+x.editorCondition+"]");d(o,function(z,y){if(s.toString()==z.toString()){v=y;return false}return true});function p(A,z){if(null==z){return false}for(var y=0;y<A.length;y++){if(!c.hasClass(z,A[y])){return false}}return true}for(var q=(v+x.direction);(x.direction>0)?(q<o.length):(q>=0);q+=x.direction){if(!o[q].hidden&&("none"!=o[q].style.display)&&(o[q].tabIndex>=0)){if((("A"==o[q].tagName)&&p((x.direction>0)?(r):(w),o[q]))||(-1!=alfresco.xforms.constants.XFORMS_FOCUSABLE_ELEMENTS.indexOf(o[q].tagName))){return o[q]}}}}return null}var l=(m.which)?(m.which):(m.keyCode);if(9===l){var j={direction:(m.shiftKey)?(-1):(1),formScopeId:i.getParam("form_scope_id"),editorCondition:i.getParam("editor_condition"),forwardClasses:i.getParam("forward_element_classes"),backwardClasses:i.getParam("backward_element_classes")};var k=n(j);if(k){if(i=tinymce.EditorManager.get(k.id||k.name)){i.focus()}else{window.setTimeout(function(){window.focus();k.focus()},10)}return a.cancel(m)}}return true}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}},getInfo:function(){var e={longname:"XFormsTabFocus",author:"Dmitry Velichkevich",infourl:"http://alfresco.com/",version:tinymce.majorVersion+"."+tinymce.minorVersion};return e}});tinymce.PluginManager.add("xformstabfocus",tinymce.plugins.XFormsTabFocusPlugin)})();
|
198
source/web/scripts/tiny_mce/plugins/xformstabfocus/editor_plugin_src.js
vendored
Normal file
198
source/web/scripts/tiny_mce/plugins/xformstabfocus/editor_plugin_src.js
vendored
Normal file
@@ -0,0 +1,198 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2005-2012 Alfresco Software Limited.
|
||||||
|
*
|
||||||
|
* This file is part of Alfresco
|
||||||
|
*
|
||||||
|
* Alfresco is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Alfresco is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
alfresco.xforms.constants.XFORMS_CSS_SELECT_QUERY = "input:enabled,area:tabindex,button:tabindex,object:tabindex,select:tabindex,textarea:tabindex";
|
||||||
|
|
||||||
|
alfresco.xforms.constants.XFORMS_FOCUSABLE_ELEMENTS = ["INPUT", "AREA", "BUTTON", "OBJECT", "SELECT", "TEXTAREA"];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This plugin introduces a possibility of navigation into and from TinyMCE RTE.<br />
|
||||||
|
* <br />
|
||||||
|
* Supported options:<br />
|
||||||
|
* - backward_element_classes - break-separated CSS class names of element which should be navigated on Shift + Tab;<br />
|
||||||
|
* - forward_element_classes - break-separated CSS class names of element which should be navigated on Tab;<br />
|
||||||
|
* - editor_condition - statement of the next form: <attribute_name>=<value> which allows to identify position between toolbars and editor areas.
|
||||||
|
* String values MUST BE wrapped into quotes;<br />
|
||||||
|
* - form_scope_id - id of an element which contains all elements that should participate in tab navigating
|
||||||
|
*
|
||||||
|
* @author Dmitry Velichkevich
|
||||||
|
*/
|
||||||
|
(function()
|
||||||
|
{
|
||||||
|
var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, explode = tinymce.explode;
|
||||||
|
|
||||||
|
tinymce.create('tinymce.plugins.XFormsTabFocusPlugin',
|
||||||
|
{
|
||||||
|
init: function (ed, url)
|
||||||
|
{
|
||||||
|
function tabCancel (ed, e)
|
||||||
|
{
|
||||||
|
var code = (e.which) ? (e.wich) : (e.keyCode);
|
||||||
|
if (9 === code)
|
||||||
|
{
|
||||||
|
return Event.cancel(e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function tabHandler (ed, e)
|
||||||
|
{
|
||||||
|
function find (options)
|
||||||
|
{
|
||||||
|
var edIndex = -1;
|
||||||
|
|
||||||
|
var query = alfresco.xforms.constants.XFORMS_CSS_SELECT_QUERY;
|
||||||
|
if ((null != options.editorCondition) && (options.editorCondition.length > 0))
|
||||||
|
{
|
||||||
|
query += ",*[" + options.editorCondition + "]";
|
||||||
|
}
|
||||||
|
var forward = ((null != options.forwardClasses) && (options.forwardClasses.length > 0)) ? (explode(options.forwardClasses, " ")) : (null);
|
||||||
|
var backward = ((null != options.backwardClasses) && (options.backwardClasses.length > 0)) ? (explode(options.backwardClasses, " ")) : (null);
|
||||||
|
|
||||||
|
function extendQuery(elements)
|
||||||
|
{
|
||||||
|
each(elements, function(element)
|
||||||
|
{
|
||||||
|
query += ',a[class~="' + element + '"]';
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
if (forward)
|
||||||
|
{
|
||||||
|
extendQuery(forward);
|
||||||
|
}
|
||||||
|
if (backward)
|
||||||
|
{
|
||||||
|
extendQuery(backward);
|
||||||
|
}
|
||||||
|
|
||||||
|
var el = ((null != options.formScopeId) && (options.formScopeId.length > 0)) ? (DOM.select(query, document.getElementById(options.formScopeId))) : (DOM.select(query));
|
||||||
|
|
||||||
|
if (el)
|
||||||
|
{
|
||||||
|
var ed = DOM.select('*[' + options.editorCondition + ']');
|
||||||
|
each(el, function(element, index)
|
||||||
|
{
|
||||||
|
if (ed.toString() == element.toString())
|
||||||
|
{
|
||||||
|
edIndex = index;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
|
function containsClasses(classes, element)
|
||||||
|
{
|
||||||
|
if (null == element)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < classes.length; i++)
|
||||||
|
{
|
||||||
|
if (!DOM.hasClass(element, classes[i]))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
for (var i = (edIndex + options.direction); (options.direction > 0) ? (i < el.length) : (i >= 0); i += options.direction)
|
||||||
|
{
|
||||||
|
if (!el[i].hidden && ("none" != el[i].style.display) && (el[i].tabIndex >= 0))
|
||||||
|
{
|
||||||
|
if ((("A" == el[i].tagName) && containsClasses((options.direction > 0) ? (forward) : (backward), el[i])) || (-1 != alfresco.xforms.constants.XFORMS_FOCUSABLE_ELEMENTS.indexOf(el[i].tagName)))
|
||||||
|
{
|
||||||
|
return el[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
|
var code = (e.which) ? (e.which) : (e.keyCode);
|
||||||
|
|
||||||
|
if (9 === code)
|
||||||
|
{
|
||||||
|
var options =
|
||||||
|
{
|
||||||
|
"direction": (e.shiftKey) ? (-1) : (1),
|
||||||
|
"formScopeId": ed.getParam("form_scope_id"),
|
||||||
|
"editorCondition": ed.getParam("editor_condition"),
|
||||||
|
"forwardClasses": ed.getParam("forward_element_classes"),
|
||||||
|
"backwardClasses": ed.getParam("backward_element_classes")
|
||||||
|
};
|
||||||
|
|
||||||
|
var el = find(options);
|
||||||
|
|
||||||
|
if (el)
|
||||||
|
{
|
||||||
|
if (ed = tinymce.EditorManager.get(el.id || el.name))
|
||||||
|
{
|
||||||
|
ed.focus();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
window.setTimeout(function ()
|
||||||
|
{
|
||||||
|
window.focus();
|
||||||
|
el.focus();
|
||||||
|
}, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Event.cancel(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
ed.onKeyUp.add(tabCancel);
|
||||||
|
|
||||||
|
if (tinymce.isGecko)
|
||||||
|
{
|
||||||
|
ed.onKeyPress.add(tabHandler);
|
||||||
|
ed.onKeyDown.add(tabCancel);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ed.onKeyDown.add(tabHandler);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
getInfo: function ()
|
||||||
|
{
|
||||||
|
var result =
|
||||||
|
{
|
||||||
|
"longname": "XFormsTabFocus",
|
||||||
|
"author": "Dmitry Velichkevich",
|
||||||
|
"infourl": "http://alfresco.com/",
|
||||||
|
"version": tinymce.majorVersion + "." + tinymce.minorVersion
|
||||||
|
};
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
tinymce.PluginManager.add("xformstabfocus", tinymce.plugins.XFormsTabFocusPlugin);
|
||||||
|
})();
|
Reference in New Issue
Block a user