Issue 2377: Admin Ui Refactoring - Settings - File Box

git-svn-id: http://xe-core.googlecode.com/svn/branches/maserati@11561 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
flyskyko 2012-09-27 11:19:49 +00:00
parent 6d447ffc8b
commit 01462039b6
10 changed files with 306 additions and 139 deletions

View file

@ -1,7 +1,7 @@
{@Context::addHtmlHeader('<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no" />
')}
<load target="../../../common/css/bootstrap.min.css" index="1" />
<load target="../../../common/css/bootstrap.min.css" index="1" usecdn="true" />
<div class="x">
<p class="skipNav"><a href="#content">{$lang->skip_to_content}</a></p>
<header class="header">

View file

@ -8,7 +8,7 @@ jQuery(function($){
});
// TARGET toggle
$('.x [data-toggle]').click(function(){
$(document.body).on('click', '.x [data-toggle]', function(){
var $this = $(this);
var $target = $($this.attr('data-toggle'));
$target.toggle();
@ -22,12 +22,12 @@ jQuery(function($){
return false;
});
// TARGET show
$('.x [data-show]').click(function(){
$(document.body).on('click', '.x [data-show]', function(){
$($(this).attr('data-show')).show().attr('tabindex','0').focus();
return false;
});
// TARGET hide
$('.x [data-hide]').click(function(){
$(document.body).on('click', '.x [data-hide]', function(){
var $this = $(this);
$($this.attr('data-hide')).hide();
$this.focus();
@ -130,7 +130,7 @@ jQuery(function($){
.trigger('update.checkbox', [name, this.checked]);
});
// Pagination
$('.x .x_pagination .x_disabled, .x .x_pagination .x_active').click(function(){
$(document.body).on('click', '.x .x_pagination .x_disabled, .x .x_pagination .x_active', function(){
return false;
});
// Section Toggle
@ -845,6 +845,71 @@ $.fn.xeSortableTable = function(){
};
$('table.sortable').xeSortableTable();
// filebox
jQuery(function($){
$('.filebox')
.bind('before-open.mw', function(){
var $this, $list, $parentObj;
var anchor;
$this = $(this);
anchor = $this.attr('href');
$list = $(anchor).find('.filebox_list');
function on_complete(data){
$list.html(data.html);
$list.find('.select')
.bind('click', function(event){
var selectedImages = $('input.select_checkbox:checked');
if(selectedImages.length == 0) {
var selectedImgSrc = $(this).closest('tr').find('img.filebox_item').attr('src');
if(!selectedImgSrc){
alert("None selected!");
}else{
$this.trigger('filebox.selected', [selectedImgSrc]);
$this.trigger('close.mw');
}
}else {
$this.trigger('filebox.selected', [selectedImages]);
$this.trigger('close.mw');
}
return false;
});
$list.find('.x_pagination')
.find('a')
.filter(function(){
if ($(this).data('toggle')) return false;
if ($(this).parent().hasClass('x_disabled')) return false;
if ($(this).parent().hasClass('x_active')) return false;
return true;
})
.bind('click', function(){
var page = $(this).attr('page');
$.exec_json('module.getFileBoxListHtml', {'page': page}, on_complete);
return false;
});
$('#goToFileBox')
.find('button')
.bind('click', function(){
var page = $(this).prev('input').val();
$.exec_json('module.getFileBoxListHtml', {'page': page}, on_complete);
return false;
});
$list.closest('.x_modal-body').scrollTop(0);
}
$.exec_json('module.getFileBoxListHtml', {'page': '1'}, on_complete);
});
});
function getOffset(elem, offsetParent) {
var top = 0, left = 0;

View file

@ -812,12 +812,22 @@
if($logged_info->is_admin !='Y' && !$logged_info->is_site_admin) return new Object(-1, 'msg_not_permitted');
$vars = Context::gets('addfile','filter');
$attributes = Context::getRequestVars();
foreach($attributes as $key => $value){
if(!(strpos($key, 'attribute_name') === false)) $vars->comment = $vars->comment.';'.$value;
if(!(strpos($key, 'attribute_value') ===false)) $vars->comment = $vars->comment.':'.$value;
}
$vars->comment = substr($vars->comment, 1);
$attributeNames = Context::get('attribute_name');
$attributeValues = Context::get('attribute_value');
if(is_array($attributeNames) && is_array($attributeValues) && count($attributeNames) == count($attributeValues))
{
$attributes = array();
foreach($attributeNames as $no => $name){
if(empty($name))
{
continue;
}
$attributes[] = sprintf('%s:%s', $name, $attributeValues[$no]);
}
$attributes = implode(';', $attributes);
}
$vars->comment = $attributes;
$module_filebox_srl = Context::get('module_filebox_srl');
$ext = strtolower(substr(strrchr($vars->addfile['name'],'.'),1));

View file

@ -1521,10 +1521,15 @@
function unserializeAttributes($module_filebox_list)
{
if(is_array($module_filebox_list))
if(is_array($module_filebox_list->data))
{
foreach($module_filebox_list->data as $item)
foreach($module_filebox_list->data as &$item)
{
if(empty($item->comment))
{
continue;
}
$attributes = explode(';', $item->comment);
foreach($attributes as $attribute){
$values = explode(':', $attribute);

View file

@ -1,93 +1,111 @@
<!--%load_js_plugin("filebox")-->
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<div class="x_page-header">
<h1>{$lang->menu_gnb_sub['filebox']}</h1>
</div>
<div cond="$XE_VALIDATOR_MESSAGE" class="x_alert x_alert-{$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<h1 class="h1">{$lang->menu_gnb_sub['filebox']}</h1>
<div class="fileBox">
<form action="./" class="portlet form" method="post" enctype="multipart/form-data">
<input type="hidden" name="module" value="module" />
<input type="hidden" name="act" value="procModuleFileBoxAdd" />
<input type="hidden" name="vid" value="{$vid}" />
<input type="hidden" name="filter" value="{$filter}" />
<input type="hidden" name="input" value="{$input}" />
<h2>{$lang->upload_file}</h2>
<div class="tgContent">
<ul id="fileUp">
<li>
<label for="attribute_name1" style="display: inline;">{$lang->attribute_name} </label> <input type="text" class="notmulti" name="attribute_name1" id="attribute_name1" />
<label for="attribute_value1" style="display: inline; font-weight:bold">{$lang->attribute_value} </label> <input type="text" class="notmulti" name="attribute_value1" id="attribute_value1" />
<button type="button" class="text __addBtn" onclick="addRow('fileUp');">{$lang->cmd_add}</button>
<button type="button" class="text __deleteBtn" onclick="clearRow(this);">{$lang->cmd_delete}</button>
</li>
<li>
<label for="file" style="display: inline">{$lang->file}</label> <input type="file" name="addfile" id="file"/>
</li>
</ul>
<div class="btnArea">
<span class="btn"><input type="submit" value="{$lang->cmd_save}" /></span>
</div>
</div>
</form>
<form action="./" class="form">
<ul>
<li loop="$filebox_list=>$key,$val">
<!--@foreach($val->attributes as $key => $value)-->
<p class="q">{$key} : {$value}</p>
<!--@end-->
<p class="a">
<!--@if($val->fileextension=='swf')-->
<object height="100" width="100" flashvars="" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" xmlns="http://www.w3.org/1999/xhtml">
<param value="{getUrl('')}{$val->filename}" name="movie" xmlns="http://www.w3.org/1999/xhtml" />
<param value="transparent" name="wmode" xmlns="http://www.w3.org/1999/xhtml" />
<param value="sameDomain" name="allowScriptAccess" xmlns="http://www.w3.org/1999/xhtml" />
<param value="high" name="quality" xmlns="http://www.w3.org/1999/xhtml" />
<embed height="100" width="100" wmode="transparent" flashvars="" autostart="false" src="{getUrl('')}{$val->filename}" xmlns="http://www.w3.org/1999/xhtml" />
</object>
<!--@elseif(in_array($val->fileextension,array('gif','png','jpg','jpeg')))-->
<img src="{getUrl('')}{$val->filename}" style="max-height:100px" />
<!--@end-->
</p>
<button type="button" class="side text" onclick="XE.filebox.deleteFile('{$val->module_filebox_srl}');" >{$lang->cmd_delete}</button>
</li>
</ul>
</form>
<section>
<h2>{$lang->upload_file}</h2>
<form action="./" class="x_form-horizontal" method="post" enctype="multipart/form-data">
<input type="hidden" name="module" value="module" />
<input type="hidden" name="act" value="procModuleFileBoxAdd" />
<input type="hidden" name="vid" value="{$vid}" />
<input type="hidden" name="filter" value="{$filter}" />
<input type="hidden" name="input" value="{$input}" />
<div class="x_control-group __attribute" data-count="1">
<label for="attribute_name1" class="x_control-label __attribute_name_label">{$lang->attribute_name}</label>
<div class="x_controls">
<input type="text" name="attribute_name[]" id="attribute_name1" class="__attribute_name" />
<label for="attribute_value1" class="x_inline __attribute_value_label">{$lang->attribute_value} <input type="text" name="attribute_value[]" id="attribute_value1" class="__attribute_value" /></label>
<button type="button" class="x_btn x_btn-mini __addBtn" onclick="addRow('fileUp');">{$lang->cmd_add}</button>
<button type="button" class="x_btn x_btn-mini __deleteBtn" onclick="clearRow(this);">{$lang->cmd_delete}</button>
</div>
</div>
<form action="./" class="pagination" method="post">
<input type="hidden" name="error_return_url" value="" />
<input type="hidden" name="module" value="{$module}" />
<input type="hidden" name="act" value="{$act}" />
<input cond="$order_target" type="hidden" name="order_target" value="{$order_target}" />
<input cond="$order_type" type="hidden" name="order_type" value="{$order_type}" />
<input cond="$category_srl" type="hidden" name="category_srl" value="{$category_srl}" />
<input cond="$childrenList" type="hidden" name="childrenList" value="{$childrenList}" />
<input cond="$search_keyword" type="hidden" name="search_keyword" value="{$search_keyword}" />
<div class="x_control-group">
<label for="file" class="x_control-label">{$lang->file}</label>
<div class="x_controls">
<input type="file" name="addfile" id="file" />
</div>
</div>
<div class="btnArea">
<button type="submit" class="x_btn x_btn-primary">{$lang->cmd_save}</button>
</div>
</form>
</section>
<a href="{getUrl('page', '')}" class="direction">&laquo; {$lang->first_page}</a>
<section>
<table class="x_table x_table-striped x_table-hover">
<col style="width:250px" />
<col />
<col style="width:50px; white-space:nowrap" />
<tbody>
<tr loop="$filebox_list => $key, $val">
<td>
<!--@if($val->fileextension=='swf')-->
<object height="100" width="100" flashvars="" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" xmlns="http://www.w3.org/1999/xhtml">
<param value="{getUrl('')}{$val->filename}" name="movie" xmlns="http://www.w3.org/1999/xhtml" />
<param value="transparent" name="wmode" xmlns="http://www.w3.org/1999/xhtml" />
<param value="sameDomain" name="allowScriptAccess" xmlns="http://www.w3.org/1999/xhtml" />
<param value="high" name="quality" xmlns="http://www.w3.org/1999/xhtml" />
<embed height="100" width="100" wmode="transparent" flashvars="" autostart="false" src="{getUrl('')}{$val->filename}" xmlns="http://www.w3.org/1999/xhtml" />
</object>
<!--@elseif(in_array($val->fileextension,array('gif','png','jpg','jpeg')))-->
<img src="{getUrl('')}{$val->filename}" style="max-height:100px" />
<!--@end-->
</td>
<td>
<p loop="$val->attributes => $name, $value">
{$name} : {$value}
</p>
</td>
<td>
<button type="button" class="x_btn x_btn-danger" style="white-space:nowrap" onclick="XE.filebox.deleteFile('{$val->module_filebox_srl}');">{$lang->cmd_delete}</button>
</td>
</tr>
</tbody>
</table>
<form cond="$page_navigation" action="./" class="x_pagination x_pagination-centered" no-error-return-url="true">
<input type="hidden" name="module" value="{$module}" />
<input type="hidden" name="act" value="{$act}" />
<block cond="$page_navigation->first_page + $page_navigation->page_count > $page_navigation->last_page && $page_navigation->page_count != $page_navigation->total_page">
<ul>
<li class="x_disabled"|cond="!$page || $page == 1"><a href="{getUrl('page', '')}">&laquo; {$lang->first_page}</a></li>
<block cond="$page_navigation->first_page != 1 && $page_navigation->first_page + $page_navigation->page_count > $page_navigation->last_page - 1 && $page_navigation->page_count != $page_navigation->total_page">
{@$isGoTo = true}
<a href="{getUrl('page', '')}">1</a>
<a href="#goTo" class="tgAnchor" title="{$lang->cmd_go_to_page}">...</a>
<li>
<a href="#goTo" data-toggle="#goTo" title="{$lang->cmd_go_to_page}">...</a>
<span cond="$isGoTo" id="goTo" class="x_input-append">
<input type="number" min="1" max="{$page_navigation->last_page}" required name="page" title="{$lang->cmd_go_to_page}" />
<button type="submit" class="x_add-on">Go</button>
</span>
</li>
</block>
<!--@while($page_no = $page_navigation->getNextPage())-->
{@$last_page = $page_no}
<strong cond="$page_no == $page">{$page_no}</strong>
<a cond="$page_no != $page" href="{getUrl('page', $page_no)}">{$page_no}</a>
<li class="x_active"|cond="$page_no == $page"><a href="{getUrl('page', $page_no)}">{$page_no}</a></li>
<!--@end-->
<block cond="$last_page != $page_navigation->last_page">
<block cond="$last_page != $page_navigation->last_page && $last_page + 1 != $page_navigation->last_page">
{@$isGoTo = true}
<a href="#goTo" class="tgAnchor" title="{$lang->cmd_go_to_page}">...</a>
<a href="{getUrl('page', $page_navigation->last_page)}">{$page_navigation->last_page}</a>
<li>
<a href="#goTo" data-toggle="#goTo" title="{$lang->cmd_go_to_page}">...</a>
<span cond="$isGoTo" id="goTo" class="x_input-append">
<input type="number" min="1" max="{$page_navigation->last_page}" required name="page" title="{$lang->cmd_go_to_page}" />
<button type="submit" class="x_add-on">Go</button>
</span>
</li>
</block>
<a href="{getUrl('page', $page_navigation->last_page)}" class="direction">{$lang->last_page} &raquo;</a>
<span cond="$isGoTo" id="goTo" class="tgContent">
<input name="page" title="{$lang->cmd_go_to_page}" />
<button type="submit">Go</button>
</span>
</form>
<li class="x_disabled"|cond="$page == $page_navigation->last_page"><a href="{getUrl('page', $page_navigation->last_page)}" title="{$page_navigation->last_page}">{$lang->last_page} &raquo;</a></li>
</ul>
</form>
</section>

View file

@ -1,38 +1,80 @@
<p cond="!$filebox_list">Not a registered file.</p>
<ul cond="$filebox_list" class="lined">
<li loop="$filebox_list=>$key,$fileInfo">
<!--@if(!$allow_multiple)--><a href="#" class="select"><!--@end--><img class="filebox_item" src="{$fileInfo->filename}" /><!--@if(!$allow_multiple)--></a><!--@end-->
<!--@if($allow_multiple)--><input class="select_checkbox" type="checkbox" name="{$fileInfo->filename}" id="{$fileInfo->filename}"><!--@end-->
<!--@foreach($fileInfo->attributes as $key => $value)-->
<p class="q">{$key} : {$value}</p>
<!--@end-->
</li>
<!--@if($allow_multiple)--><li><a href="#" class="select">Select</a></li><!--@end-->
</ul>
<div class="pagination" cond="$page_navigation">
<a href="#" class="direction" page="1">&laquo; FIRST</a>
<block cond="$page_navigation->first_page + $page_navigation->page_count > $page_navigation->last_page && $page_navigation->page_count != $page_navigation->total_page">
{@$isGoTo = true}
<a href="#" page="1">1</a>
<a href="#FileBoxGoTo" class="tgAnchor" title="{$lang->cmd_go_to_page}">...</a>
</block>
<block loop="$page_no = $page_navigation->getNextPage()">
{@$last_page = $page_no}
<strong cond="$page_no == $page">{$page_no}</strong>
<a cond="$page_no != $page" href="#" page="{$page_no}">{$page_no}</a>
</block>
<block cond="$last_page != $page_navigation->last_page">
{@$isGoTo = true}
<a href="#FileBoxGoTo" class="tgAnchor" title="{$lang->cmd_go_to_page}">...</a>
<a href="#" page="{$page_navigation->last_page}">{$page_navigation->last_page}</a>
</block>
<a href="#" page="{$page_navigation->last_page}" class="direction">LAST &raquo;</a>
<span cond="$isGoTo" id="FileBoxGoTo" class="tgContent">
<input name="page" title="{$lang->cmd_go_to_page}" />
<button>Go</button>
<table cond="$filebox_list" class="x_table x_table-striped x_table-hover">
<col cond="$allow_multiple" style="width:25px" />
<col style="width:250px" />
<col />
<col cond="!$allow_multiple" style="width:50px; white-space:nowrap" />
<tbody>
<tr loop="$filebox_list => $key, $val">
<td>
<!--@if($val->fileextension=='swf')-->
<object height="100" width="100" flashvars="" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" xmlns="http://www.w3.org/1999/xhtml">
<param value="{getUrl('')}{$val->filename}" name="movie" xmlns="http://www.w3.org/1999/xhtml" />
<param value="transparent" name="wmode" xmlns="http://www.w3.org/1999/xhtml" />
<param value="sameDomain" name="allowScriptAccess" xmlns="http://www.w3.org/1999/xhtml" />
<param value="high" name="quality" xmlns="http://www.w3.org/1999/xhtml" />
<embed height="100" width="100" wmode="transparent" flashvars="" autostart="false" src="{getUrl('')}{$val->filename}" xmlns="http://www.w3.org/1999/xhtml" />
</object>
<!--@elseif(in_array($val->fileextension,array('gif','png','jpg','jpeg')))-->
<img src="{getUrl('')}{$val->filename}" class="filebox_item" />
<!--@end-->
</td>
<td>
<p loop="$val->attributes => $name, $value">
{$name} : {$value}
</p>
</td>
<td cond="!$allow_multiple">
<button type="button" class="x_btn x_btn-mini select" style="white-space:nowrap">{$lang->cmd_select}</button>
</td>
</tr>
</tbody>
</table>
<div cond="$allow_multiple">
<span class="x_pull-right x_btn-group">
<button class="x_btn x_btn-mini select">{$lang->cmd_select}</button>
</span>
</div>
<div cond="$page_navigation" class="x_pagination x_pagination-centered">
<input type="hidden" name="module" value="{$module}" />
<input type="hidden" name="act" value="{$act}" />
<ul>
<li class="x_disabled"|cond="!$page || $page == 1"><a href="#" page="1">&laquo; {$lang->first_page}</a></li>
<block cond="$page_navigation->first_page != 1 && $page_navigation->first_page + $page_navigation->page_count > $page_navigation->last_page - 1 && $page_navigation->page_count != $page_navigation->total_page">
{@$isGoTo = true}
<li>
<a href="#goToFileBox" data-toggle="#goToFileBox" title="{$lang->cmd_go_to_page}">...</a>
<span cond="$isGoTo" id="goToFileBox" class="x_input-append">
<input type="number" min="1" max="{$page_navigation->last_page}" required name="page" title="{$lang->cmd_go_to_page}" />
<button type="submit" class="x_add-on">Go</button>
</span>
</li>
</block>
<!--@while($page_no = $page_navigation->getNextPage())-->
{@$last_page = $page_no}
<li class="x_active"|cond="$page_no == $page"><a href="#" page="{$page_no}">{$page_no}</a></li>
<!--@end-->
<block cond="$last_page != $page_navigation->last_page && $last_page + 1 != $page_navigation->last_page">
{@$isGoTo = true}
<li>
<a href="#goToFileBox" data-toggle="#goToFileBox" title="{$lang->cmd_go_to_page}">...</a>
<span cond="$isGoTo" id="goToFileBox" class="x_input-append">
<input type="number" min="1" max="{$page_navigation->last_page}" required name="page" title="{$lang->cmd_go_to_page}" />
<button type="submit" class="x_add-on">Go</button>
</span>
</li>
</block>
<li class="x_disabled"|cond="$page == $page_navigation->last_page"><a href="#" page="{$page_navigation->last_page}" title="{$page_navigation->last_page}">{$lang->last_page} &raquo;</a></li>
</ul>
</div>
<script>
jQuery('.pagination').xePagination();
jQuery('a.tgAnchor').xeContentToggler();
</script>

View file

@ -0,0 +1,23 @@
<block cond="$use_filebox">
<!--%load_js_plugin("filebox")-->
<style>
.filebox_item { border: 1px solid #ccc!important; padding: 5px; max-height: 200px; max-width: 200px; }
</style>
<div class="x_modal" id="modalFilebox">
<div class="x_modal-header">
<h3>FileBox</h3>
</div>
<div class="x_modal-body">
<div class="filebox_list"></div>
</div>
<div class="x_modal-footer">
<button type="button" class="x_btn x_pull-left" data-hide="#modalFileBox">{$lang->cmd_close}</button>
</div>
</div>
<script>
xe.lang.cmd_delete = '{$lang->cmd_delete}';
</script>
</block>

View file

@ -20,6 +20,6 @@
<h3 class="h3">{$lang->widget_code}</h3>
<p><textarea id="widget_code" rows="8" cols="42" style="width: 100%; height: 50px;" readonly="readonly"></textarea>
<include target="widget_generate_code.filebox.html" />
<include target="../../module/tpl/include.filebox.html" />
<include target="widget_generate_code.multilang.html" />
<include target="widget_generate_code.multilang.textarea.html" />

View file

@ -3,6 +3,7 @@
<load cond="$lang_type=='ko'" target="../../admin/tpl/css/admin_ko.css" usecdn="true" />
<load cond="$lang_type=='en'" target="../../admin/tpl/css/admin_en.css" usecdn="true" />
<load target="js/generate_code.js" usecdn="true" />
<load target="../../../common/css/bootstrap.min.css" index="1" usecdn="true" />
<script>
xe.lang.cmd_delete = '{$lang->cmd_delete}';
@ -57,7 +58,7 @@
</div>
</form>
<include target="widget_generate_code.filebox.html" />
<include target="../../module/tpl/include.filebox.html" />
<include target="widget_generate_code.multilang.html" />
<include target="widget_generate_code.multilang.textarea.html" />
</div>