Created
March 25, 2012 20:11
-
-
Save WebMechanic/2199473 to your computer and use it in GitHub Desktop.
Joomla! core.js on a diet and MT free.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*! | |
* @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved. | |
* @license GNU General Public License version 2 or later; see LICENSE.txt | |
*/ | |
// Only define the Joomla namespace if not defined. | |
if (typeof(Joomla) === 'undefined') { | |
var Joomla = {}; | |
} | |
// An object to hold each editor instance on page | |
Joomla.editors = {instances:{}}; | |
/** | |
* Helper method to find an element by id or a form element (BC Joomla! 1.5). | |
*/ | |
Joomla.$ = function(str) { | |
return document.getElementById(str) || document[str]; | |
}; | |
/** | |
* Generic submit form | |
*/ | |
Joomla.submitform = function(task, form) { | |
form = form || Joomla.$('adminForm'); | |
if (typeof(task) !== 'undefined') { | |
form.task.value = task; | |
} | |
// Submit the form. | |
if (typeof form.onsubmit == 'function') { | |
form.onsubmit(); | |
} | |
if (typeof form.fireEvent == 'function') { | |
form.fireEvent('submit'); | |
} | |
form.submit(); | |
}; | |
/** | |
* Default function. Usually would be overriden by the component | |
*/ | |
Joomla.submitbutton = function(pressbutton) { | |
Joomla.submitform(pressbutton); | |
}; | |
/** | |
* Custom behavior for JavaScript I18N in Joomla! 1.6 | |
* | |
* Allows you to call Joomla.JText._() to get a translated JavaScript string pushed in with JText::script() in Joomla. | |
*/ | |
Joomla.JText = { | |
strings: {}, | |
'_': function(key, def) { | |
return typeof this.strings[key.toUpperCase()] !== 'undefined' ? this.strings[key.toUpperCase()] : def; | |
}, | |
load: function(object) { | |
for (var key in object) { | |
this.strings[key.toUpperCase()] = object[key]; | |
} | |
return this; | |
} | |
}; | |
/** | |
* Method to replace all request tokens on the page with a new one. | |
*/ | |
Joomla.replaceTokens = function(n) { | |
var els = document.getElementsByTagName('input'); | |
for (var i = 0; i < els.length; i++) { | |
if ((els[i].type == 'hidden') && (els[i].name.length == 32) && els[i].value == '1') { | |
els[i].name = n; | |
} | |
} | |
}; | |
/** | |
* USED IN: administrator/components/com_banners/views/client/tmpl/default.php | |
* | |
* Verifies if the string is in a valid email format | |
* | |
* @param string | |
* @return boolean | |
*/ | |
Joomla.isEmail = function(text) { | |
var regex = new RegExp("^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$"); | |
return regex.test(text); | |
}; | |
/** | |
* USED IN: all list forms. | |
* | |
* Toggles the check state of a group of boxes | |
* | |
* Checkboxes must have an id attribute in the form cb0, cb1... | |
* | |
* @param mixed The number of box to 'check', for a checkbox element | |
* @param string An alternative field name | |
*/ | |
Joomla.checkAll = function(checkbox, stub) { | |
var c, e, elts, form = checkbox.form; | |
stub = stub || 'cb'; | |
if (form) { | |
c = 0; | |
elts = form.getElementsByTagName('input'); | |
for (var i = 0, n = elts.length; i < n; i++) { | |
e = elts[i]; | |
if (e.type == checkbox.type) { | |
if ((stub && e.id.indexOf(stub) == 0) || !stub) { | |
e.checked = checkbox.checked; | |
c += (e.checked == true ? 1 : 0); | |
} | |
} | |
} | |
if (form.boxchecked) { | |
form.boxchecked.value = c; | |
} | |
return true; | |
} | |
return false; | |
}; | |
/** | |
* Render messages send via JSON | |
* | |
* @param object messages JavaScript object containing the messages to render | |
* @return void | |
*/ | |
Joomla.renderMessages = function(messages) { | |
var type, t, msg, buffer = ['<dl id="system-message" role="alert">']; | |
for (type in messages) { | |
if (!type) { | |
continue; | |
} | |
buffer[buffer.length] = '<dt class="' + type.toLowerCase() + '">' + Joomla.JText._(type) + '</dt>'; | |
buffer[buffer.length] = '<dd class="' + type.toLowerCase() + ' message">'; | |
buffer[buffer.length] = '<ul>'; | |
while (msg = messages[type].shift()) { | |
if (typeof msg == 'string') { | |
buffer[buffer.length] = '<li>' + msg + '</li>'; | |
} | |
else if (msg instanceof Array) { | |
for (m = 0; m < msg.length; m++) { | |
buffer[buffer.length] = '<li>' + msg[m] + '</li>'; | |
} | |
} | |
} | |
buffer[buffer.length] = '</ul>'; | |
buffer[buffer.length] = '</dd>'; | |
} | |
buffer[buffer.length] = '</dl>'; | |
Joomla.$('system-message-container').innerHTML = buffer.join("\n"); | |
}; | |
/** | |
* Remove messages | |
* | |
* @return void | |
*/ | |
Joomla.removeMessages = function() { | |
Joomla.$('system-message-container').innerHTML = ''; | |
}; | |
/** | |
* USED IN: administrator/components/com_cache/views/cache/tmpl/default.php | |
* administrator/components/com_installer/views/discover/tmpl/default_item.php | |
* administrator/components/com_installer/views/update/tmpl/default_item.php | |
* administrator/components/com_languages/helpers/html/languages.php | |
* libraries/joomla/html/html/grid.php | |
* | |
* @param isitchecked | |
* @param form | |
* @return | |
*/ | |
Joomla.isChecked = function(isitchecked, form) { | |
form = form || Joomla.$('adminForm'); | |
if (isitchecked == true) { | |
form.boxchecked.value++; | |
} else { | |
form.boxchecked.value--; | |
} | |
}; | |
/** | |
* USED IN: libraries/joomla/html/toolbar/button/help.php | |
* | |
* Pops up a new window in the middle of the screen | |
*/ | |
Joomla.popupWindow = function(mypage, myname, w, h, scroll) { | |
var winl = (screen.width - w) / 2; | |
var wint = (screen.height - h) / 2; | |
var winprops = 'height=' + h + ',width=' + w + ',top=' + wint + ',left=' + winl | |
+ ',scrollbars=' + scroll + ',resizable'; | |
var win = window.open(mypage, myname, winprops); | |
win.window.focus(); | |
}; | |
/** | |
* USED IN: libraries/joomla/html/html/grid.php | |
*/ | |
Joomla.tableOrdering = function(order, dir, task, form) { | |
form = form || Joomla.$('adminForm'); | |
form.filter_order.value = order; | |
form.filter_order_Dir.value = dir; | |
Joomla.submitform(task, form); | |
}; | |
/** | |
* USED IN: administrator/components/com_modules/views/module/tmpl/default.php | |
* | |
* Writes a dynamically generated list | |
* | |
* @param string | |
* The parameters to insert into the <select> tag | |
* @param array | |
* A javascript array of list options in the form [key,value,text] | |
* @param string | |
* The key to display for the initial state of the list | |
* @param string | |
* The original key that was selected | |
* @param string | |
* The original item value that was selected | |
*/ | |
function writeDynaList(selectParams, source, key, orig_key, orig_val) { | |
var d1 = null, d2 = null; | |
d1 = new Date(); | |
var html = '<select ' + selectParams + '>', i = 0, selected = '', m, lbl; | |
for (x in source) { | |
if (source[x][0] == key) { | |
if ((orig_key == key && orig_val == source[x][1]) || (i == 0 && orig_key != key)) { | |
selected = 'selected="selected"'; | |
} | |
html += '<option value="' + source[x][1] + '" ' + selected + '>' + source[x][2] + '</option>'; | |
} | |
i++; | |
} | |
html += '</select>'; | |
/* http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite */ | |
if (('insertAdjacentHTML' in document.body) && (m = selectParams.match(/id\=\"(.*)\"/))) { | |
lbl = document.getElementById(m[1] + '-lbl'); | |
if (lbl) { | |
lbl.insertAdjacentHTML('afterend', html); | |
return; | |
} | |
} | |
document.writeln(html); | |
} | |
/** | |
* USED IN: administrator/components/com_content/views/article/view.html.php | |
* | |
* Changes a dynamically generated list | |
* | |
* @param string | |
* The name of the list to change | |
* @param array | |
* A javascript array of list options in the form [key,value,text] | |
* @param string | |
* The key to display | |
* @param string | |
* The original key that was selected | |
* @param string | |
* The original item value that was selected | |
*/ | |
function changeDynaList(listname, source, key, orig_key, orig_val) { | |
var list = Joomla.$('adminForm')[listname]; | |
// empty the list | |
for (i in list.options.length) { | |
list.options[i] = null; | |
} | |
i = 0; | |
for (x in source) { | |
if (source[x][0] == key) { | |
opt = new Option(); | |
opt.value = source[x][1]; | |
opt.text = source[x][2]; | |
if ((orig_key == key && orig_val == opt.value) || i == 0) { | |
opt.selected = true; | |
} | |
list.options[i++] = opt; | |
} | |
} | |
list.length = i; | |
} | |
/** | |
* USED IN: administrator/components/com_menus/views/menus/tmpl/default.php | |
* | |
* @param radioObj | |
* @return | |
*/ | |
// return the value of the radio button that is checked | |
// return an empty string if none are checked, or | |
// there are no radio buttons | |
function radioGetCheckedValue(radioObj) { | |
if (!radioObj) { | |
return ''; | |
} | |
var n = radioObj.length; | |
if (n == undefined) { | |
if (radioObj.checked) { | |
return radioObj.value; | |
} else { | |
return ''; | |
} | |
} | |
for ( var i = 0; i < n; i++) { | |
if (radioObj[i].checked) { | |
return radioObj[i].value; | |
} | |
} | |
return ''; | |
} | |
/** | |
* USED IN: administrator/components/com_banners/views/banner/tmpl/default/php | |
* administrator/components/com_categories/views/category/tmpl/default.php | |
* administrator/components/com_categories/views/copyselect/tmpl/default.php | |
* administrator/components/com_content/views/copyselect/tmpl/default.php | |
* administrator/components/com_massmail/views/massmail/tmpl/default.php | |
* administrator/components/com_menus/views/list/tmpl/copy.php | |
* administrator/components/com_menus/views/list/tmpl/move.php | |
* administrator/components/com_messages/views/message/tmpl/default_form.php | |
* administrator/components/com_newsfeeds/views/newsfeed/tmpl/default.php | |
* components/com_content/views/article/tmpl/form.php | |
* templates/beez/html/com_content/article/form.php | |
* | |
* @param frmName | |
* @param srcListName | |
* @return | |
*/ | |
function getSelectedValue(frmName, srcListName) { | |
var srcList = Joomla.$(frmName)[srcListName]; | |
i = srcList.selectedIndex; | |
if (i != null && i > -1) { | |
return srcList.options[i].value; | |
} else { | |
return null; | |
} | |
} | |
/** | |
* USED IN: all list forms. | |
* | |
* Toggles the check state of a group of boxes | |
* | |
* Checkboxes must have an id attribute in the form cb0, cb1... | |
* | |
* @param mixed The number of box to 'check', for a checkbox element | |
* @param string An alternative field name | |
* | |
* @deprecated 12.1 This function will be removed in a future version. Use Joomla.checkAll() instead. | |
*/ | |
window.checkAll = Joomla.checkAll; | |
/** | |
* USED IN: all over :) | |
* | |
* @param id | |
* @param task | |
* @return | |
*/ | |
function listItemTask(id, task) { | |
var f = Joomla.$('adminForm'), cb = f[id]; | |
if (cb) { | |
for (var i = 0; true; i++) { | |
var cbx = f['cb'+i]; | |
if (!cbx) { | |
break; | |
} | |
cbx.checked = false; | |
} // for | |
cb.checked = true; | |
f.boxchecked.value = 1; | |
submitbutton(task); | |
} | |
return false; | |
} | |
/** | |
* USED IN: administrator/components/com_cache/views/cache/tmpl/default.php | |
* administrator/components/com_installer/views/discover/tmpl/default_item.php | |
* administrator/components/com_installer/views/update/tmpl/default_item.php | |
* administrator/components/com_languages/helpers/html/languages.php | |
* libraries/joomla/html/html/grid.php | |
* | |
* @deprecated 12.1 This function will be removed in a future version. Use Joomla.isChecked() instead. | |
* | |
* @param isitchecked | |
* @return | |
* | |
*/ | |
window.isChecked = Joomla.isChecked; | |
/** | |
* Default function. Usually would be overriden by the component | |
* | |
* @deprecated 12.1 This function will be removed in a future version. Use Joomla.submitbutton() instead. | |
*/ | |
window.submitbutton = function(pressbutton) { | |
Joomla.submitform(pressbutton); | |
}; | |
/** | |
* Submit the admin form | |
* | |
* @deprecated 12.1 This function will be removed in a future version. Use Joomla.submitform() instead. | |
*/ | |
window.submitform = Joomla.submitform; | |
/** | |
* USED IN: libraries/joomla/html/toolbar/button/help.php | |
* | |
* Pops up a new window in the middle of the screen | |
* | |
* @deprecated 12.1 This function will be removed in a future version. Use Joomla.popupWindow() instead. | |
*/ | |
window.popupWindow = Joomla.popupWindow; | |
/** | |
* USED IN: libraries/joomla/html/html/grid.php | |
* | |
* Needed for Table Column ordering | |
* | |
* @deprecated 12.1 This function will be removed in a future version. Use Joomla.tableOrdering() instead. | |
*/ | |
window.tableOrdering = Joomla.tableOrdering; | |
/** | |
* USED IN: libraries/joomla/html/html/grid.php | |
*/ | |
function saveorder(n, task) { | |
if (!task) { | |
task = 'saveorder'; | |
} | |
for (var j = 0; j <= n; j++) { | |
var box = Joomla.$('adminForm')['cb'+j]; | |
if (box) { | |
if (box.checked == false) { | |
box.checked = true; | |
} | |
} else { | |
alert("You cannot change the order of items, as an item in the list is `Checked Out`"); | |
return; | |
} | |
} | |
Joomla.submitform(task); | |
}; | |
window.checkAll_button = saveorder; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment