%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.menuitems.js |
/**
*
* Javascript functions for menu manager
*
* @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
- window.js
**/
(function($){
/**
*
* Extend functions for menu actions
*
*/
$.extend({
/**
* menuActions object
*/
menuActions:{
selectItem: function(){
var obj = $(this).parent();
obj.children('a').trigger("selected_node.jsntree");
$._menuitems.selectedItem( obj.attr('id') );
},
/**
*
* Open popup page to edit menu item
*
* @param: (jQuery element) (obj) is jquery item
* @return: None
*/
editItem: function () {
var obj = $(this).parent();
var wWidth = $(window).width()*0.85;
var wHeight = $(window).height()*0.8;
var itemid = obj.attr('id').split('-')[2];
var mid = obj.attr('id').split('-')[1].replace('menutypeid', '');
obj.children('a').showImgStatus({
css : {
'margin-top' : '3px',
'padding-left': '5px'
}
});
var pop = $.JSNUIWindow
(
baseUrl+'administrator/index.php?option=com_menus&tmpl=component&task=item.edit&id='+itemid,
{
modal : true,
width : wWidth,
height: wHeight,
title : JSNLang.translate( 'TITLE_EDIT_MENU_ITEM_PAGE' ),
open : function(){
var iframe = $(this).find('iframe');
var _this = $(this);
iframe.load(function(){
var menu_types = iframe.contents().find('div#menu-types');
iframe.contents().find('label#jform_type-lbl').next().attr('id', 'jsn-jform-type');
var data = new Array(iframe.contents().find("[name^=jform]").length+10);
iframe.contents().find("[name^=jform]").each(function(){
data[$(this).attr('name').split('[')[1].replace(']', '')] = $(this).val();
});
$('.choose_type', menu_types).each(function(){
var $onclick = $(this).attr('onClick').split(',')[1].replace("'", '').replace("')", "");
var jform = data;
jform['type'] = $onclick;
jform = $.base64Encode($.arrayToJSON(jform));
$(this).attr('onClick', "window.parent.JoomlaShine.jQuery.selectMenuItemType('"+jform+"', '"+iframe.attr('id')+"');");
});
var head = iframe.contents().find('head');
//head.append('<link rel="stylesheet" href="' + baseUrl + 'plugins/system/jsnframework/assets/joomlashine/css/jsn-gui.css" type="text/css" />');
});
//bind trigger press enter submit form from child page
$(window).unbind("pressEnterSubmitForm").bind("pressEnterSubmitForm", function(){
iframe.load(function(){
$._menuitems.resetMenu(mid);
});
});
},
close: function(event, e){
obj.children('a').showImgStatus("remove");
},
buttons:{
'Save': function(){
var iframe = $(this).find('iframe');
var _this = $(this);
if (!$.fn.validateEmptyFields(iframe)) {
return false;
}
if (pop.submitForm('item.apply', 'Save', function(){
_this.removeClass('jsn-loading');
})) {
_this.addClass('jsn-loading');
}
},
'Close': function(){
var that = $(this);
pop.getDialogBox().parent().fadeOut(300);
$.post( baseUrl+'administrator/index.php?option=com_poweradmin&task=menuitem.checkinmenuitem&' + token + '=1',{itemid:itemid}, function(){
$._menuitems.resetMenu(mid);
obj.addClass('checked-in');
that.dialog("close");
});
}
}
}
);
},
/**
*
* Publishing menu item, ajax request setting
*
* @param: (jquery element) (obj)
* @return:
* if (seccess)
* reset menu
*/
publishing: function () {
var obj = $(this).parent();
var id = obj.attr('id').split('-'),
self = this,
isSelected = obj.find('a.jstree-clicked').size() > 0;
obj.children('a').showImgStatus({
css : {
'margin-top' : '3px',
'padding-left': '5px'
}
});
$.post(
baseUrl+'administrator/index.php?option=com_poweradmin&task=menuitem.menuitempublishing&' + token + '=1',
{
itemid : id[2],
publish: id[0]
}
).success(function(res){
if (res == 'success'){
$._menuitems.resetMenu(id[1].replace('menutypeid', ''));
}else{
$.checkResponse(res);
obj.children('a').showImgStatus("remove");
}
if (id[0].toLowerCase() == 'unpublish' && isSelected) {
var nextMenu = obj.next('[id^=Unpublish]');
if (nextMenu.size() == 0) {
nextMenu = $(obj.prevAll('[id^=Unpublish]').get(0));
}
if (nextMenu.size() > 0) {
nextMenu.children('a').trigger("selected_node.jsntree");
$._menuitems.selectedItem(nextMenu);
}
}
}).error(function(msg){
obj.children('a').showImgStatus("remove");
});
},
/**
*
* Check in menu item, ajax request setting
*
* @param: (JoomlaShine.jQuery) (obj)
* @return: None
*/
checkin: function () {
var obj = $(this).parent();
var id = obj.attr('id').split('-');
obj.children('a').showImgStatus({
css : {
'margin-top' : '3px',
'padding-left': '5px'
}
});
$.post(
baseUrl +'administrator/index.php?option=com_poweradmin&task=menuitem.checkinmenuitem&' + token + '=1',
{
itemid: id[2]
}
).success(function(res){
$.checkResponse(res);
obj.children('a').showImgStatus("remove");
}).error(function(msg){
console.log(msg);
obj.children('a').showImgStatus("remove");
});
},
/**
*
* Make item to default, ajax request setting
*
* @param: (jQuery element) (obj)
* @return:
* if (seccess)
* change HTML element to default
*/
makehome: function(){
var obj = $(this).parent();
var id = obj.attr('id').split('-');
obj.children('a').showImgStatus({
css : {
'margin-top' : '3px',
'padding-left': '5px'
}
});
$.post(
baseUrl + 'administrator/index.php?option=com_poweradmin&task=menuitem.setdefault&' + token + '=1',
{
itemid: id[2]
}
).success(function(res){
if (res == 'success'){
var cur_default = $('.default')
var default_ind = $('.menu-default-indicator', cur_default);
cur_default.removeClass('default');
$('>a', obj).append(default_ind);
$('.menu-default-indicator', cur_default).remove();
obj.addClass('default');
}else{
$.checkResponse(res);
}
obj.children('a').showImgStatus("remove");
menuTypes.addIndicate();
}).error(function(msg){
console.log(msg);
obj.children('a').showImgStatus("remove");
});
},
/**
*
* Trash menu item
*
* @param: (jQuery element) (obj)
* @return:
* if (seccess)
* remove HTML element
*/
trash: function () {
var obj = $(this).parent();
var nodeid = obj.attr('id');
var id = nodeid.split('-');
var answer = confirm(JSNLang.translate( 'CONFIRM_DELETE_MENU_ITEM', {"JSN_TEXT1":$.trim(obj.children('a').text())} ))
if (answer){
obj.children('a').showImgStatus({
css : {
'margin-top' : '3px',
'padding-left': '5px'
}
});
$.post(
baseUrl+'administrator/index.php?option=com_poweradmin&task=menuitem.trashmenuitem&' + token + '=1',
{
itemid:id[2]
}
).success(function(res){
if (res == 'success'){
obj.remove();
}else{
$.checkResponse(res);
}
obj.children('a').showImgStatus("remove");
}).error(function(msg){
console.log(msg);
obj.children('a').showImgStatus("remove");
});
}
else{
return;
}
},
/**
* Load custom assets for each menu item
*/
loadCustomAssets: function (){
var obj = $(this).parent();
var itemid = obj.attr('id').split('-')[2];
var wHeight = $(window).height()*0.8;
var pop = $.JSNUIWindow
(
baseUrl+'administrator/index.php?option=com_poweradmin&view=menuassets&tmpl=component&id='+itemid,
{
modal : true,
width : 700,
height: wHeight,
title : JSNLang.translate('JSN_POWERADMIN_MENUASSETS_LOAD_CUSTOM_ASSETS') + ': ' + obj.find('a:first').text(),
scrollContent: 'auto',
close: function(event, e){
obj.children('a').showImgStatus("remove");
},
buttons:{
'Save': function(){
var iframe = $(this).find('iframe');
var _this = $(this);
if (pop.submitForm('menuitem.saveassets', 'Save', function(){
_this.removeClass('jsn-loading');
_this.dialog("close");
}))
{
_this.addClass('jsn-loading');
};
},
'Close': function(){
$(this).dialog("close");
}
}
}
);
},
/**
*
* Rebuild menu item, ajax request
*
* @param: (jQuery element) (obj)
* @return: None
*/
rebuild: function () {
var obj = $(this).parent();
var id = obj.attr('id').split('-');
obj.children('a').showImgStatus({
css : {
'margin-top' : '3px',
'padding-left': '5px'
}
});
$.post(
baseUrl+'administrator/index.php?option=com_poweradmin&task=menuitem.rebuilditem&' + token + '=1',
{
itemid: id[2]
}
).success(function(res){
$.checkResponse(res);
obj.children('a').showImgStatus("remove");
}).error(function(msg){
console.log(msg);
obj.children('a').showImgStatus("remove");
});
},
/**
*
* Expand current item and all child items. Expand is using jQueryUI animate widget
*
* @param: (jstree item extend jquery element ) (obj) is current item avaiable
* @return: Change HTML Attribute and add triggers
*/
expand_all: function(){
var obj = $(this).parent();
if (obj.hasClass('jstree-closed') && obj.children('ul').length > 0){
$._menuitems.expand_all(obj, 0)
obj.children("ul").animate(
{
"height" : "toggle",
"opacity": "toggle"
}, 500, function(){
$._menuitems.expand_node(obj);
$(this).show();
});
}else if(obj.find('.jstree-closed').length){
$._menuitems.expand_all(obj, 500);
}
setTimeout(function(){
$._menuitems.layoutResize();
$._menuitems.saveList();
}, 600);
},
/**
*
* Collapse current item and all child items. Expand is using jQueryUI animate widget
*
* @param: (jstree item extend jquery element ) (obj) is current item avaiable
* @return: Change HTML Attribute and add triggers
*/
collapse_all: function(){
var obj = $(this).parent();
if (obj.hasClass('jstree-open') && obj.children('ul').length > 0){
$._menuitems.collapse_all(obj, 0);
obj.children("ul").animate(
{
"height" : "toggle",
"opacity": "toggle"
}, 500, function(){
$._menuitems.collapse_node(obj);
$(this).hide();
});
}else if(obj.find('.jstree-open').length){
$._menuitems.collapse_all(obj, 0);
obj.find('ul').css('display', 'none');
}
setTimeout(function(){
$._menuitems.layoutResize();
$._menuitems.saveList();
}, 600);
},
/**
*
* Add new item and set it to child current selected
*
* @param: (JoomlaShine.jQuery) (obj)
* @return:
* if (seccess)
* selectmenutype
*/
addmenuitem: function(){
var obj = $(this).parent();
var params = obj.attr('id').split('-');
var mid = params[1].replace('menutypeid', '');
var menutype = $('#jsn-menutype-title-'+mid).attr('menutype');
var parentid = params[2];
$._menuitems.selectmenutype(menutype, mid, parentid);
}
}
});
/**
*
* Instance jstree
*
*/
$.fn.jstreeInstance = function(){
var tree = $(this);
//Init jstree
$(this).jstree({
// the `plugins` array allows you to configure the active plugins on this instance
"plugins" : ["themes","crrm", "hotkeys", "jsn_contextmenu", "html_data", "ui", "dnd"],
// each plugin you have included can have its own config object
"themes" : { "theme":"jsnpa", "url" : baseUrl+'/administrator/components/com_poweradmin/assets/css/jstree/style.css' },
"jsn_contextmenu" : {
items:{
"SelectItem": {
"separator_before" : false,
"separator_after" : true,
"label" : JSNLang.translate( 'TITLE_SUBMENU_SELECTITEM_MENU_ITEM' ),
"_class" : 'bold-item',
"action" : $.menuActions.selectItem
},
"Edit" : {
"separator_before" : false,
"separator_after" : false,
"label" : JSNLang.translate( 'TITLE_SUBMENU_EDIT_MENU_ITEM' ),
"action" : $.menuActions.editItem
},
"Unpublish" : {
"separator_before" : false,
"separator_after" : false,
"label" : JSNLang.translate( 'TITLE_SUBMENU_UNPUBLISH_MENU_ITEM' ),
"action" : $.menuActions.publishing
},
"Rebuild" : {
"separator_before" : false,
"icon" : false,
"separator_after" : false,
"label" : JSNLang.translate( 'TITLE_SUBMENU_REBUILD_MENU_ITEM' ),
"action" : $.menuActions.rebuild
},
"ccp":{
"separator_before" : false,
"icon" : false,
"separator_after" : false,
"label" : JSNLang.translate( 'TITLE_SUBMENU_SUBPANEL_MORE' ),
"_class" : 'parent',
"action" : false,
"submenu" : {
"Makehome" : {
"separator_before" : false,
"icon" : false,
"separator_after" : false,
"label" : JSNLang.translate( 'TITLE_SUBMENU_MAKEHOME_MENU_ITEM' ),
"action" : $.menuActions.makehome
},
"Checkin" : {
"separator_before" : false,
"icon" : false,
"separator_after" : false,
"label" : JSNLang.translate( 'TITLE_SUBMENU_CHECKIN_MENU_ITEM' ),
"action" : $.menuActions.checkin
},
"Trash" : {
"separator_before" : false,
"icon" : false,
"separator_after" : false,
"label" : JSNLang.translate( 'TITLE_SUBMENU_TRASH_MENU_ITEM' ),
"action" : $.menuActions.trash
},
"LoadCustomAssets" : {
"separator_before" : true,
"icon" : false,
"separator_after" : false,
"label" : JSNLang.translate('JSN_POWERADMIN_MENUASSETS_LOAD_CUSTOM_ASSETS'),
"action" : $.menuActions.loadCustomAssets
}
}
},
"Expand_all" : {
"separator_before" : true,
"icon" : false,
"separator_after" : false,
"label" : JSNLang.translate( 'TITLE_SUBMENU_SUBPANEL_EXPAND_ALL' ),
"action" : $.menuActions.expand_all
},
"Collapse_all" : {
"separator_before" : false,
"icon" : false,
"separator_after" : false,
"label" : JSNLang.translate( 'TITLE_SUBMENU_SUBPANEL_COLLAPSE_ALL' ),
"action" : $.menuActions.collapse_all
},
"Addmenuitem" : {
"separator_before" : true,
"icon" : false,
"separator_after" : false,
"label" : JSNLang.translate( 'TITLE_SUBMENU_ADD_MENU_ITEM' ),
"action" : $.menuActions.addmenuitem
}
}
},
"core" : { "initially_open" : [ "phtml_1" ] },
"dnd" : { "drop_target":false }
})
/**
* Bind event move node in jstree
*/
.bind("move_node.jstree", function (e, data) {
if ( !$.jStorage.get('rawmode_showunpublished_menuitem') ){
$._menuitems.hideUnpublished();
}
data.rslt.o.each(function (i) {
var move_id = $(this).attr('id').split('-')[2];
if ($(this).parent().attr('id') === undefined){
var parent = $(this).parent().parent();
if (parent[0].tagName.toLowerCase() == 'div'){
var parent_id = 1;
}else{
var parent_id = parent.attr('id').split('-')[2];
}
}else{
var parent_id = $(this).parent().attr('id').split('-')[1];
}
var orders = new Array();
var pos = 0;
$(this).parent().children('li').each(function(){
orders[pos++] = $(this).attr('id').split('-')[2];
});
var move_item = $(this);
//Show save
move_item.children('a').showImgStatus({
css : {
'margin-top' : '3px',
'padding-left': '5px'
}
});
$.post
(
baseUrl+'administrator/index.php?option=com_poweradmin&task=menuitem.moveItem&' + token + '=1',
{
itemid : move_id,
parentid : parent_id,
orders : orders
}
).success(function(res){
$.checkResponse(res);
$(this).unbind("click");
move_item.children('a').showImgStatus("remove");
}).error(function(msg){
move_item.children('a').showImgStatus("remove");
});
});
})
/**
* Tree is loaded
*/
.bind("loaded.jstree", function (event, data) {
setTimeout(function(){
$._menuitems.layoutResize();
}, 1000);
// you get two params - event & data - check the core docs for a detailed description
$(document).unbind("nodeopen.jstree").bind("nodeopen.jstree", function(){
setTimeout(function(){
$._menuitems.layoutResize();
$._menuitems.saveList();
}, 500);
}).unbind("nodeclosed.jstree").bind("nodeclosed.jstree", function(){
setTimeout(function(){
$._menuitems.layoutResize();
$._menuitems.saveList();
}, 500);
});
$(this).find('a').each(function(){
if ( $(this).hasClass('default') ){
$(this).removeClass('default').parent().addClass('default');
}
if($(this).hasClass('unpublish')){
$(this).removeClass('unpublish').parent().addClass('unpublish');
}
})
//remove node selected and add new node select
.unbind("selected_node.jsntree").bind("selected_node.jsntree", function(){
$('a.jstree-clicked').each(function(){
$(this).removeClass('jstree-clicked');
});
$(this).addClass("jstree-clicked");
menuTypes.addIndicate();
});
//Show unpublished items
if ( $.jStorage.get('rawmode_showunpublished_menuitem') ){
$._menuitems.showUnpublished();
}else{
$._menuitems.hideUnpublished();
}
//Set selected page in history
if ( $.jStorage.get('selected_node') ){
if ( $('#'+$.jStorage.get('selected_node')).length == 0 ){
$('li[id*="'+$.jStorage.get('selected_node')+'"]').children('a').addClass('jstree-clicked');
}else{
$('#'+$.jStorage.get('selected_node')).children('a').addClass('jstree-clicked');
}
}
$('#jsn-rawmode-menu-selector').show();
//Add window triggerHandler check finshed load tree
$(this).children('ul').addClass('jsntree-root');
$(window).triggerHandler('finshed_load.jstree');
})
.bind('jstree.jsncontext.show', function (){
$('#jsn-menutypes').hide();
});
};
/**
*
* DropDown List menu
*
* @param: (string) (_task)
* @param: (string) (_selected)
* @return:
*/
var menuTypes = {
/**
*
* Get current menu selected
*
* @return: jQuery Element
*/
getSelected: function(){
return $('#jsn-menu-elements-'+$('#jsn-menu-dropdown-list').find('li.selected').attr('id').split('-')[1]);
},
/**
*
* Select menu
*
* @param: (number) (_selected) is menutypeid
* @return: jQuery Element
*/
selectMenu: function(_selected){
$('.jsn-menu-details').hide();
var dropDownList = $('#jsn-menutypes');
var menuTypeSelector = $('#jsn-rawmode-menu-selector');
if ( _selected == undefined || $('#jsn-menu-elements-'+_selected).length == 0 ){
_selected = $('li:first', dropDownList).attr('id').split('-')[1];
}
$('li', dropDownList).removeClass("selected");
$('#dropdownmenutype-'+_selected).addClass('selected');
$.jStorage.set('selected_menuid', _selected);
menuTypeSelector.find('div.jsn-menutype-title').hide();
menuTypeSelector.find('div#jsn-menutype-title-'+_selected).show().css('visibility','visible');
var activeMenu = $('#jsn-menu-details-'+_selected);
var currentMenu = menuTypes.getSelected();
activeMenu.delay(300).slideDown(500, function(){
$._menuitems.layoutResize();
});
//Show unpublished items
if ( $.jStorage.get('rawmode_showunpublished_menuitem') ){
$._menuitems.showUnpublished();
}else{
$._menuitems.hideUnpublished();
}
},
addIndicate: function(){
/**
* Add ellipse indicate
*/
$('div.jsn-menutype-title').each(function(){
var menuid = $(this).attr('menuid');
var ItemDropDownList = $('#dropdownmenutype-'+menuid);
var menu = $('#jsn-menu-elements-'+menuid);
if ( menu.find('li.default').length ){
if ( ItemDropDownList.children('a').find('ins.has-default').length == 0 ){
ItemDropDownList.children('a').append('<ins class="has-default"></ins>');
}
}else{
ItemDropDownList.children('a').find('ins.has-default').remove();
}
if ( menu.find('a.jstree-clicked').length )
{
if ( ItemDropDownList.children('a').find('ins.has-selected').length == 0 ){
ItemDropDownList.children('a').append('<ins class="has-selected"></ins>');
}
}else{
ItemDropDownList.children('a').find('ins.has-selected').remove();
}
});
},
/**
*
* Init dropdown select menu type
*
* @return: None
*/
initEvent: function(){
var dropDownList = $('#jsn-menu-dropdown-list');
var menuTypeSelector = $('#jsn-rawmode-menu-selector');
var menuTypesList = $('#jsn-menutypes');
if ( $.jStorage.get('selected_menuid') ){
menuTypes.selectMenu( $.jStorage.get('selected_menuid') );
}else{
$('.jsn-menu-details').each(function(){
if ( $(this).find('li[id*="'+$.jStorage.get('selected_node')+'"]').length ){
$.jStorage.set('selected_menuid', $(this).attr('id').split('-')[3] );
}
});
menuTypes.selectMenu($.jStorage.get('selected_menuid'));
}
dropDownList.find('li').unbind("click").click(function(){
var selected = $(this).attr("id").split('-')[1];
$.jStorage.set('selected_menuid', selected);
menuTypes.selectMenu( selected );
});
$('#jsn-menutypes #add-new-menu a').click(function (e) {
$._menuitems.addMenu(dropDownList.attr('next-id'));
});
//show submenu when right-click
menuTypeSelector.unbind("mousedown").mousedown(function(e){
var selected = $('.selected', dropDownList).attr('id').split('-')[1];
var submenu = $('#jsn-menutype-title-'+selected).jsnSubmenu({});
var $this = $(this);
if ( e.which === 3 && $this.mouseIsIn() ){
submenu.show({x : $.jsnmouse.getX() + 5, y : $.jsnmouse.getY() + 10 });
$._menuitems.contentMenuTitleShowing = true;
$(window).click(function(){
if (!submenu.mouseIsIn() && !$this.mouseIsIn()){
submenu.hide({});
$._menuitems.contentMenuTitleShowing = false;
}
});
}else{
submenu.hide({});
$._menuitems.contentMenuTitleShowing = false;
}
});
menuTypeSelector.find('.dropdown-toggle').unbind("click").click(function(e){
$('.jsnpw-submenu').hide();
e.stopPropagation();
if (menuTypeSelector.hasClass('jsn-menu-selector-disabled')){
menuTypesList.css({ 'visibility': 'hidden', 'display': 'block' });
var overviewHeight = $('.overview', menuTypesList).height(),
viewport = $('.viewport', menuTypesList),
maxHeight = $('#jsn-rawmode-menuitem-container').height() - 100,
viewportHeight = (overviewHeight > maxHeight) ? maxHeight : overviewHeight,
scrollableElement = $('.jsn-scrollable');
// Init scrollbar
menuTypesList.css('height', 'auto');
viewport.css('height', viewportHeight);
scrollableElement.data('tsb') ? scrollableElement.tinyscrollbar_update() : scrollableElement.tinyscrollbar();
var menuHeight = menuTypesList.height();
// Show popup menu
menuTypesList.css({ 'visibility': 'visible', 'display': 'block', 'height': 0, 'opacity': 0 });
menuTypesList.stop();
menuTypesList
.css({ "height" : menuHeight, "opacity" : 1 });
menuTypeSelector.removeClass('jsn-menu-selector-disabled');
}
else{
menuTypesList.stop();
menuTypesList.css({ "height" : 0, "opacity" : 0 });
menuTypeSelector.addClass('jsn-menu-selector-disabled');
menuTypesList.hide();
}
});
$(window).click(function () {
if (!menuTypeSelector.hasClass('jsn-menu-selector-disabled')) {
menuTypesList.stop();
menuTypesList.css({ "height" : 0, "opacity" : 0 });
menuTypeSelector.addClass('jsn-menu-selector-disabled');
menuTypesList.hide();
}
});
//Show/hide dropdown select menutypes
$(window).unbind("jstree.jsn.drag.scroll").bind("jstree.jsn.drag.scroll", function(){
var menu = menuTypes.getSelected();
if ( menu.scrollTop() <= 10 ){
menuTypeSelector.show();
}else{
menuTypeSelector.hide();
}
});
//redraw dropdown menu when window resized
$(window).resize(function() {
var menu = menuTypes.getSelected();
if ( menu.scrollTop() <= 10 ){
menuTypeSelector.show();
}else{
menuTypeSelector.hide();
}
});
}
};
/**
*
* Extend functions for menu manager
*
*/
$.extend({
_menuitems:{
mode:'visualmode',
jstreeContextMenuShowing: false,
/**
* Init
*
* @return: None
*/
init: function(){
//Drop down list
menuTypes.initEvent();
//Call function init submenu titles
$._menuitems.headerContextMenu( $('.menutype-title') );
//$._menuitems.submenuSwitch($('.jsn-menuitem-assignment'));
//Restore list
$._menuitems.restoreList();
//call function init jstree
$(".jsn-menuitem-assignment").each(function(){
//currently when found old object then pop it
$(this).jstreeInstance();
});
//Menu items unpublished
$('#menu-manager').unbind("click").click(function(){
if ( !$(this).hasClass('btn-enabled') ){
$(this).removeClass('btn-disabled').addClass('btn-enabled');
$(this).addClass('btn-success');
$.jStorage.set('rawmode_showunpublished_menuitem', true);
$(this).attr('title', JSNLang.translate('TITLE_HIDE_UNPUBLISHED_MENUITEMS'));
$._menuitems.showUnpublished();
}else{
$(this).removeClass('btn-enabled').addClass('btn-disabled');
$(this).removeClass('btn-success');
$.jStorage.set('rawmode_showunpublished_menuitem', false);
$(this).attr('title', JSNLang.translate('TITLE_SHOW_UNPUBLISHED_MENUITEMS'));
$._menuitems.hideUnpublished();
}
setTimeout(function(){
$._menuitems.layoutResize();
}, 500);
});
$(window).unbind('finshed_load.jstree').bind('finshed_load.jstree', function(){
menuTypes.addIndicate();
});
if ( $.jStorage.get('rawmode_showunpublished_menuitem') ){
$('#menu-manager').removeClass('btn-disabled').addClass('btn-enabled').attr('title', JSNLang.translate('TITLE_HIDE_UNPUBLISHED_MENUITEMS'));
$('#menu-manager').addClass('btn-success');
}else{
$('#menu-manager').removeClass('btn-enabled').addClass('btn-disabled').attr('title', JSNLang.translate('TITLE_SHOW_UNPUBLISHED_MENUITEMS'));
$('#menu-manager').removeClass('btn-success');
}
setTimeout(function(){
$._menuitems.layoutResize();
}, 600);
},
/**
*
* Resize layout
*
* @return: None
*/
layoutResize: function(){
var menuArea = $('#jsn-rawmode-menuitem-container');
var menuSelector = $('#jsn-rawmode-menu-selector');
if ($._menuitems.mode == 'visualmode'){
var leftWidth = $('#jsn-vsleft-panel').width();
var leftHeight = $('#jsn-vsleft-panel').height();
$.jStorage.set("visual_layout_resize", leftWidth);
$('#jsn-leftpanel-header').css('width', leftWidth);
}else if($._menuitems.mode == 'rawmode'){
var leftWidth = $('#jsn-rawmode-leftcolumn').width();
var leftHeight = $('#jsn-rawmode-leftcolumn').height();
var headerPanelHeight = $('#jsn-rawmode-leftcolumn').find('.jsn-heading-panel').height();
var menuSelectorPanel = $('#jsn-rawmode-leftcolumn').find('.jsn-menu-selector-container_inner');
var currentMenu = menuTypes.getSelected();
currentMenu.css( 'height', leftHeight - 37 );
$('.jstree-jsnpa').css({
'overflow-y' : 'hidden',
'overflow-x' : 'hidden'
});
if ( currentMenu.children('ul').height() + 50 > currentMenu.height() ){
menuSelector.find('.menutype-title').css('width', leftWidth - 90);
menuSelector.css('width', leftWidth - 35);
currentMenu.css({
'overflow-y' : 'scroll',
'overflow-x' : 'hidden'
});
}else{
menuSelector.css('width', leftWidth - 20);
menuSelector.find('.menutype-title').css('width', leftWidth - 75);
currentMenu.css({
'overflow-y' : 'hidden',
'overflow-x' : 'hidden'
});
}
$.jStorage.set("rawmode_west_layout_resize", leftWidth);
}
menuSelectorPanel.css('height', leftHeight - headerPanelHeight - 33);
},
headerContextMenu : function(objs, rebuild){
try{
rebuild = ( rebuild == undefined )? true : false;
headerContextMenu = $('#site-manager-eader-context').subMenuReferences({rebuild:false, rightClick:false, attrs:{'class': 'jsnpw-submenu header-context-menu'}});
var menuops = headerContextMenu.getMenu();
if (menuops != null ){
if ( menuops.isNew()){
/**
*
* Edit menu type. Open popup page to setting for menu
*
*/
menuops.addItem( JSNLang.translate( 'TITLE_SUBMENUTITLE_EDIT' ) ).bind("click", function(){
menuops.hide({});
var menuid = menuops.getRootAttr('menuid');
var pop = $.JSNUIWindow
(
baseUrl+'administrator/index.php?option=com_menus&tmpl=component&task=menu.edit&id='+menuid,
{
modal : true,
width : $(window).width()*0.6,
height: $(window).height()*0.5,
scrollContent: true,
title : JSNLang.translate( 'TITLE_PAGE_MENU_SETTINGS' ),
open : function(){
var _this = $(this);
var iframe = _this.find('iframe');
iframe.load(function(){
var head = iframe.contents().find('head');
//head.append('<link rel="stylesheet" href="' + baseUrl + 'plugins/system/jsnframework/assets/joomlashine/css/jsn-gui.css" type="text/css" />');
var el = iframe.contents().find('form#item-form');
el.find('legend').css('display', 'none');
el.find('fieldset[class="adminform"]').css({
'border' : 'none',
'margin' : '15px 10px',
'padding': '0px',
'width' : '460px'
});
});
//bind trigger press enter submit form from child page
$(window).unbind("pressEnterSubmitForm").bind("pressEnterSubmitForm", function(){
iframe.load(function(){
var newtitle = iframe.contents().find('input[name="jform[title]"]').val();
$('#jsn-menutype-title-'+menuid+' btn.menutype-title').html(newtitle).attr('title', newtitle);
$('#dropdownmenutype-'+menuid).children().html(newtitle);
menuTypes.initEvent();
$._menuitems.resetMenu(menuid);
});
});
},
buttons: {
'Save': function(){
var _this = $(this);
var iframe = $(this).find('iframe');
if (!$.fn.validateEmptyFields(iframe)) {
return false;
}
if (pop.submitForm('menu.apply', 'Save', function (){
_this.removeClass('jsn-loading');
var newtitle = iframe.contents().find('input[name="jform[title]"]').val();
if (iframe.contents().find('#system-message').size() > 0) {
_this.css('height', 170);
iframe.css('height', 170);
}
if (iframe.contents().find('input.invalid').size() > 0) {
_this.css('width', 600);
iframe.css('width', 600);
}
$('#jsn-menutype-title-'+menuid+' btn.menutype-title').html(newtitle).attr('title', newtitle);
$('#dropdownmenutype-'+menuid).children().html(newtitle);
menuTypes.initEvent();
$._menuitems.resetMenu(menuid);
})){
_this.addClass('jsn-loading');
}
},
'Close': function(){
$(this).dialog("close");
}
}
});
});
/**
*
* Rebuild menu type, ajax request
*
* @return:
* if (success)
* resetmenu
*/
menuops.addItem('Rebuild').bind("click", function(){
menuops.hide({});
var menuid = menuops.getRootAttr('menuid');
$('#jsn-menutype-title-'+menuid).showImgStatus({
css : {
'position' : 'absolute',
'top' : '10px',
'right' : '40px'
}
});
$.post(baseUrl+'administrator/index.php?option=com_poweradmin&task=menuitem.rebuild&' + token + '=1',
{
mid : menuid
}).success(function(res){
$.checkResponse(res);
$._menuitems.resetMenu(menuid);
}).error(function(msg){
console.log(msg);
});
});
var subPanelMore = menuops.addParentItem( JSNLang.translate('TITLE_SUBPANEL_MORE') );
/**
*
* Delete menu type. Open popup confirmation page to delete/cancel delete menu
*
*/
subPanelMore.addItem( JSNLang.translate( 'TITLE_SUBMENUTITLE_DELETE' ) ).bind("click", function(){
menuops.hide({});
var menuid = menuops.getRootAttr('menuid');
var menutitle = menuops.getRootAttr('menutitle');
var answer = confirm(JSNLang.translate( 'CONFIRM_DELETE_MENU', {'JSN_TEXT1': menutitle}));
if (answer) {
$.post(baseUrl+'administrator/index.php?option=com_poweradmin&task=menuitem.deleteMenu&' + token + '=1',
{
menuid:menuid
}).success(function(res){
if ( res.indexOf('success') != -1 ){
$('#jsn-menu-details-'+menuid).remove();
$('#dropdownmenutype-'+menuid, $('#jsn-menu-dropdown-list')).remove();
menuTypes.selectMenu();
}else{
$.checkResponse(res);
}
}).error(function(msg){
console.log(msg);
});
}else{
return;
}
});
/**
*
* Permissions settings. Open popup permission settings page
*
*/
subPanelMore.addItem( JSNLang.translate( 'TITLE_SUBMENUTITLE_OPTIONS' ) ).bind("click", function(){
menuops.hide({});
var pop = $.JSNUIWindow
(
baseUrl+'administrator/index.php?option=com_config&view=component&component=com_menus&path=&tmpl=component',
{
modal : true,
width : 756,
height: 560,
title : JSNLang.translate( 'TITLE_SUBMENUTITLE_PAGE_OPTIONS' ),
open : function(){
var iframe = $(this).find('iframe');
iframe.load(function(){
var head = iframe.contents().find('head');
//head.append('<link rel="stylesheet" href="' + baseUrl + 'plugins/system/jsnframework/assets/joomlashine/css/jsn-gui.css" type="text/css" />');
var el = iframe.contents().find('form#component-form');
el.children('fieldset').hide();
// Hide Joomla Sidebar
iframe.contents().find('#sidebar').hide();
});
},
buttons:{
'Save & Close': function(){
var iframe = $(this).find("iframe");
if (!$.fn.validateEmptyFields(iframe)) {
return false;
}
pop.submitForm('config.save.component.apply', 'Save & Close');
},
'Cancel': function(){
$(this).dialog("close");
}
}
}
);
});
if ($.browser.msie && $.browser.version < 8){
menuops.addDivider().css('margin-top', '-10px');
}else{
menuops.addDivider();
}
/**
*
* Add new menu item. Open popup selectmenutype page
*
*/
menuops.addItem('Add menu item').bind("click", function(){
var menutype = menuops.getRootAttr('menutype');
var menuid = menuops.getRootAttr('menuid');
$._menuitems.selectmenutype(menutype, menuid, 0);
});
}
/**
* Bind event mousedown
*/
objs.unbind("mousedown").mousedown(function(e){
try{
if ( e.which === 1 && !e.ctrlKey){
headerContextMenu.setReference($(this));
menuops = headerContextMenu.getMenu();
menuops.show
(
{
x : $.jsnmouse.getX()+5,
y : $.jsnmouse.getY()+10
}
);
$('body').unbind("click").bind("click", function(e){
if ( !$(e.target).parents('div.menutype-title').length && !$(e.target).hasClass('menutype-title') ){
menuops.hide({});
}
});
}
}catch(e){
throw e.message;
}finally{
return;
}
});
}
}catch(e){
console.log(e.message);
}
},
submenuSwitch : function(objs){
try{
var switchMenuReference = $('#site-manager-switch-context').subMenuReferences({rebuild:false, rightClick:false, attrs:{'class': 'jsnpw-submenu switch-menu'}});
var switchMenu = switchMenuReference.getMenu();
if (switchMenu.isNew()){
/**
* Add item expand all and call expand_all function when click
*/
switchMenu.addItem( JSNLang.translate( 'TITLE_SUBMENU_SWITCH_EXPAND_ALL' ) ).click(function(){
switchMenu.hide({});
$._menuitems.expand_all(menuTypes.getSelected(), 600);
setTimeout(function(){
$._menuitems.layoutResize();
$._menuitems.saveList();
}, 600);
});
/**
* Add item collapse all and call collapse_all function when click
*/
switchMenu.addItem( JSNLang.translate( 'TITLE_SUBMENU_SWITCH_COLLAPSE_ALL' ) ).click(function(){
switchMenu.hide({});
$._menuitems.collapse_all(menuTypes.getSelected(), 600);
setTimeout(function(){
$._menuitems.layoutResize();
$._menuitems.saveList();
}, 600);
});
if ($.browser.msie && $.browser.version < 8){
switchMenu.addDivider().addClass('jsn-submenu-divider-ie7');
}else{
switchMenu.addDivider();
}
/**
* Add item add menu item and show add item page when click
*/
var addItem = switchMenu.addItem( JSNLang.translate( 'TITLE_SUBMENU_SWITCH_ADD_MENU_ITEM' ) ).click(function(){
var currMenu = menuTypes.getSelected();
var menuid = currMenu.attr('id').replace('jsn-menu-elements-', '');
var menutype = $('#jsn-menutype-title-'+menuid).attr('menutype');
$._menuitems.selectmenutype(menutype, menuid, 0);
switchMenu.hide({});
});
if ($.browser.msie && $.browser.version < 8){
addItem.css
(
{
'position': 'relative',
'top' : '-13px'
}
);
switchMenu.cssHooks('height', '96px');
}
}
/**
* Bind event mousedown
*/
objs.each(function(){
$(this).unbind("click").click(function(e){
try{
if ( !$._menuitems.jstreeContextMenuShowing && ( $(e.target).parents('ul.jsntree-root').length || $(e.target).hasClass('jsntree-root')) ){
switchMenuReference.setReference($(this).children('ul'));
switchMenu = switchMenuReference.getMenu();
var currMenu = menuTypes.getSelected();
var currMenu = menuTypes.getSelected().children('ul');
var showAllItem = false;
currMenu.children('li').each(function(){
if ( $(this).hasClass('jstree-open') || $(this).hasClass('jstree-closed')){
if ($(this).css('display') != 'none'){
showAllItem = true;
}
}
});
if (!showAllItem){
switchMenu.hideItem( JSNLang.translate( 'TITLE_SUBMENU_SWITCH_EXPAND_ALL' ) );
switchMenu.hideItem( JSNLang.translate( 'TITLE_SUBMENU_SWITCH_COLLAPSE_ALL' ) );
switchMenu.hideDividers();
}else{
switchMenu.showItem( JSNLang.translate( 'TITLE_SUBMENU_SWITCH_EXPAND_ALL' ) );
switchMenu.showItem( JSNLang.translate( 'TITLE_SUBMENU_SWITCH_COLLAPSE_ALL' ) );
switchMenu.showDividers();
}
switchMenu.show
(
{
x : $.jsnmouse.getX()+5,
y : $.jsnmouse.getY()+10
}
);
var $this = $(this);
$('body').unbind("click").bind("click", function(e){
if ( !$(e.target).parents('div.jsn-menu-details').length || e.target.tagName == 'A' || e.target.tagName == 'INS' ){
switchMenu.hide({});
}
});
}else{
switchMenu.hide({});
$._menuitems.jstreeContextMenuShowing = false;
}
}catch(e){
throw e.message;
}finally{
return;
}
});
});
}catch(e){
throw e.message;
}finally{
return;
}
},
/**
*
* Get next menu id
*
* @param: (string) (nextId) is joomla ID AUTO_INCREMENT
* @param: (string) (title) is title of menu type
*/
getNewAdd: function(newId, menutype, title){
$.post(baseUrl+'administrator/index.php?option=com_poweradmin&task=menuitem.getMenu&' + token + '=1',
{
mid : newId
}).success(function(res){
$.checkResponse(res);
if (res != 'error'){
var nextId = parseInt(newId)+1,
menuList = $('#jsn-menutypes ul');
$('#jsn-menu-dropdown-list').attr('next-id', nextId);
$('#jsn-rawmode-menuitem-container').append(res);
menuList.append($('<li id="dropdownmenutype-'+newId+'"><a class="text">'+title+'</a></li>'));
var newTitle = $('<div />', {
'id' : 'jsn-menutype-title-'+newId,
'class' : 'jsn-menutype-title',
'menutitle': title,
'menuid' : newId,
'menutype' : menutype
});
var _itemWrapper = $('<div />', {
'class': 'btn-group'
});
var _btn = $('<btn />', {
'id' : 'jsn-submenu-'+newId,
'class' : 'btn menutype-title',
'menutitle': title,
'menuid' : newId,
'menutype' : menutype
}).html(title);
var _caret = $('<button />', {
'class' : 'btn dropdown-toggle',
'data-toggle': 'dropdown',
'type': 'button'
}).html('<span class="caret"></span>');
_btn.appendTo(_itemWrapper);
_caret.appendTo(_itemWrapper);
_itemWrapper.appendTo(newTitle);
$('#jsn-rawmode-menu-selector').find('div.jsn-menutype-title:first').before(newTitle);
$._menuitems.headerContextMenu($('#jsn-menutype-title-'+newId+ ' .menutype-title'), false);
//drop down list
menuTypes.initEvent();
setTimeout(function(){
menuTypes.selectMenu(newId);
}, 500);
}
}).error(function(msg){
console.log(msg);
});
},
/**
*
* Reset menu
*
* @param: (string) (mid) is joomla menutype id
* @return:
* if (success)
* reset menu
*/
resetMenu: function(mid, _resetMenuCallbackFunc){
var oldStatus = new Array();
var i = 0;
$('li', $('#jsn-menu-elements-'+mid)).each(function(){
if (!$(this).hasClass('jstree-leaf')){
oldStatus[i++] = {_nodeid: '#'+$(this).attr('id'), _class: $(this).attr('class'), _style:$(this).children('ul').attr('style') };
}
});
var currentMenu = menuTypes.getSelected(mid).html('');
$.post(baseUrl+'administrator/index.php?option=com_poweradmin&task=menuitem.getMenuType&' + token + '=1',
{
mid:mid
}).success(function(res){
$('#jsn-menutype-title-'+mid).showImgStatus("remove");
$.checkResponse(res);
if (res != 'error'){
try{
currentMenu.html(res);
//Call plugin submenu for header title
$._menuitems.headerContextMenu($('#jsn-menutype-title-'+mid+ ' .menutype-title'), false);
//Call plugin init jstree for this menu items
currentMenu.jstreeInstance();
$(window).unbind("finshed_load.jstree").bind("finshed_load.jstree", function(){
for(i = 0; i < oldStatus.length; i++){
if ($(oldStatus[i]['_nodeid']).length > 0){
if (oldStatus[i]['_class'].indexOf('jstree-open') != -1){
$(oldStatus[i]['_nodeid']).attr('class', oldStatus[i]['_class']);
$(oldStatus[i]['_nodeid']).children('ul').attr('style', oldStatus[i]['_style']);
}
}
}
//Show unpublished items
if ( $.jStorage.get('rawmode_showunpublished_menuitem') ){
$._menuitems.showUnpublished();
}else{
$._menuitems.hideUnpublished();
}
$._menuitems.layoutResize();
$('#'+$.jStorage.get('selected_node')).children('a').addClass('jstree-clicked');
//Callback function
if ($.isFunction(_resetMenuCallbackFunc)){
_resetMenuCallbackFunc();
}
});
}catch(e){
throw e.message;
}
}
}).error(function(msg){
console.log(msg);
});
},
/**
*
* Show unpublished menu items
*
* @return: None
*/
showUnpublished: function(){
var parents = new Array();
var activeMenu = menuTypes.getSelected();
activeMenu.find('li.unpublish').each(function(){
if (/parentid/.test($(this).parent().attr('id'))) {
parents[$(this).parent().attr('id')] = $(this).parent();
}
$(this).css('display', 'block');
});
for( k in parents ){
if ( parents[k].length > 0 && typeof parents[k].addClass == 'function'){
if (!parents[k].parent().hasClass('jstree-closed')){
parents[k].show().parent().addClass('jstree-open');
}
}
}
$._menuitems.markup_tree();
},
/**
*
* Hide unpublished menu items
*
* @return: None
*/
hideUnpublished: function(){
var parents = new Array();
var activeMenu = menuTypes.getSelected();
activeMenu.find('li.unpublish').each(function(){
if (/parentid/.test($(this).parent().attr('id'))) {
parents[$(this).parent().attr('id')] = $(this).parent();
}
$(this).css('display', 'none');
});
for( k in parents ){
if ( parents[k].length > 0 && typeof parents[k].addClass == 'function' ){
var parent = parents[k];
var hideParent = true;
parent.children('li').each(function(){
if ($(this).css('display') != 'none'){
hideParent = false;
}
});
if (hideParent){
parent.parent().removeClass('jstree-open').removeClass('jstree-closed').addClass('jstree-leaf');
}
}
}
$._menuitems.markup_tree();
},
/**
* Remove last tree background repeat
*/
markup_tree : function(){
var activeMenu = menuTypes.getSelected();
activeMenu.find('li.mark-last').removeClass('mark-last').removeClass('jstree-last');
var lastItem = $({});
activeMenu.children('ul').children().each(function(){
if ( $(this).css('display') != 'none' ){
lastItem = $(this);
}
});
if ( lastItem.children('ul').length > 0 ){
lastItem.addClass('mark-last').addClass('jstree-last');
}
},
/**
*
* Expand all tree-closed. Expand callback
*
* @param: (jQuery element) (node) is HTML
* @return: None
*/
expand_node: function(node){
node.removeClass("jstree-closed").addClass("jstree-open").children("a").removeClass("jstree-loading");
},
expand_all: function(root, duration){
$('li.jstree-closed', root).each(function(){
var obj = $(this).parent();
if (obj.children('ul').length > 0 && $(this).hasClass('jstree-closed')){
$._menuitems.expand_all(obj.children("ul"), 0);
obj.children("ul").animate(
{
"height" : "toggle",
"opacity": "toggle"
}, duration, function(){
$._menuitems.expand_node(obj);
$(this).show();
});
}
});
},
/**
*
* Collapse all tree-opend. Collapse callback
*
* @param: (jQuery element) (node) is HTML
* @return: None
*/
collapse_node: function(node){
node.removeClass("jstree-open").addClass("jstree-closed");
},
collapse_all: function(root, duration){
$('.jstree-open', root).each(function(){
var obj = $(this);
if (obj.find('ul').length > 0 && $(this).hasClass('jstree-open')){
$._menuitems.collapse_all(obj.children("ul"), 0);
obj.children("ul").animate(
{
"height" : "toggle",
"opacity": "toggle"
}, duration, function(){
$._menuitems.collapse_node(obj);
$(this).hide();
});
}
});
},
/**
*
* Add new menu
*
* @param: (string) (nextId) is joomla ID AUTO_INCREMENT
* @return: setting page
*/
addMenu: function(nextId){
var pop = $.JSNUIWindow
(
baseUrl+'administrator/index.php?option=com_menus&tmpl=component&task=menu.add',
{
modal : true,
width : 950,
height: 650,
title : JSNLang.translate( 'TITLE_PAGE_MENUITEM_ADD_MENU' ),
scrollContent: false,
open : function(){
var _this = $(this);
var iframe = _this.find('iframe');
iframe.load(function(){
var head = iframe.contents().find('head');
//head.append('<link rel="stylesheet" href="' + baseUrl + 'plugins/system/jsnframework/assets/joomlashine/css/jsn-gui.css" type="text/css" />');
var el = iframe.contents().find('form#item-form');
el.find('legend').css('display', 'none');
el.find('fieldset[class="adminform"]').css({
'border' : 'none',
'margin' : '15px 10px',
'padding': '0px',
'width' : '400px'
});
});
//bind trigger press enter submit form from child page
$(window).unbind("pressEnterSubmitForm").bind("pressEnterSubmitForm", function(){
var newtitle = iframe.contents().find('input[name="jform[title]"]').val();
var menutype = iframe.contents().find('input[name="jform[menutype]"]').val();
iframe.load(function(){
$._menuitems.getNewAdd(nextId, menutype, newtitle);
});
});
},
buttons: {
'Save & Close': function(){
var _this = $(this);
var iframe = $(this).find('iframe');
if (!$.fn.validateEmptyFields(iframe)) {
return false;
}
if (pop.submitForm('menu.save', 'Save & Close')){
var newtitle = iframe.contents().find('input[name="jform[title]"]').val();
var menutype = iframe.contents().find('input[name="jform[menutype]"]').val();
iframe.load(function(){
$._menuitems.getNewAdd(nextId, menutype, newtitle);
});
}
},
'Cancel': function(){
$(this).dialog("close");
}
}
}
);
},
/**
*
* Select menutype and redirect to create new menu item
*
* @param: (string) (menutype) is joomla menutype
* @param: (string) (menutypeid) is joomla menutype id
* @param: (string) (parentid) is joomla parent menu item id need add to children
*/
selectmenutype: function(menutype, menutypeid, parentid){
var pop = $.JSNUIWindow
(
baseUrl+'administrator/index.php?option=com_poweradmin&view=selectmenutypes&menutypeid='+menutypeid+'&parentid='+parentid+'&tmpl=component&pwadvisual=1',
{
modal : true,
width : 750,
height: 550,
buttons: {
'Close': function(){
$(this).dialog("close");
}
},
title : JSNLang.translate( 'TITLE_PAGE_MENUITEM_SELECT_MENU_TYPE' ),
search: {
text : JSNLang.translate( 'TITLE_PAGE_MENUITEM_SELECT_MENU_TYPE_TEXT_SEARCH' ),
classSet: 'ui-window-searchbar',
onChange: function(){
var iframe = pop.getIframe();
iframe[0].contentWindow.selectMenuType.filterResults($(this).val().trim());
},
onKeyup : function(){
//fire change event
$(this).change();
},
onBlur : function(){
if ($(this).val().trim() == ''){
$(this).val( JSNLang.translate( 'TITLE_PAGE_MENUITEM_SELECT_MENU_TYPE_TEXT_SEARCH' ) );
$(this).css('color', '#CCCCCC');
}
},
onFocus : function(){
if ($(this).val().trim() == JSNLang.translate( 'TITLE_PAGE_MENUITEM_SELECT_MENU_TYPE_TEXT_SEARCH' )){
$(this).css('color', '#000').val('');
}
},
closeTextKeyword : true,
afterAddTextCloseSearch : function(obj){
},
defaultText : JSNLang.translate( 'DEFAULT_TEXT_SEARCH_SELECT_MODULE_TYPE' ),
closeTextClick : function( obj, searchbox ){
obj.hide();
var iframe = pop.getIframe();
iframe[0].contentWindow.selectMenuType.filterResults('');
searchbox.css('color', '#CCCCCC').val( JSNLang.translate( 'DEFAULT_TEXT_SEARCH_SELECT_MODULE_TYPE' ) );
}
}
}
);
},
/**
*
* Add new menu item
*
* @param: (string basecode64) (params)
* @param: (string) (menutype) is joomla menutype
* @param: (string) (menutypeid) is joomla menutype id
* @param: (string) (parentid) is joomla parent id need add to children
* @return: open page add
*/
addMenuItem: function(params, menutype, menutypeid, parentid){
var wWidth = $(window).width()*0.85;
var wHeight = $(window).height()*0.8;
var pop = $.JSNUIWindow
(
baseUrl+'administrator/index.php?option=com_poweradmin&task=selectmenutypes.setType&tmpl=component¶ms='+params+'&menutype='+menutype,
{
modal : true,
width : wWidth,
height: wHeight,
title : JSNLang.translate( 'TITLE_PAGE_MENUITEM_ADD_MENU_ITEM' ),
open : function(){
var iframe = $(this).find('iframe');
var _this = $(this);
//bind trigger press enter submit form from child page
$(window).unbind("pressEnterSubmitForm").bind("pressEnterSubmitForm", function(){
iframe.load(function(){
$._menuitems.resetMenu(menutypeid);
});
});
},
buttons:{
'Save & Close': function(){
if (pop.submitForm('item.apply', 'Save & Close')){
var _this = $(this);
var iframe = $(this).find('iframe');
iframe.load(function(){
$._menuitems.resetMenu(menutypeid);
});
}
},
'Cancel': function(){
$(this).dialog("close");
}
}
}
);
},
/**
*
* Select an menu item. Route mode
*
* @param: (string) (itemid)
* @return: reload page
*/
selectedItem: function(itemid, backgroundLoad){
var link = (typeof(itemid) == 'string') ?
$('#'+itemid).children('a').addClass('jstree-clicked').attr('link'):
itemid.children('a').addClass('jstree-clicked').attr('link');
if (link != undefined && link != '#'){
$.jStorage.set('selected_node', (typeof(itemid) == 'string') ? itemid : itemid.attr('id'));
if ($.jStorage.get('add_new_module') || $.jStorage.get('inactive_position')){
if (link.indexOf('?') != -1){
link += '&tp=1';
}else{
link += '?tp=1';
}
}
link = $.base64Encode(link);
if ($._menuitems.mode == 'visualmode'){
if (sef == 1){
$.post(
baseUrl+'index.php?option=com_poweradmin&task=getRouterLink',
{
link: link
}
).success(function(res){
if (res != 'error'){
$._visualmode.setIframeSRC( baseUrl +'administrator/index.php?option=com_poweradmin&view=jsnrender&format=raw&render_url='+res);
}
}).error(function(msg){
console.log(msg);
});
}else{
$._visualmode.setIframeSRC( baseUrl +'administrator/index.php?option=com_poweradmin&view=jsnrender&format=raw&render_url='+link);
}
}else{
JSNGrid.loadPage( link, backgroundLoad );
}
}else if(link == '#'){
alert(JSNLang.translate( 'CONFIRM_SELECT_EMPTY_MENU_ITEM' ));
}
},
/**
*
* Save active tree status
*
* @return: baseencode64 save to cookie
*/
saveList: function(){
var oldStatus = new Array();
var i = 0;
var menuActive = menuTypes.getSelected();
$('li', menuActive).each(function(){
if (!$(this).hasClass('jstree-leaf')){
oldStatus[i++] = {_nodeid: '#'+$(this).attr('id'), _class: $(this).attr('class'), _style:$(this).children('ul').attr('style') };
}
});
var store = $.base64Encode( $.arrayToJSON(oldStatus) );
$.jStorage.set($._menuitems.mode+'_menuitem_items_status', store);
},
/**
*
* Restore tree list status
*
* @return: restore menu items status
*/
restoreList: function(){
var storeList = $.jStorage.get($._menuitems.mode+'_menuitem_items_status');
if (storeList){
var oldStatus = $.parseJSON($.base64Decode(storeList));
for(k in oldStatus){
if ($(oldStatus[k]['_nodeid']).length > 0){
if (oldStatus[k]['_class'].indexOf('jstree-open') != -1 && $(oldStatus[k]['_nodeid']).children('ul').length){
$(oldStatus[k]['_nodeid']).attr('class', oldStatus[k]['_class']);
$(oldStatus[k]['_nodeid']).children('ul').attr('style', oldStatus[k]['_style']).css('opacity', '1').css('height', 'auto');
}
}
}
$._menuitems.layoutResize();
}
//Scan to fix menu items
$('.jsn-menuitem-assignment').find('li').each(function(){
if ($(this).children("ul").length){
if ($(this).children("ul").css('display') == 'block'){
$(this).removeClass("jstree-closed").addClass("jstree-open").children("a").removeClass("jstree-loading");
}else if($(this).children("ul").css('display') == 'none'){
$(this).removeClass("jstree-open").addClass("jstree-closed");
}
}
});
}
}
});
})(JoomlaShine.jQuery);