Issue 2380: Admin UI Refactoring - Advanced - Layouts

git-svn-id: http://xe-core.googlecode.com/svn/branches/maserati@11661 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
flyskyko 2012-10-11 03:08:17 +00:00
parent 81149fa5b8
commit 4eac255d7d
10 changed files with 584 additions and 936 deletions

View file

@ -1,7 +1,7 @@
/* NHN (developers@xpressengine.com) */
jQuery(function($){
// iSO mobile device toolbar remove
window.top.scrollTo(0,0);
window.scrollTo(0,0);
// Skip to content
$('.x .skipNav>a').click(function(){
$($(this).attr('href')).attr('tabindex','0').css('outline','0').focus();
@ -34,7 +34,7 @@ jQuery(function($){
});
// Tab Navigation
$('.x .x_tab-content>.x_tab-pane:not(".x_active")').hide();
$('.x .x_nav-tabs').find('>li>a[href^="#"]').click(function(){
$(document.body).on('click', '.x .x_nav-tabs>li>a[href^="#"]', function(){
var $this = $(this);
$this.parent('li').addClass('x_active').siblings().removeClass('x_active');
$this.closest('.x_nav-tabs').next('.x_tab-content').find($this.attr('href')).addClass('x_active').show().siblings().removeClass('x_active').hide();
@ -234,9 +234,9 @@ $.fn.xeModalWindow = function(){
$('.x_modal-backdrop').hide();
$this.focus();
});
$('div.x_modal').addClass('x').hide();
};
$('a.modalAnchor').xeModalWindow();
$('div.x_modal').addClass('x').hide();
});
@ -896,6 +896,362 @@ $('.filebox')
simpleBtn.removeClass('x_active');
});
// Multilingual
var $multilinguals_v15 = $('.vLang[type="hidden"]');
var $multilinguals = $('.lang_code');
if($multilinguals_v15.length || $multilinguals.length){
function on_complete(data){
var $content = $('.x #content');
$content.append(data.html);
var tmpCount = 0;
$multilinguals_v15.each(function(){
var $this = $(this);
$this.removeClass('vLang').addClass('lang_code');
$this.parent().find('.editUserLang').remove();
});
$multilinguals = $('.lang_code');
$multilinguals.each(function(){
var $this = $(this);
var id = $this.attr('id');
if(!id){
id = '__lang_code_' + tmpCount;
tmpCount++;
$this.attr('id', id);
}
if(this.tagName == 'TEXTAREA' || $this.next('textarea.vLang').length){
var $displayInput = $('<textarea id="lang_' + id + '" class="displayInput" style="width:179px">').data('lang-id', id);
}else{
var $displayInput = $('<input type="text" id="lang_' + id + '" class="displayInput" style="width:179px">').data('lang-id', id);
}
var $remover = $('<button type="button" class="x_add-on remover" title="Remove Multilingual Text"><i class="x_icon-remove"></i> Remove Multilingual Text</button>').data('lang-target', id);
var $setter = $('<a href="#g11n" class="x_add-on modalAnchor" title="Set Multilungual Text"><i class="x_icon-globe"></i> Set Multilingual Text</a>').data('lang-target', id);
$this.parent().addClass('g11n').addClass('x_input-append');
$this.after($displayInput, $remover, $setter);
$this.parent().find('.vLang').remove();
$this.hide();
$setter.xeModalWindow();
// text change
var $hiddenInput = $this;
$displayInput.keydown(function(){
$this = $(this);
if($this.closest('.g11n').hasClass('active')) return;
$hiddenInput.val($this.val());
});
// load value
$displayInput.val($hiddenInput.val());
var pattern = /^\$user_lang->/;
if(pattern.test($displayInput.val())){
$.exec_json('module.getModuleAdminLangCode', {'name': $displayInput.val().replace('$user_lang->', '')}, on_complete);
function on_complete(data){
if(!data || !data.langs) return;
$displayInput.closest('.g11n').addClass('active');
$displayInput.val(data.langs[xe.current_lang]).attr('disabled', 'disabled').width(135);
}
}
});
var $g11n_set = $('.x .g11n'); // set container
var $g11n_anchor = $g11n_set.children('.modalAnchor');
var $g11n_get = $('.x #g11n'); // get container
var $g11n_create = $g11n_get.find('#lang_create'); // create section
var $g11n_search = $g11n_get.find('#lang_search'); // search section
var is_create_changed = false;
// check create change
$g11n_create.find('.editMode textarea').change(function(){
is_create_changed = true;
});
// use lang code
function g11n_use_lang_code($this, code, value){
var $displayInput = $('#lang_' + $this.closest('.x_modal').data('lang-target'));
$displayInput
.width(135)
.attr('disabled', 'disabled')
.val(value)
.parent('.g11n').addClass('active');
$displayInput.siblings('#' + $displayInput.data('lang-id')).val('$user_lang->' + code);
is_create_changed = false;
$displayInput.siblings('[href="#g11n"]').trigger('close.mw');
}
// get list
function g11n_get_list(page, search_keyword, name){
if(!page) page = 1;
if(!search_keyword) search_keyword = '';
if(!name) name = '';
$.exec_json('module.getModuleAdminLangListHtml', {'page': page, 'search_keyword': search_keyword, 'name': name}, on_complete);
function on_complete(data){
if(!data || !data.html) return;
$('#lang_search').html(data.html);
// page
$('#lang_search .x_pagination a').click(function(){
var page = $(this).data('page');
var search_keyword = $(this).data('search_keyword');
if(!page) return;
g11n_get_list(page, search_keyword);
return false;
});
$('#lang_search .x_pagination').submit(function(){
var page = $(this).find('[name="page"]').val();
var search_keyword = $(this).data('search_keyword');
if(!page) return false;
g11n_get_list(page, search_keyword);
return false;
});
// search
$('#lang_search .search').submit(function(){
var search_keyword = $(this).find('[name="search_keyword"]').val();
g11n_get_list(1, search_keyword);
return false;
});
$('#lang_search #search_cancel').click(function(){
g11n_get_list(1, '');
});
// text click
$('#lang_search').find('[href^="#lang-"]').append('<i class="x_icon-chevron-down"></i>').click(function(){
var $this = $(this);
var lang_code = $this.data('lang_code');
g11n_search_save_confirm();
// Fieldset close/open display
var up = 'x_icon-chevron-up';
var down = 'x_icon-chevron-down';
if($this.next('fieldset').is(':visible')){
$this.children('i').removeClass(up).addClass(down);
}else{
$this.children('i').removeClass(down).addClass(up);
$this.parent('.item').siblings('.item').find('a > i').removeClass(up).addClass(down).end().children('fieldset').hide();
}
if($this.data('is_loaded')) return;
$.exec_json('module.getModuleAdminLangCode', {'name': lang_code}, on_complete);
function on_complete(data){
var $textareas = $($this.attr('href') + ' textarea');
$textareas.each(function(){
var $this = $(this);
var value = data.langs[$this.data('lang')];
var pattern = /^\$user_lang->/;
if(pattern.test(value)){
$this.val('').data('value', '');
}else{
$this.val(value).data('value', value);
}
});
$this.data('is_loaded', true);
}
});
if(name){
$('#lang_search').find('[href^="#lang-"]').trigger('click');
}
// Modify click
$('#lang_search').find('.modify').click(function(){
$(this).closest('fieldset').addClass('editMode').find('textarea').removeAttr('disabled');
});
// Cancel Click
$('#lang_search').find('.cancel').click(function(){
$(this).closest('fieldset').removeClass('editMode').find('textarea').attr('disabled', 'disabled').each(function(){
var $this = $(this);
$this.val($this.data('value'));
});
return false;
});
// Save Click
$('#lang_search').find('.item').submit(function(){
var $this = $(this);
var $textareas = $this.find('.editMode').children('textarea');
var $anchor = $this.find('[href^="#lang-"]');
var params = {};
var current_lang_value = null;
// create lang list
$textareas.each(function(){
var $this = $(this);
params[$this.attr('class')] = $this.val();
$this.data('tmp_value', $this.val());
if(xe.current_lang == $this.attr('class')){
current_lang_value = $this.val();
}
});
params.lang_name = $anchor.data('lang_code');
// submit
$.exec_json('module.procModuleAdminInsertLang', params, on_complete);
function on_complete(data){
if(!data || data.error || !data.name) return;
$textareas.each(function(){
var $this = $(this);
$this.data('value', $this.data('tmp_value'));
});
$anchor.children('span').html(current_lang_value);
$('#lang_search').find('.cancel').trigger('click');
$this.find('.useit').trigger('click');
}
return false;
});
// Useit click
$('#lang_search').find('.useit').click(function(){
var $this = $(this);
var $anchor = $this.closest('.item').find('[href^="#lang-"]');
var name = $anchor.data('lang_code');
var value = $anchor.children('span').text();
g11n_use_lang_code($this, name, value);
});
}
}
// #lang_create confirm
function g11n_create_save_confirm(){
if($g11n_create.is(':visible') && is_create_changed){
if(confirm(xe.msg_confirm_save_and_use_multilingual)){
$g11n_create.find('.save-useit').trigger('click');
}
}
return true;
}
// #lang_search confirm
function g11n_search_save_confirm(){
if($g11n_search.is(':visible') && $g11n_search.find('.editMode').length){
var $search_item = $g11n_search.find('form.item');
if(confirm(xe.msg_confirm_save_and_use_multilingual)){
$search_item.find('.save').trigger('click').end().find('textarea').attr('disabled', 'disabled');
}else{
$search_item.find('.cancel').trigger('click');
}
}
return true;
}
// #g11n Reset to default
function g11n_reset_default(){
$g11n_search.find('.item > fieldset').hide().prev('a').children('i').removeClass('x_icon-chevrom-up').addClass('x_icon-chevron-down');
$g11n_get.find('[href="#lang_create"]').trigger('click');
$g11n_create.find('.editMode').children('textarea').val('');
is_create_changed = false;
return true;
}
// Save-Useit click
$g11n_create.submit(function(){
var $this = $(this);
var params = {};
var current_lang_value = null;
// create lang list
$this.find('.editMode').children('textarea').each(function(){
var $this = $(this);
params[$this.attr('class')] = $this.val();
if(xe.current_lang == $this.attr('class')){
current_lang_value = $this.val();
}
});
if(!current_lang_value){
alert(xe.msg_empty_multilingual);
return false;
}
// submit
$.exec_json('module.procModuleAdminInsertLang', params, on_complete);
function on_complete(data){
if(!data || data.error || !data.name) return;
g11n_use_lang_code($this, data.name, current_lang_value);
}
return false;
});
// Remover click
$g11n_set.children('.remover').click(function(){
var $this = $(this);
var $g11n_set_input = $('#lang_' + $this.data('lang-target'));
$g11n_set_input.val('').removeAttr('disabled')
.width(179)
.parent('.g11n').removeClass('active');
$this.siblings('.lang_code').val('');
});
// Close click
$g11n_anchor.bind('before-close.mw', function(){
if(!g11n_create_save_confirm()) return false;
if(!g11n_search_save_confirm()) return false;
if(!g11n_reset_default()) return false;
});
// .modalAnchor click
$g11n_anchor.bind('open.mw',function(){
var $this = $(this);
var $displayInput = $this.siblings('.displayInput');
if($this.closest('.g11n').hasClass('active')){
g11n_get_list(1, '', $displayInput.prev('.lang_code').val().replace('$user_lang->', ''));
$($this.attr('href')).find('[href="#lang_search"]').trigger('click');
}else{
g11n_get_list();
}
$($this.attr('href')).data('lang-target', $this.data('lang-target'));
});
}
$.exec_json('module.getModuleAdminMultilingualHtml', {}, on_complete);
}
});
function getOffset(elem, offsetParent) {