1058 lines
25 KiB
JavaScript
1058 lines
25 KiB
JavaScript
/************************************************/
|
|
/* IPB3 Javascript */
|
|
/* -------------------------------------------- */
|
|
/* ips.blog.js - Blog javascript */
|
|
/* (c) IPS, Inc 2008 */
|
|
/* -------------------------------------------- */
|
|
/* Author: Rikki Tissier */
|
|
/************************************************/
|
|
|
|
var _blog = window.IPBoard;
|
|
|
|
_blog.prototype.blog = {
|
|
|
|
cblocks: {},
|
|
canPostDraft: 1,
|
|
canPublish: 1,
|
|
defStatusGlobal: 'published',
|
|
defStatus: 'published',
|
|
_updating: 0,
|
|
currentTags: {},
|
|
currentCats: {},
|
|
_newCats: $H(),
|
|
goComments: 0,
|
|
maxCats: 0,
|
|
updateLeft: false,
|
|
updateRight: false,
|
|
cton: false,
|
|
// Properties for sortable
|
|
props: { tag: 'div', only: 'cblock_drag',
|
|
handle: 'draggable', containment: ['cblock_left', 'cblock_right'],
|
|
constraint: '', dropOnEmpty: true,
|
|
hoverclass: 'over'
|
|
},
|
|
popups: {},
|
|
cp1: null,
|
|
|
|
|
|
/*------------------------------*/
|
|
/* Constructor */
|
|
init: function()
|
|
{
|
|
Debug.write("Initializing ips.blog.js");
|
|
|
|
document.observe("dom:loaded", function(){
|
|
if( ipb.blog.inEntry && ipb.blog.ownerID == ipb.vars['member_id'] && ipb.blog.withBlocks )
|
|
{
|
|
ipb.blog.setUpDrags();
|
|
ipb.blog.setUpCloseLinks();
|
|
|
|
if( $('change_header') )
|
|
{
|
|
$('change_header').observe('click', ipb.blog.changeHeader);
|
|
}
|
|
|
|
if( $('add_theme') )
|
|
{
|
|
$('add_theme').observe('click', ipb.blog.changeTheme);
|
|
}
|
|
}
|
|
|
|
// Resize images
|
|
$$('.entry', '.poll').each( function(elem){
|
|
ipb.global.findImgs( $( elem ) );
|
|
});
|
|
|
|
ipb.delegate.register('a[rel="bookmark"]', ipb.blog.showLinkToEntry );
|
|
ipb.delegate.register('.delete_entry', ipb.blog.deleteEntry);
|
|
ipb.delegate.register('.delete_comment', ipb.blog.deleteComment );
|
|
|
|
/* Jump to comments? */
|
|
if ( ipb.blog.goComments )
|
|
{
|
|
$('comments').scrollTo();
|
|
}
|
|
});
|
|
},
|
|
|
|
/* INIT recent items menu */
|
|
setUpRecentMenu: function()
|
|
{
|
|
Debug.write('setting up menu' );
|
|
ipb.delegate.register(".__rmenu", ipb.blog.recentMenu);
|
|
},
|
|
|
|
recentMenu: function( e, elem )
|
|
{
|
|
Event.stop(e);
|
|
|
|
var action = $( elem ).className.match('__x([a-z]+)');
|
|
if( action == null || Object.isUndefined( action[1] ) ){ Debug.error("Error showing popup"); return; }
|
|
|
|
var newTitle = $( elem ).innerHTML;
|
|
var url = ipb.vars['base_url'] + "app=blog&module=ajax&section=sidebar&do=" + action[1] + '&md5check=' + ipb.vars['secure_hash'];
|
|
|
|
new Ajax.Request( url.replace(/&/g, '&'),
|
|
{
|
|
method: 'get',
|
|
evalJSON: 'force',
|
|
onSuccess: function(t)
|
|
{
|
|
if ( ! Object.isUndefined( t.responseJSON ) )
|
|
{
|
|
alert( ipb.lang['action_failed'] + ": " + t.responseJSON['error'] );
|
|
return;
|
|
}
|
|
|
|
$('recentajaxcontent').update( t.responseText );
|
|
$('ratitle').update( newTitle );
|
|
}
|
|
});
|
|
|
|
},
|
|
|
|
/* INIT Comment tracker button */
|
|
setUpCommentNotification: function( memberId, trackerId, entryId )
|
|
{
|
|
if ( memberId )
|
|
{
|
|
if ( trackerId )
|
|
{
|
|
$('__commentTrack_on').hide();
|
|
$('__commentTrack_off').show();
|
|
|
|
ipb.blog.cton = true;
|
|
}
|
|
else
|
|
{
|
|
$('__commentTrack_on').show();
|
|
$('__commentTrack_off').hide();
|
|
|
|
ipb.blog.cton = false;
|
|
}
|
|
|
|
$('__commentTrack_off').observe('click', ipb.blog.fireCommentTrackToggle.bindAsEventListener( this, entryId ) );
|
|
$('__commentTrack_on').observe('click', ipb.blog.fireCommentTrackToggle.bindAsEventListener( this, entryId ) );
|
|
}
|
|
},
|
|
|
|
fireCommentTrackToggle: function( e, entryId )
|
|
{
|
|
Event.stop(e);
|
|
ipb.blog.cton = ( ipb.blog.cton ) ? false : true;
|
|
|
|
var url = ipb.vars['base_url'] + "app=blog&module=ajax&section=comments&do=toggleTracker&blogid=" + ipb.blog.blogID + "&entry_id=" + entryId + "&md5check=" + ipb.vars['secure_hash'];
|
|
|
|
new Ajax.Request( url.replace(/&/g, '&'),
|
|
{
|
|
method: 'get',
|
|
evalJSON: 'force',
|
|
onSuccess: function(t)
|
|
{
|
|
if( !Object.isUndefined( t.responseJSON ) )
|
|
{
|
|
alert( ipb.lang['action_failed'] + ": " + t.responseJSON['error'] );
|
|
return;
|
|
}
|
|
|
|
if ( ipb.blog.cton )
|
|
{
|
|
$('__commentTrack_on').hide();
|
|
$('__commentTrack_off').show();
|
|
}
|
|
else
|
|
{
|
|
$('__commentTrack_on').show();
|
|
$('__commentTrack_off').hide();
|
|
}
|
|
}
|
|
});
|
|
},
|
|
|
|
/* INIT blogs as table */
|
|
setUpBlogsAsTable: function()
|
|
{
|
|
Debug.write('setting up popups' );
|
|
ipb.delegate.register(".__preview", ipb.blog.previewPopup);
|
|
},
|
|
|
|
previewPopup: function( e, elem )
|
|
{
|
|
Event.stop(e);
|
|
|
|
var sourceid = elem.identify();
|
|
var preview = $( elem ).className.match('__id([0-9]+)');
|
|
|
|
if( preview == null || Object.isUndefined( preview[1] ) ){ Debug.error("Error showing popup"); return; }
|
|
var popid = 'popup_' + preview[1] + '_preview';
|
|
|
|
ipb.namePops[ preview ] = new ipb.Popup( popid, {
|
|
type: 'balloon',
|
|
initial: $( '__preview_content' + preview[1] ).innerHTML,
|
|
stem: true,
|
|
hideAtStart: false,
|
|
attach: { target: elem, position: 'auto' },
|
|
w: '400px'
|
|
});
|
|
},
|
|
|
|
/* FORM STUFFS */
|
|
|
|
/**
|
|
* Form: Show recent tags
|
|
*/
|
|
formTogglePopularTags: function( e )
|
|
{
|
|
Event.stop(e);
|
|
|
|
$('tags_container').show();
|
|
$('tagsToggle').hide();
|
|
|
|
/* Parse tags */
|
|
ipb.blog.currentTags.each( function( t )
|
|
{
|
|
var tid = t.key;
|
|
var tag = t.value;
|
|
|
|
var html = ipb.templates['tag_entry'].evaluate( { 'tid': tid, 'tag': tag } );
|
|
$('tags_container').insert( html );
|
|
|
|
$('tag_' + tid + '_wrap').observe('click', ipb.blog.formAddTag.bindAsEventListener( this, tid ) );
|
|
} );
|
|
},
|
|
|
|
/**
|
|
* Add a tag into the field
|
|
*/
|
|
formAddTag: function( e, tid )
|
|
{
|
|
Event.stop(e);
|
|
|
|
var tag = ipb.blog.currentTags.get( tid );
|
|
|
|
if ( tag )
|
|
{
|
|
$('blogTags').value += ',' + tag;
|
|
}
|
|
|
|
$('blogTags').value = $('blogTags').value.replace( new RegExp( /^,(\s+?)?/ ), '' );
|
|
},
|
|
|
|
/**
|
|
* Init MEOW
|
|
*/
|
|
formInitCats: function()
|
|
{
|
|
var _c = 0;
|
|
|
|
$('formCats').update('');
|
|
|
|
/* Display new cats first, that's the LAW */
|
|
if ( ipb.blog._newCats.size() )
|
|
{
|
|
ipb.blog._newCats.each( function( c )
|
|
{
|
|
var html = ipb.templates['cat_entry'].evaluate( { 'cid': c.key, 'cat': c.value['category_title'] } );
|
|
$('formCats').insert( html );
|
|
|
|
$('cat_' + c.key).checked = ( c.value['_selected'] == 1 ) ? true : false;
|
|
$('cat_' + c.key).observe('click', ipb.blog.formCheckboxClicked.bindAsEventListener( this, c.key ) );
|
|
|
|
_c++;
|
|
} );
|
|
}
|
|
|
|
if ( ipb.blog.currentCats.size() )
|
|
{
|
|
ipb.blog.currentCats.each( function( c )
|
|
{
|
|
var html = ipb.templates['cat_entry'].evaluate( { 'cid': c.key, 'cat': c.value['category_title'] } );
|
|
$('formCats').insert( html );
|
|
|
|
$('cat_' + c.key ).checked = ( c.value['_selected'] == 1 ) ? true : false;
|
|
$('cat_' + c.key).observe('click', ipb.blog.formCheckboxClicked.bindAsEventListener( this, c.key ) );
|
|
|
|
_c++;
|
|
} );
|
|
}
|
|
|
|
/* Add overflow */
|
|
if ( _c >= 6 )
|
|
{
|
|
$('formCats').className = 'formCatsList';
|
|
}
|
|
|
|
/* Max cats reached */
|
|
if ( _c >= ipb.blog.maxCats )
|
|
{
|
|
$('categoryAddToggle').hide();
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Check box handler
|
|
*/
|
|
formCheckboxClicked: function( e, key )
|
|
{
|
|
if ( key.match( /catNew/ ) )
|
|
{
|
|
var c = ipb.blog._newCats.get( key );
|
|
|
|
ipb.blog._newCats.set( key, {'_selected' : ( $('cat_' + key).checked ) ? 1 : 0 , 'category_title': c.category_title } );
|
|
}
|
|
else
|
|
{
|
|
var c = ipb.blog.currentCats.get( key );
|
|
|
|
ipb.blog.currentCats.set( key, {'_selected' : ( $('cat_' + key).checked ) ? 1 : 0 , 'category_title': c.category_title } );
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Add meow
|
|
*/
|
|
formAddCat: function( e )
|
|
{
|
|
Event.stop(e);
|
|
|
|
var _go = true;
|
|
|
|
if ( $F('formCatAddInput') )
|
|
{
|
|
/* Already got a meow by this name? */
|
|
if ( ipb.blog.currentCats.size() )
|
|
{
|
|
ipb.blog.currentCats.each( function( c )
|
|
{
|
|
if ( c.value['category_title'] == $F('formCatAddInput') )
|
|
{
|
|
alert( ipb.lang['blog_cat_exists'] );
|
|
|
|
$('formCatAddInput').value = '';
|
|
var _go = false;
|
|
}
|
|
} );
|
|
}
|
|
|
|
if ( ipb.blog._newCats.size() )
|
|
{
|
|
ipb.blog._newCats.each( function( t )
|
|
{
|
|
if ( t.value == $F('formCatAddInput') )
|
|
{
|
|
alert( ipb.lang['blog_cat_exists'] );
|
|
|
|
$('formCatAddInput').value = '';
|
|
var _go = false;
|
|
}
|
|
} );
|
|
}
|
|
|
|
if ( _go == true )
|
|
{
|
|
var _id = 'catNew-' + parseInt( ipb.blog._newCats.size() + 1 );
|
|
var _name = $F('formCatAddInput');
|
|
|
|
ipb.blog._newCats.set( _id, { 'category_title' : _name, '_selected' : 1 } );
|
|
|
|
$('formCatAddInput').value = '';
|
|
|
|
ipb.blog.formInitCats();
|
|
}
|
|
}
|
|
},
|
|
|
|
/* Form INIT */
|
|
initPostForm: function()
|
|
{
|
|
$('bf_timeToggle').observe('click', ipb.blog.pfTimeToggle.bindAsEventListener( this ) );
|
|
$('bf_timeCancel').observe('click', ipb.blog.pfTimeCancel.bindAsEventListener( this ) );
|
|
|
|
$('bf_publish').observe('click', ipb.blog.pfTriggerSubmit.bindAsEventListener( this, 'publish' ) );
|
|
$('bf_draft').observe('click', ipb.blog.pfTriggerSubmit.bindAsEventListener( this, 'draft' ) );
|
|
|
|
ipb.blog.defStatus = ( ! ipb.blog.defStatus ) ? ipb.blog.defStatusGlobal : ipb.blog.defStatus;
|
|
|
|
if ( ! ipb.blog.canPostDraft )
|
|
{
|
|
$('bf_draft').hide();
|
|
}
|
|
else
|
|
{
|
|
if ( ! ipb.blog.canPublish )
|
|
{
|
|
$('bf_publish').hide();
|
|
}
|
|
else
|
|
{
|
|
if ( $('bfs_modOptions') && $F('bfs_modOptions') == 'published' )
|
|
{
|
|
$('bfs_submit').value = 'Publish Now';
|
|
}
|
|
else
|
|
{
|
|
|
|
$('bfs_submit').value = 'Save Draft';
|
|
}
|
|
}
|
|
}
|
|
|
|
$('bf_modWrapper').hide();
|
|
$('bf_timeOpts').hide();
|
|
$('bf_timeOpts2').hide();
|
|
},
|
|
|
|
pfTriggerSubmit: function( e, type )
|
|
{
|
|
Event.stop(e);
|
|
|
|
if ( ! ipb.blog.canPostDraft )
|
|
{
|
|
try
|
|
{
|
|
ipb.editors['ed-0'].update_for_form_submit();
|
|
}
|
|
catch(e){}
|
|
|
|
$('postingform').submit();
|
|
}
|
|
else if ( ! ipb.blog.canPublish )
|
|
{
|
|
try
|
|
{
|
|
ipb.editors['ed-0'].update_for_form_submit();
|
|
}
|
|
catch(e){}
|
|
|
|
$('postingform').submit();
|
|
}
|
|
else
|
|
{
|
|
var draftId = ( $('bfs_modOptions').options[1].value == 'draft' ) ? 1 : 0;
|
|
|
|
if ( type == 'draft' )
|
|
{
|
|
$('bfs_modOptions').selectedIndex = draftId;
|
|
}
|
|
else
|
|
{
|
|
$('bfs_modOptions').selectedIndex = ( draftId == 1 ) ? 0 : 1;
|
|
}
|
|
|
|
try
|
|
{
|
|
ipb.editors['ed-0'].update_for_form_submit();
|
|
}
|
|
catch(e){}
|
|
|
|
$('postingform').submit();
|
|
}
|
|
},
|
|
|
|
pfTimeToggle: function(e)
|
|
{
|
|
Event.stop(e);
|
|
$('bf_timeToggle').hide();
|
|
$('bf_timeOpts').show();
|
|
$('bf_timeOpts2').show();
|
|
},
|
|
|
|
pfTimeCancel: function(e)
|
|
{
|
|
Event.stop(e);
|
|
$('bf_timeToggle').show();
|
|
$('bf_timeOpts').hide();
|
|
$('bf_timeOpts2').hide();
|
|
},
|
|
|
|
/* OTHER STUFFS */
|
|
|
|
showLinkToEntry: function(e, elem)
|
|
{
|
|
_t = prompt( ipb.lang['copy_entry_link'], $( elem ).readAttribute('href') );
|
|
Event.stop(e);
|
|
},
|
|
|
|
deleteEntry: function(e, elem)
|
|
{
|
|
if( !confirm( ipb.lang['delete_confirm'] ) )
|
|
{
|
|
Event.stop(e);
|
|
}
|
|
},
|
|
|
|
deleteComment: function( e, elem )
|
|
{
|
|
if( ! confirm( ipb.lang['delete_confirm'] ) )
|
|
{
|
|
Event.stop(e);
|
|
}
|
|
},
|
|
|
|
changeTheme: function(e)
|
|
{
|
|
Event.stop(e);
|
|
|
|
if( ipb.blog.popups['themes'] )
|
|
{
|
|
ipb.blog.popups['themes'].show();
|
|
}
|
|
else
|
|
{
|
|
// Set up content
|
|
var afterInit = function( popup )
|
|
{
|
|
/*$('color_editor').insert( { top: $('color_tmp') } );
|
|
$('color_tmp').show();
|
|
ipb.blog.cp1 = new Refresh.Web.ColorPicker('cp1',{startHex: 'ffcc00', startMode:'h', clientFilesPath:clientImagePath});*/
|
|
|
|
$('theme_preview').observe('click', ipb.blog.previewTheme);
|
|
$('theme_save').observe('click', ipb.blog.saveTheme);
|
|
$('theme_color_picker').observe('click', ipb.blog.openPicker);
|
|
}
|
|
|
|
ipb.blog.popups['themes'] = new ipb.Popup('theme_editor', { type: 'pane', modal: false, hideAtStart: true, initial: ipb.templates['add_theme'] }, { afterInit: afterInit } );
|
|
ipb.blog.popups['themes'].show();
|
|
|
|
//ipb.blog.colorpickerRepos();
|
|
}
|
|
},
|
|
|
|
openPicker: function(e)
|
|
{
|
|
Event.stop(e);
|
|
window.open( ipb.vars['board_url'] + "/blog/colorpicker.html", "colorpicker", "status=0,toolbar=0,width=500,height=400,scrollbars=0");
|
|
},
|
|
|
|
saveTheme: function(e)
|
|
{
|
|
var url = ipb.vars['base_url'] + "app=blog&module=ajax&section=themes&blogid=" + ipb.blog.blogID;
|
|
var content = $F( 'themeContent' );
|
|
|
|
new Ajax.Request( url.replace(/&/g, '&'),
|
|
{
|
|
method: 'post',
|
|
parameters: {
|
|
content: content.encodeParam(),
|
|
md5check: ipb.vars['secure_hash']
|
|
},
|
|
evalJSON: 'force',
|
|
onSuccess: function(t)
|
|
{
|
|
if( !Object.isUndefined( t.responseJSON ) )
|
|
{
|
|
alert( ipb.lang['action_failed'] + ": " + t.responseJSON['error'] );
|
|
return;
|
|
}
|
|
|
|
ipb.blog.popups['themes'].update( ipb.templates['theme_saved'] );
|
|
//ipb.blog.popups['themes'].hide();
|
|
|
|
}
|
|
});
|
|
|
|
},
|
|
|
|
previewTheme: function(e)
|
|
{
|
|
for( var i=0; i < document.styleSheets.length; i++ )
|
|
{
|
|
if( document.styleSheets[ i ].title == 'Theme' )
|
|
{
|
|
document.styleSheets[ i ].disabled = true;
|
|
}
|
|
}
|
|
|
|
var style = document.createElement( 'style' );
|
|
style.type = 'text/css';
|
|
|
|
var content = $F( 'themeContent' );
|
|
|
|
if( ! content )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
var h = document.getElementsByTagName("head");
|
|
h[0].appendChild( style );
|
|
|
|
Debug.write( content );
|
|
|
|
try
|
|
{
|
|
style.styleSheet.cssText = content;
|
|
}
|
|
catch(e)
|
|
{
|
|
try
|
|
{
|
|
style.appendChild( document.createTextNode( content ) );
|
|
style.innerHTML=content;
|
|
}
|
|
catch(e){}
|
|
}
|
|
|
|
return false;
|
|
},
|
|
|
|
/*colorpickerRepos: function()
|
|
{
|
|
ipb.blog.cp1.show();
|
|
ipb.blog.cp1.updateMapVisuals();
|
|
ipb.blog.cp1.updateSliderVisuals();
|
|
},*/
|
|
|
|
changeHeader: function(e)
|
|
{
|
|
Event.stop(e);
|
|
|
|
if( ipb.blog.popups['header'] )
|
|
{
|
|
ipb.blog.popups['header'].show();
|
|
}
|
|
else
|
|
{
|
|
var html = ipb.templates['headers'];
|
|
|
|
var afterInit = function( popup )
|
|
{
|
|
if( $('reset_header') )
|
|
{
|
|
$('reset_header').observe('click', function(e){
|
|
if( !confirm( ipb.lang['blog_revert_header'] ) )
|
|
{
|
|
Event.stop(e);
|
|
}
|
|
|
|
window.location.href = ipb.blog.blogURL.replace(/&/g, '&') + "changeHeader=0";
|
|
});
|
|
}
|
|
};
|
|
|
|
ipb.blog.popups['header'] = new ipb.Popup('change_header', { type: 'pane', modal: true, hideAtStart: false, w: '600px', initial: html }, { afterInit: afterInit } );
|
|
}
|
|
},
|
|
|
|
setUpCloseLinks: function()
|
|
{
|
|
ipb.delegate.register('.close_link', ipb.blog.closeBlock );
|
|
ipb.delegate.register('.configure_link', ipb.blog.configureBlock );
|
|
ipb.delegate.register('.block_control', ipb.blog.addBlock );
|
|
ipb.delegate.register('.delete_block', ipb.blog.deleteBlock );
|
|
},
|
|
|
|
deleteBlock: function(e, elem)
|
|
{
|
|
if( !confirm( ipb.lang['blog_sure_delcblock'] ) )
|
|
{
|
|
Event.stop(e);
|
|
}
|
|
},
|
|
|
|
configureBlock: function(e, elem)
|
|
{
|
|
Event.stop(e);
|
|
|
|
// Get id
|
|
Debug.write( $(elem).id );
|
|
var elem = $( elem ).up( '.cblock_drag' );
|
|
var blockid = $( elem ).id.replace('cblock_', '');
|
|
var wrapper = $( elem ).down('.cblock_inner');
|
|
|
|
if( !wrapper ){ return; }
|
|
|
|
// Get block
|
|
new Ajax.Request( ipb.vars['base_url'] + "app=blog&module=ajax§ion=cblocks&do=showcblockconfig&secure_key=" + ipb.vars['secure_hash'] + "&cblock_id=" + blockid + "&blogid=" + ipb.blog.blogID,
|
|
{
|
|
method: 'get',
|
|
evalJSON: 'force',
|
|
onSuccess: function(t)
|
|
{
|
|
if( t.responseText == 'error' )
|
|
{
|
|
alert( ipb.lang['action_failed'] );
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
$( elem ).replace( t.responseText );
|
|
Sortable.create('cblock_right', ipb.blog.props );
|
|
Sortable.create('cblock_left', ipb.blog.props );
|
|
}
|
|
}
|
|
}
|
|
);
|
|
},
|
|
|
|
addBlock: function(e, elem)
|
|
{
|
|
if( $( elem ).id == 'new_cblock' )
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
Event.stop(e);
|
|
|
|
// Get id
|
|
Debug.write( $(elem).id );
|
|
var blockid = $( elem ).id.replace('enable_cblock_', '');
|
|
|
|
if( $( elem ).hasClassName('enable') ){
|
|
var req = 'doenablecblock';
|
|
} else {
|
|
var req = 'doaddcblock';
|
|
}
|
|
|
|
// Get block
|
|
new Ajax.Request( ipb.vars['base_url'] + "app=blog&module=ajax§ion=cblocks&do=" + req + "&secure_key=" + ipb.vars['secure_hash'] + "&cbid=" + blockid + "&blogid=" + ipb.blog.blogID,
|
|
{
|
|
method: 'get',
|
|
evalJSON: 'force',
|
|
onSuccess: function(t)
|
|
{
|
|
if( Object.isUndefined( t.responseJSON ) )
|
|
{
|
|
alert( ipb.lang['action_failed'] );
|
|
return;
|
|
}
|
|
|
|
if( t.responseJSON['error'] )
|
|
{
|
|
alert( ipb.lang['action_failed'] + ": " + t.responseJSON['error'] );
|
|
return;
|
|
}
|
|
|
|
if( t.responseJSON['cb_html'] )
|
|
{
|
|
// Figure out where to put it
|
|
if( $('cblock_right').visible() )
|
|
{
|
|
$('cblock_right').insert( { bottom: t.responseJSON['cb_html'] } );
|
|
Sortable.create('cblock_right', ipb.blog.props );
|
|
Sortable.create('cblock_left', ipb.blog.props );
|
|
}
|
|
else if( $('cblock_left').visible() )
|
|
{
|
|
$('cblock_left').insert( { bottom: t.responseJSON['cb_html'] } );
|
|
Sortable.create('cblock_right', ipb.blog.props );
|
|
Sortable.create('cblock_left', ipb.blog.props );
|
|
}
|
|
else
|
|
{
|
|
document.location.reload(true);
|
|
}
|
|
|
|
// Remove it from the menu
|
|
if( $('enable_cblock_' + blockid) ){
|
|
$('enable_cblock_' + blockid).remove();
|
|
}
|
|
}
|
|
}
|
|
} );
|
|
|
|
}
|
|
},
|
|
|
|
closeBlock: function(e, elem)
|
|
{
|
|
Event.stop(e);
|
|
|
|
var elem = $( elem ).up( '.cblock_drag' );
|
|
var cblockid = $( elem ).id.replace('cblock_', '');
|
|
|
|
if( Object.isUndefined( cblockid ) ){ return; }
|
|
if( !elem ){ return; }
|
|
|
|
var url = ipb.vars['base_url'] + 'app=blog&module=ajax§ion=cblocks&do=doremovecblock&blogid='+ipb.blog.blogID + '&cbid=' + cblockid + "&secure_key=" + ipb.vars['secure_hash'];
|
|
|
|
new Ajax.Request( url.replace(/&/, '&'),
|
|
{
|
|
method: 'post',
|
|
evalJSON: 'force',
|
|
onSuccess: function(t)
|
|
{
|
|
if( Object.isUndefined( t.responseJSON ) || t.responseText == 'error' )
|
|
{
|
|
Debug.write( "Error removing block" );
|
|
}
|
|
else
|
|
{
|
|
new Effect.Parallel( [
|
|
new Effect.BlindUp( $(elem), { sync: true } ),
|
|
new Effect.Fade( $(elem), { sync: true } )
|
|
], { duration: 0.5, afterFinish: function(){
|
|
// Get the name of the item
|
|
|
|
var menu_item = ipb.templates['cblock_item'].evaluate( { 'id': cblockid, 'name': t.responseJSON['name'] } );
|
|
|
|
$('content_blocks_menucontent').insert( menu_item );
|
|
|
|
$(elem).remove();
|
|
ipb.blog.updatedBlocks('');
|
|
} } );
|
|
}
|
|
}
|
|
});
|
|
},
|
|
|
|
setUpDrags: function()
|
|
{
|
|
Debug.write("Here");
|
|
|
|
if( !$('main_column') ){
|
|
Debug.error("No main column found, cannot create draggable blocks");
|
|
}
|
|
|
|
var height_l = null;
|
|
var height_r = null;
|
|
var width_c = null;
|
|
|
|
if( $('cblock_left') ){
|
|
height_l = $('cblock_left').getHeight();
|
|
width_c = $('cblock_left').getWidth();
|
|
}
|
|
|
|
if( $('cblock_right') ){
|
|
height_r = $('cblock_right').getHeight();
|
|
if( width_c != null )
|
|
{
|
|
var n_width_c = $('cblock_right').getWidth();
|
|
width_c = ( n_width_c > width_c ) ? n_width_c : width_c;
|
|
}
|
|
else
|
|
{
|
|
width_c = $('cblock_right').getWidth();
|
|
}
|
|
}
|
|
|
|
// Step one: if side column doesnt exist, create it
|
|
if( !$('cblock_left') )
|
|
{
|
|
var cblockleft = new Element('div', { id: 'cblock_left' } );
|
|
cblockleft.setStyle('width: ' + width_c + 'px; height: ' + height_r + 'px;').addClassName('cblock').addClassName('temp').hide();
|
|
$('sidebar_holder').insert( { before: cblockleft } );
|
|
ipb.blog.updateLeft = true;
|
|
}
|
|
|
|
if( !$('cblock_right') )
|
|
{
|
|
var cblockright = new Element('div', { id: 'cblock_right' } );
|
|
cblockright.setStyle('width: ' + width_c + 'px; height: ' + height_l + 'px;').addClassName('cblock').addClassName('temp').hide();
|
|
$('sidebar_holder').insert( { after: cblockright } );
|
|
ipb.blog.updateRight = true;
|
|
}
|
|
|
|
Sortable.create('cblock_right', ipb.blog.props );
|
|
Sortable.create('cblock_left', ipb.blog.props );
|
|
|
|
// Add observer
|
|
Draggables.addObserver(
|
|
{
|
|
onStart: function( eventName, draggable, event )
|
|
{
|
|
$('cblock_left').show().addClassName('drop_zone');
|
|
$('cblock_right').show().addClassName('drop_zone');
|
|
|
|
if( !Prototype.Browser.IE )
|
|
{
|
|
$('cblock_left').setStyle('opacity: 0.3');
|
|
$('cblock_right').setStyle('opacity: 0.3');
|
|
}
|
|
},
|
|
onEnd: function( eventName, draggable, event )
|
|
{
|
|
$('cblock_left').removeClassName('drop_zone').setStyle('opacity: 1');
|
|
$('cblock_right').removeClassName('drop_zone').setStyle('opacity: 1');
|
|
|
|
ipb.blog._updated( draggable );
|
|
}
|
|
}
|
|
);
|
|
},
|
|
|
|
_updated: function( draggable )
|
|
{
|
|
if( ipb.blog._updating ){ return; }
|
|
ipb.blog._updating = true;
|
|
|
|
id = 0;
|
|
|
|
// Get the ID
|
|
if( draggable.element )
|
|
{
|
|
id = $( draggable.element ).id.replace('cblock_', '');
|
|
}
|
|
|
|
// Update classes
|
|
ipb.blog.updatedBlocks( id );
|
|
|
|
// Update position by ajax
|
|
ipb.blog.updatePosition( id, draggable );
|
|
},
|
|
|
|
updatePosition: function( id, draggable )
|
|
{
|
|
if( !$('cblock_' + id ) ){ return; }
|
|
|
|
// Need to figure out which column it is in
|
|
if( $('cblock_' + id ).descendantOf('cblock_left') ){
|
|
var pos = 'l';
|
|
} else {
|
|
var pos = 'r';
|
|
}
|
|
|
|
var nextid = 0;
|
|
|
|
// Which block is next to it?
|
|
var nextelem = $('cblock_' + id).next('.cblock_drag');
|
|
|
|
if( !Object.isUndefined( nextelem ) && $(nextelem).id )
|
|
{
|
|
nextid = $( nextelem ).id.replace('cblock_', '');
|
|
}
|
|
|
|
var url = ipb.vars['base_url'] + "app=blog&module=ajax§ion=cblocks&do=savecblockpos&oldid="+id+"&newid="+nextid+"&pos="+pos+"&blogid="+ipb.blog.blogID+"&secure_key="+ipb.vars['secure_hash'];
|
|
|
|
// Ok, send the infos
|
|
new Ajax.Request( url.replace('&', '&'),
|
|
{
|
|
method: 'get',
|
|
onSuccess: function(t){
|
|
Debug.write( t.responseText );
|
|
}
|
|
}
|
|
);
|
|
|
|
},
|
|
|
|
updatedBlocks: function( id )
|
|
{
|
|
var d_l = $('cblock_left').select('.cblock_drag');
|
|
var d_r = $('cblock_right').select('.cblock_drag');
|
|
|
|
//var d_l = Sortable.sequence('cblock_left');
|
|
//var d_r = Sortable.sequence('cblock_right');
|
|
//Debug.dir( d_l );
|
|
|
|
// Check for descendants
|
|
if( d_l.size() > 0 ){
|
|
$('main_blog_wrapper').addClassName('with_left');
|
|
$('cblock_left').removeClassName('temp');
|
|
} else {
|
|
$('main_blog_wrapper').removeClassName('with_left');
|
|
$('cblock_left').addClassName('temp').hide();
|
|
$('cblock_left').innerHTML += " "; // Force a redraw for safari
|
|
}
|
|
|
|
if( d_r.size() > 0 ){
|
|
$('main_blog_wrapper').addClassName('with_right');
|
|
$('cblock_right').removeClassName('temp');
|
|
} else {
|
|
$('main_blog_wrapper').removeClassName('with_right');
|
|
$('cblock_right').addClassName('temp').hide();
|
|
$('cblock_left').innerHTML += " "; // Force a redraw for safari
|
|
}
|
|
|
|
if( ipb.blog.updateLeft )
|
|
{
|
|
//$('cblock_left').setStyle('height: auto; position: static; top: auto; left: auto;');
|
|
}
|
|
|
|
ipb.blog._updating = false;
|
|
},
|
|
|
|
saveCblock: function( e, cblock, fields )
|
|
{
|
|
var save_fields = '';
|
|
|
|
for( var i = 0; i < fields.length; i++ )
|
|
{
|
|
save_fields += '&' + 'cblock_config[' + fields[i] + ']' + '=' + $F( fields[i] );
|
|
}
|
|
|
|
var url = ipb.vars['base_url'] + "app=blog&module=ajax§ion=cblocks&do=savecblockconfig&cblock_id=" + cblock + "&blogid=" + ipb.blog.blogID + "&secure_key=" + ipb.vars['secure_hash'];
|
|
|
|
new Ajax.Request( url.replace(/&/g, '&' ) + save_fields,
|
|
{
|
|
method: 'get',
|
|
onSuccess: function(t)
|
|
{
|
|
if( t.responseText == 'error' )
|
|
{
|
|
alert( ipb.lang['action_failed'] );
|
|
return;
|
|
}
|
|
else if( t.responseText == 'refresh' )
|
|
{
|
|
document.location.reload(true);
|
|
}
|
|
else
|
|
{
|
|
$( 'cblock_' + cblock_id ).replace( t.responseText );
|
|
Sortable.create('cblock_right', ipb.blog.props );
|
|
Sortable.create('cblock_left', ipb.blog.props );
|
|
}
|
|
|
|
}
|
|
}
|
|
);
|
|
},
|
|
|
|
register: function( id, position )
|
|
{
|
|
if( !ipb.blog.inEntry ){ return; }
|
|
if( !$('cblock_' + id) ){ return; }
|
|
|
|
//new Draggable( $('cblock_' + id), { handle: 'draggable', revert: true } );
|
|
},
|
|
|
|
/**
|
|
* Sets the supplied post to hidden
|
|
*
|
|
* @var {int} id The ID of the post to hide
|
|
*/
|
|
setCommentHidden: function(id)
|
|
{
|
|
if( $( 'comment_id_' + id ).select('.post_wrap')[0] )
|
|
{
|
|
$( 'comment_id_' + id ).select('.post_wrap')[0].hide();
|
|
|
|
if( $('unhide_post_' + id ) )
|
|
{
|
|
$('unhide_post_' + id).observe('click', ipb.blog.showHiddenComment );
|
|
}
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Unhides the supplied post
|
|
*
|
|
* @var {event} e The link event
|
|
*/
|
|
showHiddenComment: function(e)
|
|
{
|
|
link = Event.findElement(e, 'a');
|
|
id = link.id.replace('unhide_post_', '');
|
|
|
|
if( $('comment_id_' + id ).select('.post_wrap')[0] )
|
|
{
|
|
elem = $('comment_id_' + id ).select('.post_wrap')[0];
|
|
new Effect.Parallel( [
|
|
new Effect.BlindDown( elem ),
|
|
new Effect.Appear( elem )
|
|
], { duration: 0.5 } );
|
|
}
|
|
|
|
if( $('comment_id_' + id ).select('.post_ignore')[0] )
|
|
{
|
|
elem = $('comment_id_' + id ).select('.post_ignore')[0];
|
|
/*new Effect.BlindUp( elem, {duration: 0.2} );*/
|
|
elem.hide();
|
|
}
|
|
|
|
Event.stop(e);
|
|
}
|
|
}
|
|
|
|
ipb.blog.init(); |