Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
E
erp5_rtl_support
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Romain Courteaud
erp5_rtl_support
Commits
5762843f
Commit
5762843f
authored
Apr 12, 2013
by
Tatuya Kamada
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move jQuerified erp5.js to erp5_xhtml_style since jQuery has become essential in ERP5.
parent
06cf84e9
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
324 additions
and
468 deletions
+324
-468
bt5/erp5_xhtml_jquery_style/SkinTemplateItem/portal_skins/erp5_xhtml_jquery_style/ERP5Site_getJavaScriptRelativeUrlList.xml
...ml_jquery_style/ERP5Site_getJavaScriptRelativeUrlList.xml
+0
-77
bt5/erp5_xhtml_jquery_style/SkinTemplateItem/portal_skins/erp5_xhtml_jquery_style/erp5.js.xml
...lateItem/portal_skins/erp5_xhtml_jquery_style/erp5.js.xml
+0
-383
bt5/erp5_xhtml_jquery_style/bt/change_log
bt5/erp5_xhtml_jquery_style/bt/change_log
+3
-0
bt5/erp5_xhtml_jquery_style/bt/revision
bt5/erp5_xhtml_jquery_style/bt/revision
+1
-1
product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ERP5Site_getJavaScriptRelativeUrlList.xml
...rp5_xhtml_style/ERP5Site_getJavaScriptRelativeUrlList.xml
+1
-2
product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/erp5.js.xml
...kinTemplateItem/portal_skins/erp5_xhtml_style/erp5.js.xml
+312
-3
product/ERP5/bootstrap/erp5_xhtml_style/bt/change_log
product/ERP5/bootstrap/erp5_xhtml_style/bt/change_log
+4
-0
product/ERP5/bootstrap/erp5_xhtml_style/bt/dependency_list
product/ERP5/bootstrap/erp5_xhtml_style/bt/dependency_list
+2
-1
product/ERP5/bootstrap/erp5_xhtml_style/bt/revision
product/ERP5/bootstrap/erp5_xhtml_style/bt/revision
+1
-1
No files found.
bt5/erp5_xhtml_jquery_style/SkinTemplateItem/portal_skins/erp5_xhtml_jquery_style/ERP5Site_getJavaScriptRelativeUrlList.xml
deleted
100644 → 0
View file @
06cf84e9
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"PythonScript"
module=
"Products.PythonScripts.PythonScript"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
Script_magic
</string>
</key>
<value>
<int>
3
</int>
</value>
</item>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_container
</string>
</key>
<value>
<string>
container
</string>
</value>
</item>
<item>
<key>
<string>
name_context
</string>
</key>
<value>
<string>
context
</string>
</value>
</item>
<item>
<key>
<string>
name_m_self
</string>
</key>
<value>
<string>
script
</string>
</value>
</item>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
_body
</string>
</key>
<value>
<string>
# This script returns an iterable of the paths to standard JavaScript objects.\n
# If you want to customize your own site, please override this script\n
# in your own skin folder. Note that the returned items must be\n
# relative URLs instead of absolute URLs, i.e. they must be traversable\n
# from the portal object. This is required for further processing of JavaScript\n
# data, e.g. compression.\n
#\n
# BBB: For the history, erp5_xhtml_appearance.js is included by default when\n
# js_list is not pre-defined before the global definitions.\n
js_list = (\'jquery/core/jquery.min.js\', \'erp5.js\',)\n
return js_list\n
</string>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
ERP5Site_getJavaScriptRelativeUrlList
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_xhtml_jquery_style/SkinTemplateItem/portal_skins/erp5_xhtml_jquery_style/erp5.js.xml
deleted
100644 → 0
View file @
06cf84e9
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"DTMLMethod"
module=
"OFS.DTMLMethod"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_Cacheable__manager_id
</string>
</key>
<value>
<string>
http_cache
</string>
</value>
</item>
<item>
<key>
<string>
__name__
</string>
</key>
<value>
<string>
erp5.js
</string>
</value>
</item>
<item>
<key>
<string>
_vars
</string>
</key>
<value>
<dictionary/>
</value>
</item>
<item>
<key>
<string>
globals
</string>
</key>
<value>
<dictionary/>
</value>
</item>
<item>
<key>
<string>
raw
</string>
</key>
<value>
<string
encoding=
"cdata"
>
<![CDATA[
/*\n
Copyright (c) 20xx-2006 Nexedi SARL and Contributors. All Rights Reserved.\n
\n
This program is Free Software; you can redistribute it and/or\n
modify it under the terms of the GNU General Public License\n
as published by the Free Software Foundation; either version 2\n
of the License, or (at your option) any later version.\n
\n
This program is distributed in the hope that it will be useful,\n
but WITHOUT ANY WARRANTY; without even the implied warranty of\n
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n
GNU General Public License for more details.\n
\n
You should have received a copy of the GNU General Public License\n
along with this program; if not, write to the Free Software\n
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n
*/\n
\n
function submitAction(form, act) {\n
form.action = act;\n
form.submit();\n
}\n
\n
// This function will be called when the user click the save button. As \n
// submitAction function may have changed the action before, it\'s better to\n
// reset the form action to it\'s original behaviour. This is actually\n
// usefull when the user click the back button.\n
function clickSaveButton(act) {\n
changed = false;\n
document.forms[0].action = act;\n
}\n
\n
// The first input element with an "autofocus" class will get the focus,\n
// else if no element have autofocus class, the first element which is not the\n
// search field will get the focus. This is generally the title input text of\n
// a view\n
function autoFocus() {\n
var first_autofocus_expr = ".//input[@class=\'autofocus\']";\n
var FIRST_RESULT = XPathResult.FIRST_ORDERED_NODE_TYPE;\n
\n
var input = document.evaluate(first_autofocus_expr, document, null, FIRST_RESULT, null).singleNodeValue;\n
if (input) {\n
input.focus();\n
}else{\n
// The following is disabled, because it is too annoying to have an auto focus at everywhere.\n
//var first_text_input_expr = ".//input[@type=\'text\'][@name != \'field_your_search_text\']"\n
//var first_text_input = document.evaluate(first_text_input_expr, document, null, FIRST_RESULT, null).singleNodeValue;\n
//if (first_text_input){\n
// first_text_input.focus();\n
//}\n
true;\n
}\n
}\n
\n
function buildTables(element_list, rowPredicate, columnPredicate,\n
tableClassName) {\n
/* Generic code to build a table from elements in element_list.\n
* XXX: not used anymore ?\n
* rowPredicate(element) ->
bool\n
* When it returns a true value, a new line is started with element.\n
* When is returns a false value, element is skipped.\n
* columnPredicate(element, initial_element) -> bitfield\n
* bit 3: end_table (if true, imlies end_row)\n
* End current table.\n
* bit 2: end_row\n
* End current row.\n
* bit 1: use_element\n
* Element passed to columnPredicate will be put in current row.\n
* Hardcoded:\n
* - items in a table line must be siblings in existing DOM\n
* - table is put in place of first element of the first row\n
*/\n
var element_index = 0;\n
while (element_index
< element_list.length
)
{\n
var
row_list =
[];\n
var
end_table =
false;\n
while
((!end_table)
&&
element_index
<
element_list.length)
{\n
var
row_begin =
element_list[element_index];\n
if
(rowPredicate(row_begin))
{\n
var
item_list =
[row_begin];\n
var
row_item =
row_begin;\n
var
end_line =
false;\n
while
((!end_line)
&&
(
row_item =
row_item.nextSibling)
!==
null)
{\n
var
predicate_result =
columnPredicate(row_item,
row_begin);\n
if
((predicate_result
&
1)
!==
0)\n
item_list.push(row_item);\n
end_table =
((predicate_result
&
4)
!==
0);\n
end_line =
((predicate_result
&
6)
!==
0);\n
}\n
row_list.push(item_list);\n
}\n
element_index++;\n
}\n
/*
Do
not
create
a
table
with
just
one
cell.
*/\n
if
((row_list.length
>
1) ||\n
(row_list.length == 1
&&
row_list[0].length > 1)) {\n
var first_element = row_list[0][0];\n
var fake_table = $("
<table>
");\n
fake_table.addClass(tableClassName);\n
fake_table.insertbefore(first_element);\n
$.each(row_list, function() {\n
var fake_row = $("
<tr>
");\n
$.each(this, function() {\n
var fake_cell = $("
<td>
");\n
fake_cell.append(this);\n
fake_row.append(fake_cell[0]);\n
});\n
fake_table.append(fake_row[0]);\n
});\n
}\n
}\n
}\n
\n
function matchLeftFieldset(element) {\n
// XXX: not used anymore ?\n
return (element.tagName == "FIELDSET"
&&
\n
element.className.toLowerCase().indexOf(\'left\') != -1);\n
}\n
\n
function matchRightFieldset(element, ignored) {\n
// XXX: not used anymore ?\n
if (element.tagName == "FIELDSET"
&&
\n
element.className.toLowerCase().indexOf(\'right\') != -1)\n
return 7; /* End row, table and use element */\n
return 0;\n
}\n
\n
function fixLeftRightHeightAndFocus(fix_height) {\n
if (fix_height == 1) {\n
var right_xpath = "following-sibling::fieldset[contains(@class, \'right\')]";\n
var matched_left_element_list = document.evaluate("//fieldset[contains(@class, \'left\') and " + right_xpath + "]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);\n
var element_index;\n
for (element_index = 0; element_index
< matched_left_element_list.snapshotLength
;
element_index++)
{\n
var
element =
matched_left_element_list.snapshotItem(element_index);\n
var
right =
document.evaluate(right_xpath,
element,
null,
XPathResult.FIRST_ORDERED_NODE_TYPE,
null).singleNodeValue;\n
var
table =
$(\'<table
class=
"fake"
>
\').insertBefore(element);\n
table.append($("
<tr>
").append($("
<td>
").append(element)).append($("
<td>
").append(right)));\n
}\n
}\n
autoFocus();\n
}\n
\n
// This function can be used to catch ENTER pressed in an input\n
// and modify respective main form action\n
// if clear_changed_flag is set to true, changed will be set to false, so no\n
// warning message about unsaved changes will be displayed\n
function submitFormOnEnter(event, form, method_name, clear_changed_flag, element){\n
if (clear_changed_flag === null){ clear_changed_flag = false; }\n
if(event.keyCode == 13){\n
if (form == "main_form") {\n
form = document.forms[form]; // backward compatibility\n
}\n
form.action = method_name;\n
if (clear_changed_flag === true) {\n
changed = false;\n
}\n
form.submit();\n
}\n
}\n
\n
var old_index = 0;\n
function shiftCheck(evt) {\n
/*Uncheck all checkboxes from last unchecked one in \n
business template Install / Update / Reinstall dialog.\n
*/\n
evt = (evt)?evt:event;\n
var target=(evt.target)?evt.target:evt.srcElement;\n
// remove "checkbox" part from ID\n
// This part can be reused easilly by usual left column\n
var target_index= target.id.substr(8);\n
if(!evt.shiftKey) {\n
old_index = target_index;\n
check_option = target.checked;\n
return false;\n
}\n
target.checked=1;\n
var low=Math.min(target_index , old_index);\n
var high=Math.max(target_index , old_index);\n
for(var i=low;i
<
=high;i++) {\n
$("#checkbox" + i).attr("checked", false);\n
}\n
return true;\n
}\n
\n
var indexAllCheckBoxesAtBTInstallationOnLoad = function() {\n
// This Part is used basically for Business Template Installation.\n
$("input.shift_check_support").each(\n
function(index){$(this).attr("id", "checkbox"+index);});\n
//var inputs = window.getElementsByTagAndClassName("input", "shift_check_support");\n
//for(i=0;i
<
=inputs.length-1;i++) {inputs[i].id = "checkbox" + i; }\n
};\n
\n
var resizeIFrameOnLoad = function() {\n
/* Resize all frames in document in order to remove sliders */\n
$("object.auto_height").each(function(){\n
var inner_frame = this.contentDocument;\n
if (inner_frame){\n
$(this).css("height", inner_frame.documentElement.offsetHeight + \'px\');\n
}\n
});\n
};\n
\n
var changed = false;\n
function installUnsavedChangesWarning(warning_message) {\n
window.onbeforeunload = function() {\n
if ((changed)
&&
($("button.save")))\n
// show an warning box only if save button do exists\n
return warning_message;\n
};\n
}\n
\n
var addOnChangeEventHandler = function() {\n
/* Add a onchange event handler for all fields inputs.\n
This event handler set a dirty flag which cause a warning\n
while leaving the page, unless leaving by:\n
- saving (see clickSaveButton function from this file)\n
- clicking a relation field wheel\n
- clicking on a input with type submit\n
*/\n
$("#master div").each(function(i) {\n
if ($(this).attr("class") == "input") {\n
$(this).children().each(function() {\n
if ($(this).prop("tagName") == "INPUT" ||\n
$(this).prop("tagName") == "SELECT" ||\n
$(this).prop("tagName") == "TEXTAREA") {\n
if ($(this).val() == "update..." ||\n
($(this).prop("tagName") == "INPUT"
&&
\n
$(this).attr("type") == \'submit\')) {\n
// this is a relation field wheel or a submit form button\n
this.onclick = function() { changed = false;};\n
} else {\n
if (!this.onchange) {\n
this.onchange = function() { changed = true; };\n
}\n
}\n
} \n
/* Listbox or MatrixBox */\n
if ($(this).prop("tagName") == "DIV"
&&
(\n
$(this).attr("class") == "listbox-container" ||\n
$(this).attr("class") == "MatrixContent")) {\n
$(this).find(\'td\').each(function(){\n
if ($(this).attr("class") == "listbox-search-line") {\n
return non-false;\n
}\n
$(this).find(\'input\').each(function(){\n
if ($(this).attr("type") != "hidden"
&&
\n
!this.onchange) {\n
this.onchange = function() { changed = true; };\n
}\n
});\n
});\n
}\n
});\n
}\n
});\n
};\n
\n
var rewriteIndentedSelect = function() {\n
/*\n
Under firefox, rewrite indented title categories using style definition.\n
This way we can select items by pressing the first letter of their name. */\n
\n
$("#master select").each(function() {\n
$(this).children().each(function() {\n
if ($(this).prop("tagName") != "OPTION") {\n
return non-false;\n
}\n
text = $(this).html();\n
if (text.substring(0, 1) == \'\\n\') {\n
text = text.substring(1, text.length);\n
}\n
level = 0;\n
if (text.substring(0, 6) == \'
\') {\n
for (idx=0; idx
<
= text.length; idx+=6) {\n
if (text.substring(idx, idx+6) == \'
\') {\n
level += 1;\n
} else {\n
break;\n
}\n
}\n
}\n
if (level >= 1) {\n
level = level / 4.0;\n
$(this).html(text.replace(/^(
)+/, ""));\n
$(this).css("paddingLeft", level+"em");\n
}\n
});\n
});\n
};\n
\n
function queryStringToArray(query_string){\n
/*\n
Turn a query string into a "dictionary"\n
*/\n
var final_dict = {};\n
var b = query_string.split(\'
&\');
\n
$.each(b, function(x, y){\n
var temp = y.split(\'=\');\n
final_dict[temp[0]] = temp[1];});\n
return final_dict;\n
}\n
\n
function submitLinkAsHtmlForm(event){\n
/*\n
Parse link into form arguments and pass everything as a \n
form (together with rest of page\'s input elements).\n
*/\n
var url = $(this).attr("href");\n
var form = $("form");\n
var method = url.substring(0, url.indexOf(\'?\'));\n
var query_string = url.substring(url.indexOf(\'?\')+1);\n
var params = queryStringToArray(query_string);\n
$.each(params, function(key, value) {\n
if (!$(\'*[name="\' + key + \'"]\').length){\n
// key not part of HTML namespace\n
form.append(\'
<input
type=
"hidden"
name=
"\' + key+ \'"
value=
"\' + value + \'"
>
\');\n
}});\n
// submit form \n
form.attr("action", method);\n
form.submit();\n
event.stopPropagation();\n
return false;\n
}\n
\n
function redirectPDFPage(event, element){\n
/*\n
Used in PDF thumbnail preview mode\n
*/\n
if(event.keyCode == 13){\n
selection_index = parseInt($(element).val(), 10) - 1;\n
window.location.href = "PDF_viewHTMLPreviewAsImage?selection_index=" + selection_index;\n
return false; \n
}\n
}\n
\n
if (navigator.userAgent.toLowerCase().indexOf(\'firefox\') != -1)\n
$(document).ready(rewriteIndentedSelect);\n
$(document).ready(resizeIFrameOnLoad);\n
$(document).ready(addOnChangeEventHandler);\n
$(document).ready(indexAllCheckBoxesAtBTInstallationOnLoad);
]]>
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_xhtml_jquery_style/bt/change_log
View file @
5762843f
2013-04-12 tatuya
* Move erp5.js to erp5_xhtml_style since jQuery has become essential in ERP5.
2011-01-14 Ivan
* Initial import
\ No newline at end of file
bt5/erp5_xhtml_jquery_style/bt/revision
View file @
5762843f
26
\ No newline at end of file
27
\ No newline at end of file
product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/ERP5Site_getJavaScriptRelativeUrlList.xml
View file @
5762843f
...
...
@@ -59,8 +59,7 @@
#\n
# BBB: For the history, erp5_xhtml_appearance.js is included by default when\n
# js_list is not pre-defined before the global definitions.\n
\n
js_list = (\'erp5.js\',)\n
js_list = (\'jquery/core/jquery.min.js\', \'erp5.js\',)\n
return js_list\n
</string>
</value>
</item>
...
...
product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/erp5.js.xml
View file @
5762843f
...
...
@@ -28,7 +28,9 @@
</item>
<item>
<key>
<string>
raw
</string>
</key>
<value>
<string>
/*\n
<value>
<string
encoding=
"cdata"
>
<![CDATA[
/*\n
Copyright (c) 20xx-2006 Nexedi SARL and Contributors. All Rights Reserved.\n
\n
This program is Free Software; you can redistribute it and/or\n
...
...
@@ -60,9 +62,316 @@ function clickSaveButton(act) {\n
document.forms[0].action = act;\n
}\n
\n
// The first input element with an "autofocus" class will get the focus,\n
// else if no element have autofocus class, the first element which is not the\n
// search field will get the focus. This is generally the title input text of\n
// a view\n
function autoFocus() {\n
var first_autofocus_expr = ".//input[@class=\'autofocus\']";\n
var FIRST_RESULT = XPathResult.FIRST_ORDERED_NODE_TYPE;\n
\n
var input = document.evaluate(first_autofocus_expr, document, null, FIRST_RESULT, null).singleNodeValue;\n
if (input) {\n
input.focus();\n
}else{\n
// The following is disabled, because it is too annoying to have an auto focus at everywhere.\n
//var first_text_input_expr = ".//input[@type=\'text\'][@name != \'field_your_search_text\']"\n
//var first_text_input = document.evaluate(first_text_input_expr, document, null, FIRST_RESULT, null).singleNodeValue;\n
//if (first_text_input){\n
// first_text_input.focus();\n
//}\n
true;\n
}\n
}\n
\n
function buildTables(element_list, rowPredicate, columnPredicate,\n
tableClassName) {\n
/* Generic code to build a table from elements in element_list.\n
* XXX: not used anymore ?\n
* rowPredicate(element) ->
bool\n
* When it returns a true value, a new line is started with element.\n
* When is returns a false value, element is skipped.\n
* columnPredicate(element, initial_element) -> bitfield\n
* bit 3: end_table (if true, imlies end_row)\n
* End current table.\n
* bit 2: end_row\n
* End current row.\n
* bit 1: use_element\n
* Element passed to columnPredicate will be put in current row.\n
* Hardcoded:\n
* - items in a table line must be siblings in existing DOM\n
* - table is put in place of first element of the first row\n
*/\n
var element_index = 0;\n
while (element_index
< element_list.length
)
{\n
var
row_list =
[];\n
var
end_table =
false;\n
while
((!end_table)
&&
element_index
<
element_list.length)
{\n
var
row_begin =
element_list[element_index];\n
if
(rowPredicate(row_begin))
{\n
var
item_list =
[row_begin];\n
var
row_item =
row_begin;\n
var
end_line =
false;\n
while
((!end_line)
&&
(
row_item =
row_item.nextSibling)
!==
null)
{\n
var
predicate_result =
columnPredicate(row_item,
row_begin);\n
if
((predicate_result
&
1)
!==
0)\n
item_list.push(row_item);\n
end_table =
((predicate_result
&
4)
!==
0);\n
end_line =
((predicate_result
&
6)
!==
0);\n
}\n
row_list.push(item_list);\n
}\n
element_index++;\n
}\n
/*
Do
not
create
a
table
with
just
one
cell.
*/\n
if
((row_list.length
>
1) ||\n
(row_list.length == 1
&&
row_list[0].length > 1)) {\n
var first_element = row_list[0][0];\n
var fake_table = $("
<table>
");\n
fake_table.addClass(tableClassName);\n
fake_table.insertbefore(first_element);\n
$.each(row_list, function() {\n
var fake_row = $("
<tr>
");\n
$.each(this, function() {\n
var fake_cell = $("
<td>
");\n
fake_cell.append(this);\n
fake_row.append(fake_cell[0]);\n
});\n
fake_table.append(fake_row[0]);\n
});\n
}\n
}\n
}\n
\n
function matchLeftFieldset(element) {\n
// XXX: not used anymore ?\n
return (element.tagName == "FIELDSET"
&&
\n
element.className.toLowerCase().indexOf(\'left\') != -1);\n
}\n
\n
function matchRightFieldset(element, ignored) {\n
// XXX: not used anymore ?\n
if (element.tagName == "FIELDSET"
&&
\n
element.className.toLowerCase().indexOf(\'right\') != -1)\n
return 7; /* End row, table and use element */\n
return 0;\n
}\n
\n
function fixLeftRightHeightAndFocus(fix_height) {\n
if (fix_height == 1) {\n
var right_xpath = "following-sibling::fieldset[contains(@class, \'right\')]";\n
var matched_left_element_list = document.evaluate("//fieldset[contains(@class, \'left\') and " + right_xpath + "]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);\n
var element_index;\n
for (element_index = 0; element_index
< matched_left_element_list.snapshotLength
;
element_index++)
{\n
var
element =
matched_left_element_list.snapshotItem(element_index);\n
var
right =
document.evaluate(right_xpath,
element,
null,
XPathResult.FIRST_ORDERED_NODE_TYPE,
null).singleNodeValue;\n
var
table =
$(\'<table
class=
"fake"
>
\').insertBefore(element);\n
table.append($("
<tr>
").append($("
<td>
").append(element)).append($("
<td>
").append(right)));\n
}\n
}\n
autoFocus();\n
}\n
\n
// This function can be used to catch ENTER pressed in an input\n
// and modify respective main form action\n
// if clear_changed_flag is set to true, changed will be set to false, so no\n
// warning message about unsaved changes will be displayed\n
function submitFormOnEnter(event, form, method_name, clear_changed_flag, element){\n
if (clear_changed_flag === null){ clear_changed_flag = false; }\n
if(event.keyCode == 13){\n
if (form == "main_form") {\n
form = document.forms[form]; // backward compatibility\n
}\n
form.action = method_name;\n
if (clear_changed_flag === true) {\n
changed = false;\n
}\n
form.submit();\n
}\n
}\n
\n
var old_index = 0;\n
function shiftCheck(evt) {\n
/*Uncheck all checkboxes from last unchecked one in \n
business template Install / Update / Reinstall dialog.\n
*/\n
evt = (evt)?evt:event;\n
var target=(evt.target)?evt.target:evt.srcElement;\n
// remove "checkbox" part from ID\n
// This part can be reused easilly by usual left column\n
var target_index= target.id.substr(8);\n
if(!evt.shiftKey) {\n
old_index = target_index;\n
check_option = target.checked;\n
return false;\n
}\n
target.checked=1;\n
var low=Math.min(target_index , old_index);\n
var high=Math.max(target_index , old_index);\n
for(var i=low;i
<
=high;i++) {\n
$("#checkbox" + i).attr("checked", false);\n
}\n
return true;\n
}\n
\n
var indexAllCheckBoxesAtBTInstallationOnLoad = function() {\n
// This Part is used basically for Business Template Installation.\n
$("input.shift_check_support").each(\n
function(index){$(this).attr("id", "checkbox"+index);});\n
//var inputs = window.getElementsByTagAndClassName("input", "shift_check_support");\n
//for(i=0;i
<
=inputs.length-1;i++) {inputs[i].id = "checkbox" + i; }\n
};\n
\n
var resizeIFrameOnLoad = function() {\n
/* Resize all frames in document in order to remove sliders */\n
$("object.auto_height").each(function(){\n
var inner_frame = this.contentDocument;\n
if (inner_frame){\n
$(this).css("height", inner_frame.documentElement.offsetHeight + \'px\');\n
}\n
});\n
};\n
\n
var changed = false;\n
function installUnsavedChangesWarning(warning_message) {\n
// XXX: to be overriden in othe JavaScript based styles \n
}
</string>
</value>
window.onbeforeunload = function() {\n
if ((changed)
&&
($("button.save")))\n
// show an warning box only if save button do exists\n
return warning_message;\n
};\n
}\n
\n
var addOnChangeEventHandler = function() {\n
/* Add a onchange event handler for all fields inputs.\n
This event handler set a dirty flag which cause a warning\n
while leaving the page, unless leaving by:\n
- saving (see clickSaveButton function from this file)\n
- clicking a relation field wheel\n
- clicking on a input with type submit\n
*/\n
$("#master div").each(function(i) {\n
if ($(this).attr("class") == "input") {\n
$(this).children().each(function() {\n
if ($(this).prop("tagName") == "INPUT" ||\n
$(this).prop("tagName") == "SELECT" ||\n
$(this).prop("tagName") == "TEXTAREA") {\n
if ($(this).val() == "update..." ||\n
($(this).prop("tagName") == "INPUT"
&&
\n
$(this).attr("type") == \'submit\')) {\n
// this is a relation field wheel or a submit form button\n
this.onclick = function() { changed = false;};\n
} else {\n
if (!this.onchange) {\n
this.onchange = function() { changed = true; };\n
}\n
}\n
} \n
/* Listbox or MatrixBox */\n
if ($(this).prop("tagName") == "DIV"
&&
(\n
$(this).attr("class") == "listbox-container" ||\n
$(this).attr("class") == "MatrixContent")) {\n
$(this).find(\'td\').each(function(){\n
if ($(this).attr("class") == "listbox-search-line") {\n
return non-false;\n
}\n
$(this).find(\'input\').each(function(){\n
if ($(this).attr("type") != "hidden"
&&
\n
!this.onchange) {\n
this.onchange = function() { changed = true; };\n
}\n
});\n
});\n
}\n
});\n
}\n
});\n
};\n
\n
var rewriteIndentedSelect = function() {\n
/*\n
Under firefox, rewrite indented title categories using style definition.\n
This way we can select items by pressing the first letter of their name. */\n
\n
$("#master select").each(function() {\n
$(this).children().each(function() {\n
if ($(this).prop("tagName") != "OPTION") {\n
return non-false;\n
}\n
text = $(this).html();\n
if (text.substring(0, 1) == \'\\n\') {\n
text = text.substring(1, text.length);\n
}\n
level = 0;\n
if (text.substring(0, 6) == \'
\') {\n
for (idx=0; idx
<
= text.length; idx+=6) {\n
if (text.substring(idx, idx+6) == \'
\') {\n
level += 1;\n
} else {\n
break;\n
}\n
}\n
}\n
if (level >= 1) {\n
level = level / 4.0;\n
$(this).html(text.replace(/^(
)+/, ""));\n
$(this).css("paddingLeft", level+"em");\n
}\n
});\n
});\n
};\n
\n
function queryStringToArray(query_string){\n
/*\n
Turn a query string into a "dictionary"\n
*/\n
var final_dict = {};\n
var b = query_string.split(\'
&\');
\n
$.each(b, function(x, y){\n
var temp = y.split(\'=\');\n
final_dict[temp[0]] = temp[1];});\n
return final_dict;\n
}\n
\n
function submitLinkAsHtmlForm(event){\n
/*\n
Parse link into form arguments and pass everything as a \n
form (together with rest of page\'s input elements).\n
*/\n
var url = $(this).attr("href");\n
var form = $("form");\n
var method = url.substring(0, url.indexOf(\'?\'));\n
var query_string = url.substring(url.indexOf(\'?\')+1);\n
var params = queryStringToArray(query_string);\n
$.each(params, function(key, value) {\n
if (!$(\'*[name="\' + key + \'"]\').length){\n
// key not part of HTML namespace\n
form.append(\'
<input
type=
"hidden"
name=
"\' + key+ \'"
value=
"\' + value + \'"
>
\');\n
}});\n
// submit form \n
form.attr("action", method);\n
form.submit();\n
event.stopPropagation();\n
return false;\n
}\n
\n
function redirectPDFPage(event, element){\n
/*\n
Used in PDF thumbnail preview mode\n
*/\n
if(event.keyCode == 13){\n
selection_index = parseInt($(element).val(), 10) - 1;\n
window.location.href = "PDF_viewHTMLPreviewAsImage?selection_index=" + selection_index;\n
return false; \n
}\n
}\n
\n
if (navigator.userAgent.toLowerCase().indexOf(\'firefox\') != -1)\n
$(document).ready(rewriteIndentedSelect);\n
$(document).ready(resizeIFrameOnLoad);\n
$(document).ready(addOnChangeEventHandler);\n
$(document).ready(indexAllCheckBoxesAtBTInstallationOnLoad);
]]>
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
...
...
product/ERP5/bootstrap/erp5_xhtml_style/bt/change_log
View file @
5762843f
2013-04-12 tatuya
* Add erp5_jquery dependency because jQuery has become essential in ERP5 for good compatibility among modern web browsers.
* Move jQuerified erp5.js from erp5_xhtml_jquery_style
2013-01-28 Kazuhiko
* update RequireJS 2.1.4.
...
...
product/ERP5/bootstrap/erp5_xhtml_style/bt/dependency_list
View file @
5762843f
erp5_core
\ No newline at end of file
erp5_core
erp5_jquery
\ No newline at end of file
product/ERP5/bootstrap/erp5_xhtml_style/bt/revision
View file @
5762843f
1096
\ No newline at end of file
1097
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment