187 lines
5.8 KiB
JavaScript
187 lines
5.8 KiB
JavaScript
/* __ __ _
|
|
WordPress Plugin | \/ | | |
|
|
_ __ __ _ __ _ ___| \ / | __ _ ___| |__
|
|
| '_ \ / _` |/ _` |/ _ \ |\/| |/ _` / __| '_ \
|
|
| |_) | (_| | (_| | __/ | | | (_| \__ \ | | |
|
|
| .__/ \__,_|\__, |\___|_| |_|\__,_|___/_| |_|
|
|
| | __/ | Author: Joel Starnes
|
|
|_| |___/ URL: pagemash.joelstarnes.co.uk
|
|
|
|
>>Main javascript include
|
|
*/
|
|
|
|
window.addEvent('domready', function(){
|
|
// If user doesn't have Firebug, create empty functions for the console.
|
|
if (!window.console || !console.firebug)
|
|
{
|
|
var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
|
|
"group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
|
|
|
|
window.console = {};
|
|
for (var i = 0; i < names.length; ++i)
|
|
window.console[names[i]] = function() {}
|
|
}
|
|
});
|
|
|
|
/* add timeout to Ajax class */
|
|
Ajax = Ajax.extend({
|
|
request: function(){
|
|
if (this.options.timeout) {
|
|
this.timeoutTimer=window.setTimeout(this.callTimeout.bindAsEventListener(this), this.options.timeout);
|
|
this.addEvent('onComplete', this.removeTimer);
|
|
}
|
|
this.parent();
|
|
},
|
|
callTimeout: function () {
|
|
this.transport.abort();
|
|
this.onFailure();
|
|
if (this.options.onTimeout) {
|
|
this.options.onTimeout();
|
|
|
|
}
|
|
},
|
|
removeTimer: function() {
|
|
window.clearTimeout(this.timeoutTimer);
|
|
}
|
|
});
|
|
/* function to retrieve list data and send to server in JSON format */
|
|
var saveList = function() {
|
|
var theDump = sortIt.serialize();
|
|
console.group('Database Update');
|
|
console.time('Update Chronometer');
|
|
new Ajax('../wp-content/plugins/pagemash/savelist.php', {
|
|
method: 'post',
|
|
postBody: 'm='+Json.toString(theDump),
|
|
update: "debug_list",
|
|
onComplete: function() {
|
|
$('update_status').setText(window.pmash.update);
|
|
new Fx.Style($('update_status'), 'opacity', {duration: 500}).start(0,1).chain(function() {
|
|
new Fx.Style($('update_status'), 'opacity', {duration: 1500}).start(1,0);
|
|
});
|
|
console.log('Database Successfully Updated');
|
|
console.timeEnd('Update Chronometer');
|
|
console.groupEnd();
|
|
},
|
|
timeout: 8500,
|
|
onTimeout: function() {
|
|
$('update_status').setText('Error: Update Timeout');
|
|
new Fx.Style($('update_status'), 'opacity', {duration: 200}).start(0,1);
|
|
console.timeEnd('Update Chronometer');
|
|
console.error('Error: update confirmation not recieved');
|
|
console.groupEnd();
|
|
}
|
|
}).request();
|
|
};
|
|
/* toggle the remove class of grandparent */
|
|
var toggleRemove = function(el) {
|
|
el.parentNode.parentNode.parentNode.toggleClass('remove');
|
|
console.log("Page: '%s' has been %s", $E('span.title', el.parentNode.parentNode.parentNode).innerHTML, (el.parentNode.parentNode.hasClass('remove') ? 'HIDDEN': 'MADE VISIBLE' ));
|
|
}
|
|
|
|
|
|
/* ******** dom ready ******** */
|
|
window.addEvent('domready', function(){
|
|
sortIt = new Nested('pageMash_pages', {
|
|
collapse: true,
|
|
onComplete: function(el) {
|
|
el.setStyle('background-color', '#F1F1F1');
|
|
sortIt.altColor();
|
|
|
|
$ES('li','pageMash_pages').each(function(el) {
|
|
if( el.getElement('ul') ){
|
|
el.addClass('children');
|
|
} else {
|
|
el.removeClass('children');
|
|
}
|
|
});
|
|
}
|
|
});
|
|
Nested.implement({
|
|
/* alternate the colours of top level nodes */
|
|
altColor: function(){
|
|
var odd = 1;
|
|
this.list.getChildren().each(function(element, i){
|
|
if(odd==1){
|
|
odd=0;
|
|
element.setStyle('background-color', '#CFE8A8');
|
|
}else{
|
|
odd=1;
|
|
element.setStyle('background-color', '#D8E8E6');
|
|
}
|
|
});
|
|
}
|
|
});
|
|
sortIt.altColor();
|
|
$('update_status').setStyle('opacity', 0);
|
|
|
|
$('pageMash_submit').addEvent('click', function(e){
|
|
e = new Event(e);
|
|
saveList();
|
|
e.stop();
|
|
});
|
|
|
|
var pageMashInfo = new Fx.Slide('pageMashInfo');
|
|
$('pageMashInfo_toggle').addEvent('click', function(e){
|
|
e = new Event(e);
|
|
pageMashInfo.toggle();
|
|
e.stop();
|
|
switch($('pageMashInfo_toggle').getText()) {
|
|
case "Show Further Info":
|
|
$('pageMashInfo_toggle').setText(window.pmash.hideInfo);
|
|
break
|
|
case "Hide Further Info":
|
|
$('pageMashInfo_toggle').setText(window.pmash.showInfo);
|
|
break
|
|
}
|
|
});
|
|
pageMashInfo.hide();
|
|
$('pageMashInfo_toggle').setText(window.pmash.showInfo);
|
|
|
|
|
|
/* loop through each page */
|
|
$ES('li','pageMash_pages').each(function(el) {
|
|
/* If the li has a 'ul' child; it has children pages */
|
|
if( el.getElement('ul') ) el.addClass('children');
|
|
|
|
/* on page dblClick add this event */
|
|
el.addEvent('dblclick', function(e){
|
|
e = new Event(e);
|
|
if(el.hasClass('children')) el.toggleClass('collapsed');
|
|
e.stop();
|
|
});
|
|
});
|
|
|
|
$('collapse_all').addEvent('click', function(e){ e = new Event(e);
|
|
$ES('li','pageMash_pages').each(function(el) {
|
|
if(el.hasClass('children')) el.addClass('collapsed');
|
|
});
|
|
e.stop(); });
|
|
|
|
$('expand_all').addEvent('click', function(e){ e = new Event(e);
|
|
$ES('li','pageMash_pages').each(function(el) {
|
|
if(el.hasClass('children')) el.removeClass('collapsed');
|
|
});
|
|
e.stop(); });
|
|
|
|
/* disable drag text-selection for IE */
|
|
if (typeof document.body.onselectstart!="undefined")
|
|
document.body.onselectstart=function(){return false}
|
|
|
|
/* InlineEdit: rename pages */
|
|
$$('#pageMash_pages li span.title').each(function(el){ //#pageMash_pages li span.title
|
|
el.setStyle('cursor','pointer');
|
|
$E('a.rename', el.parentNode).addEvent('click',function(){
|
|
el.inlineEdit({
|
|
onStart:function(el){
|
|
el.parentNode.addClass('renaming');
|
|
},
|
|
onComplete:function(el,oldContent,newContent){
|
|
el.parentNode.removeClass('renaming').addClass('renamed');
|
|
console.log("Page: '%s' has been RENAMED to: '%s'", oldContent, newContent);
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
console.info("We're all up and running.")
|
|
}); /* close dom ready */ |