Skip to content

Instantly share code, notes, and snippets.

@WebMechanic
Created March 25, 2012 20:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save WebMechanic/2199473 to your computer and use it in GitHub Desktop.
Save WebMechanic/2199473 to your computer and use it in GitHub Desktop.
Joomla! core.js on a diet and MT free.
/*!
* @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