%PDF- %PDF-
| Direktori : /home1/lightco1/www/administrator/components/com_poweradmin/assets/js/joomlashine/ |
| Current File : //home1/lightco1/www/administrator/components/com_poweradmin/assets/js/joomlashine/jsn.functions.js |
/**
*
* @author JoomlaShine.com http://www.joomlashine.com
* @copyright Copyright (C) 2011 JoomlaShine.com. All rights reserved.
* @license GNU/GPL v2 http://www.gnu.org/licenses/gpl-2.0.html
Descriptions:
1. Required files/libs:
- jQuery lib
- jQuery UI
- rawmode.jquery.js
- visualmode.jquery.js
- menuitem.jquery.js
- window.js
**/
if (typeof(JoomlaShine.jQuery) == undefined){
var JoomlaShine = {};
JoomlaShine.jQuery = jQuery.noConflict();
}
(function($){
/**
*
* Check response if redirected to logon page then refresh current page
*
* @param: (string) (res) response text when ajax completed
* @return: None
*/
$.checkResponse = function(res){
try{
$('input[type="hidden"]', res).each(function(i){
if ($(this).attr('name') == 'task' && $(this).val() == 'login'){
window.location.reload(true);
}
});
}catch (e) {
// TODO: handle exception
}
};
/**
*
* Route call function to add new module in rawmode/visualmode
*
* @param: (string) (eid)
* @param: (string) (position) template position
* @return: None
*/
$.addNewModule = function(eid, position){
$.closeAllJSNWindow();
if ($._menuitems.mode == 'visualmode'){
$._visualmode.addNewModule(eid, position);
}else{
if (JSNGrid != undefined){
JSNGrid.newModule(eid, position);
}
}
};
/**
*
* Add new menu item
*
* @param: (string basecode64) (data) params
* @param: (string) (menutype) joomla menutype
* @param: (string) (menutypeid) joomla menutypeid
* @param: (string) (parentid) joomla parent menuid of new menu
* @return: None
*/
$.addNewMenuItem = function(data, menutype, menutypeid, parentid){
$.closeAllJSNWindow();
$._menuitems.addMenuItem(data, menutype, menutypeid, parentid);
};
/**
*
* Help select menu item type and return to current page
*
* @param: (string basecode64) (data) is params
* @param: (string) (iframeid)
* @return: None
*/
$.selectMenuItemType = function(data, iframeid){
var JFORM = $.parseJSON($.base64Decode(data));
$.post
(
baseUrl + 'administrator/index.php?option=com_menus&view=item&task=item.setType',
{
jform:JFORM,
fieldtype:'type'
}
).success(function(){
$('#'+iframeid)[0].contentWindow.location.reload(true);
}).error(function(msg){
$.JSNUIMessage(msg, 1000);
});
};
/**
*
* Convert array to json data
*
* @param: (Array) (arr) array need convert to json
* @return: (string) json format
*/
$.arrayToJSON = function(arr){
var json = new Array();
var i = 0;
for(k in arr){
if (typeof arr[k] != 'function'){
if (typeof arr[k] == 'Array' || typeof arr[k] == 'object'){
json[i] = '"'+k+'":'+$.arrayToJSON(arr[k]);
}else{
json[i] = '"'+k+'":"'+arr[k]+'"';
}
i++;
}
}
return '{'+json.join(',')+'}';
};
/**
*
* Replace all htmlspecialchars to html
*
* @param: (String)
* @return: String
*/
$.unhtmlspecialchars = function( string ){
if (string != null)
{
return string.replace(/&/g, '&' )
.replace(/'/g, '\'' )
.replace(/"/g, '\"' )
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/
/g, '\n');
}
};
/**
*
* Set position for module (ajax request)
*
* @param: (string) (moduleid) is joomla module id
* @param: (string) (position) is joomla template position
* @return: None
*/
$.setPosition = function(moduleid, position){
$.post
(
baseUrl+'administrator/index.php?option=com_poweradmin&view=changeposition&task=changeposition.setPosition&' + token + '=1',
{
moduleid: moduleid,
position: position
}
).success( function(res){
$.checkResponse( res );
var i = 0;
for(k in moduleid){
if ( typeof moduleid[k] !== 'function' && moduleid[k] != undefined){
window.parent.JoomlaShine.jQuery.multipleDrag
(
{
element : moduleid[k]+'-jsnposition',
toElement : position,
dropElement: true,
dragShow : false,
cloneData : true,
keyPrefix : true,
delayDrag : true,
delayTime : 300*i++,
timeMoving : 1000,
end : function(obj){
if ( window.parent.JSNGrid != undefined ){
obj['item']
.removeClass('jsn-module-multiple-select')
.unbind("click").click(function(e){
if ( e.which == 1 ){
if ( e.ctrlKey ){
if ($(this).hasClass('jsn-module-multiple-select')){
$(this).removeClass('jsn-module-multiple-select');
}else{
$(this).addClass('jsn-module-multiple-select');
}
}else{
window.parent.JSNGrid.editModule( $(this) );
}
}
});
window.parent.JSNGrid.moveObjItem( obj['fromPos'], obj['toPos'], obj['mId'] );
window.parent.JSNGrid.toActivePosition( obj['toPos'] );
window.parent.JSNGrid.toInactivePosition( obj['fromPos'] );
window.parent.JSNGrid.toInactivePosition( obj['toPos'] );
window.parent.JSNGrid.buildModulesContextMenu( obj['goalElement'].find('div.poweradmin-module-item:last'), false );
window.parent.JSNGrid.initEvents();
if (!window.parent.JSNGrid.publishing.cookie.isEnableShowUnpublishedPositions() || !window.parent.JSNGrid.publishing.cookie.isEnableUnpublished() ){
window.parent.JSNGrid.hideEmptyPositions();
}
}
}
}
);
}else{
return;
}
}
}).error(function(msg){
$.JSNUIMessage(msg, 1000);
});
};
/**
*
* Set default template (ajax request)
*
* @param: (string) (itemID) is joomla template id
* @return: None
*/
$.setTemplate = function(temID){
$.post
(
baseUrl+'administrator/index.php?option=com_poweradmin&view=templates&task=templates.setDefaultTemplate&id='+temID
).success(function(){
window.parent.jQuery.selectedTemplate();
}).error(function(msg){
$.JSNUIMessage(msg, 1000);
});
};
/**
*
* Route call mode when select template is saved
*
* @return: None
*/
$.selectedTemplate = function(){
$.closeAllJSNWindow();
setTimeout(function(){
if ($._visualmode != undefined){
$._visualmode.iFrameReload();
}else{
$('body').showLoading({autoClose:false, showLoadingRate:true});
window.location.reload(true);
}
}, 200);
};
/**
*
* Change url of window
*
* @param: (string) (uiIframe) is element id of iframe
* @param: (string) (src) is url need request to
* @return: None
*/
$.jsnUIWindowChangeUrl = function(uiIframe, src){
if ($('iframe#'+uiIframe).length > 0){
$('iframe#'+uiIframe).attr('src', src);
}
};
/**
*
* Add an new trigger. This function will bi call from child page
*
* @param: (string) (_strigger) is string name trigger need to add
* @param: (string) (_elementHandler) is ID of element need to add trigger
* @return: EventListener
*/
$.addTriggerHandler = function(_trigger, _elementHandler){
if (_elementHandler !== undefined){
$(_elementHandler).trigger(_trigger);
}else{
$(window).triggerHandler(_trigger);
}
};
/**
*
* Plugin to add overlay loading
*
* @param: jQuery object
* @return: jQuery object element
*/
$.fn.showLoading = function(ops){
//Option and overwrite option. jQuery extend
var _ops = $.extend
(
{
left : 0,
top : 0,
width : $(document).width(),
height : $(document).height(),
zIndex : $.topZIndex(),
showImgLoading : true,
showLoadingRate: false,
autoClose : true,
closeTimeout : 8000,
removeall : false
},
ops
);
if ( _ops.removeall ){
$('.ui-widget-overlay').remove();
return;
}
if ($('body').children('.ui-widget-overlay').length > 0){
return;
}
if ( $(this).find('.ui-widget-overlay').length == 0 ){
var loading = $('<div />', {
'class' : 'ui-widget-overlay'
})
.css({
'top' : _ops.top,
'left' : _ops.left,
'width' : _ops.width,
'height' : _ops.height,
'z-index': _ops.zIndex
})
.appendTo($(this));
//Add image loading
if ( _ops.showImgLoading ){
if ($('.ui-widget-overlay').find('.img-box-loading').length){
$('.ui-widget-overlay').find('.img-box-loading').remove();
}
var imgBoxLoading = $('<div />', {
'class' : 'img-box-loading'
})
.appendTo($('.ui-widget-overlay'))
.css({
'position': 'relative',
'top' : $(this).height()/2-12+'px',
'left' : $(this).width()/2-12+'px'
});
$('<img />', {
'src' : baseUrl+'plugins/system/jsnframework/assets/joomlashine/images/icons-24/icon-24-dark-loading-circle.gif'
})
.appendTo(imgBoxLoading)
.css({
'position': 'relative',
'left' : '12px',
'top' : '12px'
});
if (_ops.showLoadingRate){
var rateLoading = $('<div />', {
'id' : 'rate-loading',
'class': 'rate-loading'
}).css
({
'position': 'relative',
'left' : $(this).width()/2 - 11 + 'px',
'top' : $(this).height()/2 - 10 + 'px'
}).appendTo($('.ui-widget-overlay'));
var processbar = $('<div />', {
'id' : 'progressbar',
'class' : 'progressbar'
}).appendTo(rateLoading);
}
}
}else{
var loading = $('.ui-widget-overlay');
}
/**
*
* Remove loading on element
*
* @return: None
*/
this.remove = function(){
loading.remove();
};
/**
*
* Bind event window resize
*
*/
$(window).resize(function(){
loading.css({
'width' : 0,
'height': 0
}).css({
'width' : $(document).width(),
'height': $(document).height()
});
if ( loading.find('div.img-box-loading').length ){
loading.find('div.img-box-loading').css
(
{
'position': 'relative',
'top' : $(this).height()/2-12+'px',
'left' : $(this).width()/2-12+'px'
}
);
}
if ( loading.find('div#rate-loading').length ){
loading.find('div#rate-loading').css
(
{
'position': 'relative',
'left' : $(this).width()/2 - 11 + 'px',
'top' : $(this).height()/2 - 10 + 'px'
}
);
}
});
//Auto close after 8 second
if (_ops.autoClose){
setTimeout(function(){
loading.remove();
}, _ops.closeTimeout);
}
return this;
};
/**
*
* Plugin to add images show status
*
* @param: (array) options
* @return: Add HTML
*/
$.fn.showImgStatus = function( options ){
$(this).find('span.ajaxrequeststatus').remove();
if (options == "remove"){
return;
}
var ops = $.extend({
status : 'request',
position : 'right-middle',
css : undefined
}, options);
var ajaxrequest = $('<span />', {'id':'ajaxrequeststatus', 'class':'ajaxrequeststatus'}).appendTo($(this)[0]);
if ( ops.status == 'request' ){
var img = $('<img />', {
'src': baseUrl+'plugins/system/jsnframework/assets/joomlashine/images/icons-16/icon-16-loading-circle.gif'
});
}else if( ops.status == 'success' ){
var img = $('<img />', {
'src': baseUrl+'administrator/components/com_poweradmin/assets/images/icons-16/ajax-success.gif'
});
}else if( ops.status == 'error' ){
var img = $('<img />', {
'src': baseUrl+'administrator/components/com_poweradmin/assets/images/icons-16/ajax-error.gif'
});
}else{
ajaxrequest.html('');
}
if ( ops.css != undefined ){
ajaxrequest.css(ops.css);
}else{
if ( $(this).css('float') == 'left' ){
ajaxrequest.css('position', 'relative');
var css = {
'left' : '',
'right' : '0px',
'top' : $(this).height()/2 - 10
};
}else{
var css = {
'left' : '',
'right' : '16px',
'top' : $(this).position().top + $(this).height()/2
};
}
ajaxrequest.css(css);
}
if ( img != undefined ){
img.appendTo(ajaxrequest);
}
if ( ops.status != 'request' ){
setTimeout(function(){
ajaxrequest.fadeOut(300, function(){
$(window).triggerHandler("imgstatus.remove");
ajaxrequest.remove();
});
}, 500);
}
}
/**
* Validate empty required fields
*/
$.fn.validateEmptyFields = function (iframe){
var _isValid = true;
iframe.contents().find('[aria-required="true"]').each(function (){
if (!$(this).val()) {
$(this).addClass('invalid');
_isValid = false;
return;
}
});
return _isValid;
}
})(JoomlaShine.jQuery);