2 * 表示データ作成用テンプレート(patTemplate)
\r
4 * LICENSE: This source file is licensed under the terms of the GNU General Public License.
\r
6 * @package Magic3 Framework
\r
7 * @author 平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
\r
8 * @copyright Copyright 2006-2013 Magic3 Project.
\r
9 * @license http://www.gnu.org/copyleft/gpl.html GPL License
\r
10 * @version SVN: $Id: editmenu.tmpl.html 5799 2013-03-05 23:08:56Z fishbone $
\r
11 * @link http://www.magic3.org
\r
13 <patTemplate:tmpl name="_widget">
\r
14 <script type="text/javascript">
\r
16 var widgetInfo = {WIDGET_INFO};
\r
17 var pageInfo = {PAGE_INFO};
\r
19 function configOthers(){
\r
20 document.main.task.value = 'editmenu_others';
\r
21 document.main.submit();
\r
24 function updateItem(){
\r
25 if (!window.confirm('{_LC_MSG_UPDATE}')) return false;
\r
28 var children = $('#menulist_assigned').children('.menulist_aitem');
\r
29 for (i = 0; i < children.length; i++){
\r
30 var child = $(children[i]);
\r
31 var type = child.children('.item_type').val();
\r
32 var sendParam = '<input type="hidden" name="items_type[' + i + ']" value="' + type + '" />';
\r
33 $('#main').append(sendParam);
\r
37 if (type == 'type_admin' || type == 'type_widget' || type == 'type_title'){
\r
38 name = child.find('.item_name').val();
\r
39 desc = child.find('.item_desc').val();
\r
41 sendParam = '<input type="hidden" name="items_name[' + i + ']" value="' + name + '" />';
\r
42 $('#main').append(sendParam);
\r
43 sendParam = '<input type="hidden" name="items_desc[' + i + ']" value="' + desc + '" />';
\r
44 $('#main').append(sendParam);
\r
48 if (type == 'type_admin' || type == 'type_widget'){
\r
49 option = child.find('.item_option').val();
\r
50 param = child.find('.item_param').val();
\r
52 sendParam = '<input type="hidden" name="items_option[' + i + ']" value="' + option + '" />';
\r
53 $('#main').append(sendParam);
\r
54 sendParam = '<input type="hidden" name="items_param[' + i + ']" value="' + param + '" />';
\r
55 $('#main').append(sendParam);
\r
58 document.main.act.value = 'update';
\r
59 document.main.submit();
\r
62 function selectAdminPage(){
\r
63 var i = document.main.item_adminpage.selectedIndex;
\r
64 $('#adminpage_desc').text(pageInfo[i].desc);
\r
66 function selectWidget(){
\r
67 var i = document.main.item_widget.selectedIndex;
\r
68 $('#widget_img').attr('src', widgetInfo[i].image);
\r
69 $('#widget_desc').text(widgetInfo[i].desc);
\r
71 function downloadFile(){
\r
72 document.upload.act.value = 'download';
\r
73 document.upload.submit();
\r
76 function uploadCheck(){
\r
77 if (!document.upload.upfile.value){
\r
78 alert('{_LC_MSG_UPLOAD_FILE_NOT_SELECTED}');
\r
81 document.upload.act.value = 'upload';
\r
82 if (window.confirm('{_LC_MSG_UPLOAD}')){
\r
83 document.upload.submit();
\r
88 var mInsertIndex = -1;
\r
89 var createMenuItem = function(type, option){
\r
92 var className = 'menulist_aitem';
\r
97 if (type == 'type_admin'){
\r
98 $('#item_adminpage option').each(function(i){
\r
99 if ($(this).val() == option){
\r
100 name = $(this).text();
\r
105 title = '{_LC_LABEL_ADMIN}[' + name + ']';
\r
106 className += ' menulist_subitem';
\r
107 if (index != -1) desc = pageInfo[index].desc;
\r
108 } else if (type == 'type_widget'){
\r
109 $('#item_widget option').each(function(i){
\r
110 if ($(this).val() == option){
\r
111 name = $(this).text();
\r
116 title = '{_LC_LABEL_WIDGET}[' + name + ']';
\r
117 className += ' menulist_subitem';
\r
118 if (index != -1) desc = widgetInfo[index].desc;
\r
120 var children = $('#menulist_available').children('.menulist_item');
\r
121 for (i = 0; i < children.length; i++){
\r
122 var child = $(children[i]);
\r
123 if (child.children('.item_type').val() == type){
\r
124 title = child.children('.menulist_item_head').text();
\r
128 if (type == 'type_title'){
\r
129 name = '{_LC_LABEL_UNTITLED}';
\r
132 if (type == 'type_admin' || type == 'type_widget'){
\r
133 bodyHtml += '<table border="0" cellpadding="2" cellspacing="1" width="95%">';
\r
134 bodyHtml += '<tr><td width="30">{_LC_LABEL_NAME}</td><td><input type="text" class="item_name" name="item_name" value="' + name + '" size="25" maxlength="40"></td>';
\r
135 bodyHtml += '<td width="55">{_LC_LABEL_OPTION}</td><td><input type="text" class="item_param" name="item_param" size="15" maxlength="30"></td></tr>';
\r
136 bodyHtml += '<tr><td>{_LC_LABEL_DESC}</td><td colspan="3"><textarea class="item_desc" style="width:100%" rows="1">' + desc + '</textarea></td></tr>';
\r
137 bodyHtml += '</table>';
\r
138 } else if (type == 'type_title'){
\r
139 bodyHtml += '<table border="0" cellpadding="2" cellspacing="1" width="95%">';
\r
140 bodyHtml += '<tr><td width="30">{_LC_LABEL_NAME}</td><td><input type="text" class="item_name" name="item_name" value="' + name + '" size="25" maxlength="40"></td></tr>';
\r
141 bodyHtml += '<tr><td>{_LC_LABEL_DESC}</td><td><textarea class="item_desc" style="width:100%" rows="1">' + desc + '</textarea></td></tr>';
\r
142 bodyHtml += '</table>';
\r
144 var itemHtml = '<div class="' + className + '">';
\r
145 itemHtml += '<input type="hidden" class="item_type" value="' + type + '" />';
\r
146 itemHtml += '<input type="hidden" class="item_option" value="' + option + '" />';
\r
147 itemHtml += '<div class="menulist_aitem_head">' + title + '</div>';
\r
148 itemHtml += '<div class="menulist_aitem_body">' + bodyHtml + '</div>';
\r
149 itemHtml += '</div>';
\r
150 var menuItem = $(itemHtml);
\r
153 menuItem.children('.menulist_aitem_head').append('<span class="options"><a class="menulist_aitem_close">close</a></span>');
\r
154 menuItem.find('a.menulist_aitem_close').bind('click', menuitemClose);
\r
157 var menuitemClose = function(){
\r
158 var menuItem = $(this).parents('.menulist_aitem');
\r
159 menuItem.fadeOut('slow', function(){
\r
163 // ウィジェットリストからのドラッグ処理
\r
164 var mouseInDrag = function(obj, e){
\r
165 var width = obj.width();
\r
166 var height = obj.height();
\r
167 var left = obj.offset().left;
\r
168 var top = obj.offset().top;
\r
170 if (left <= e.pageX && e.pageX <= left + width &&
\r
171 top <= e.pageY && e.pageY <= top + height){
\r
174 var children = obj.children('.menulist_aitem');
\r
176 for (var i = 0; i < children.length; i++){
\r
177 var child = $(children[i]);
\r
178 if (child.hasClass('menulist_spacer')){
\r
184 var insertPos = -1;
\r
187 for (i = 0; i < children.length; i++){
\r
188 var child = $(children[i]);
\r
189 var childLeft = child.offset().left;
\r
190 var childTop = child.offset().top;
\r
191 var childWidth = child.width();
\r
192 var childHeight = child.height();
\r
195 if (spacePos != -1){
\r
196 if (i == spacePos - 1){
\r
198 } else if (i == spacePos + 1){
\r
200 } else if (i == spacePos){
\r
201 if (childLeft <= e.pageX && e.pageX <= childLeft + childWidth &&
\r
202 childTop <= e.pageY && e.pageY <= childTop + childHeight){
\r
207 if (e.pageY < child.offset().top + childHeight / 2 + play){
\r
211 var spacing = true;
\r
212 if (spacePos == -1){
\r
215 if (insertPos < spacePos){
\r
218 if (insertPos == spacePos || insertPos == spacePos +1){
\r
226 $('.menulist_spacer').remove();
\r
228 children = obj.children('.menulist_aitem');
\r
230 var spacerHtml = '<div class="menulist_spacer" style="height:50px;border:0;"></div>';
\r
231 if (insertPos < children.length){
\r
232 $(children[insertPos]).before(spacerHtml);
\r
234 obj.append(spacerHtml);
\r
236 mInsertIndex = insertPos;
\r
243 $(document).ready(function(){
\r
244 var els = ['#menulist_assigned'];
\r
245 var $els = $(els.toString());
\r
248 $('div.menulist_aitem_head', $els).append('<span class="options"><a class="menulist_aitem_close">close</a></span>');
\r
249 $('a.menulist_aitem_close').bind('click', menuitemClose);
\r
253 handle: 'div.menulist_aitem_head',
\r
255 cursorAt: { top: 0, left: 0 },
\r
259 //placeholder: 'clone',
\r
260 //placeholder: 'placeholder',
\r
262 start: function(e,ui) {
\r
263 ui.helper.css("width", ui.item.width());
\r
266 $('div.menulist_item').draggable({
\r
267 cancel: '.menulist_item_body',
\r
270 cursorAt: { top: 0, left: 0 },
\r
273 start: function(e, ui){
\r
274 mSavedVal = $(this).find('.selectmenu').val();// ドラッグする対象の現在値
\r
275 ui.helper.css("width", $('.ui-draggable').width());
\r
277 drag: function(e, ui){
\r
278 var object = $('#menulist_assigned');
\r
279 if (object) mouseInDrag(object, e);
\r
281 // ドラッグ中の項目のSELECTメニューの選択項目を固定
\r
282 $('.ui-draggable-dragging').find('.selectmenu option').each(function(i){
\r
283 if ($(this).val() == mSavedVal){
\r
284 $(this).attr('selected', 'selected');
\r
289 stop: function(e, ui){
\r
290 $('.menulist_spacer').remove();
\r
291 if (mInsertIndex == -1) return;
\r
294 var itemType = $('.ui-draggable-dragging').children('.item_type').val();
\r
295 var obj = $('#menulist_assigned');
\r
296 var children = $('#menulist_assigned').children('.menulist_aitem');
\r
297 var menuItem = createMenuItem(itemType, mSavedVal);
\r
298 if (mInsertIndex < children.length){
\r
299 $(children[mInsertIndex]).before(menuItem);
\r
301 obj.append(menuItem);
\r
305 $('#menulist_assigned').droppable({
\r
306 accept: 'div.menulist_item',
\r
307 out: function(e, ui){
\r
308 $('.menulist_spacer').remove();
\r
309 mInsertIndex = -1;// ドロップキャンセル
\r
312 // 管理画面メニュー、ウィジェットメニュー初期化
\r
317 $(document).keyup(function(e){
\r
318 if (e.which == 27) location.href = '{TOP_URL}'; // ESCキー
\r
324 <div align="center">
\r
325 <!-- m3:ErrorMessage -->
\r
326 <table width="90%">
\r
327 <tr><td><label>{_LC_LABEL_EDIT_MENU}</label></td>
\r
328 <td align="right"><!--<span {_HELP_EDITMENU_CONFIG_OTHERS_BTN}><input type="button" class="button" onclick="configOthers();" value="{_LC_LABEL_OTHERS}" /></span>-->
\r
330 <tr><td colspan="2" align="center">
\r
332 <form method="post" name="main" id="main">
\r
333 <input type="hidden" name="act" />
\r
334 <input type="hidden" name="task" value="editmenu" />
\r
335 <table border="0" cellpadding="0" cellspacing="0">
\r
337 <div class="menulist_frame" style="width:330px;">
\r
338 <h1>{_LC_LABEL_MENU_ITEM}</h1>
\r
339 <div id="menulist_available" class="menulist_box">
\r
340 <patTemplate:tmpl name="menuavailablelist" type="condition" conditionvar="type">
\r
341 <pattemplate:sub condition="__default">
\r
342 <div class="menulist_item">
\r
343 <input type="hidden" class="item_type" value="{ITEM_TYPE}" />
\r
344 <div class="menulist_item_head">{NAME}</div>
\r
345 <div class="menulist_item_body">
\r
346 <table border="0" cellpadding="0" cellspacing="0">
\r
347 <tr><td>{DESC}</td></tr>
\r
352 <pattemplate:sub condition="admin_page">
\r
353 <div id="admin_page_item" class="menulist_item">
\r
354 <input type="hidden" class="item_type" value="{ITEM_TYPE}" />
\r
355 <div class="menulist_item_head">{NAME}</div>
\r
356 <div class="menulist_item_body">
\r
357 <table border="0" cellpadding="2" cellspacing="1">
\r
358 <tr><td>{DESC}</td></tr>
\r
359 <tr><td><patTemplate:link src="select_admin_page" /></td></tr>
\r
360 <tr><td><span id="adminpage_desc"></span></td></tr>
\r
365 <pattemplate:sub condition="widget">
\r
366 <div id="widget_item" class="menulist_item">
\r
367 <input type="hidden" class="item_type" value="{ITEM_TYPE}" />
\r
368 <div class="menulist_item_head">{NAME}</div>
\r
369 <div class="menulist_item_body">
\r
370 <table border="0" cellpadding="2" cellspacing="1">
\r
371 <tr><td colspan="2">{DESC}</td></tr>
\r
372 <tr><td colspan="2"><patTemplate:link src="select_widget" /></td></tr>
\r
373 <tr><td valign="top"><img id="widget_img" /></td><td><span id="widget_desc"></span></td></tr>
\r
378 </patTemplate:tmpl>
\r
381 </td><td width="50" align="center">
\r
382 <img src="{_ROOT_URL}/images/system/2rightarrow.png" />
\r
384 <div class="menulist_frame" style="width:500px;">
\r
385 <h1>{_LC_LABEL_CONFIGURED_MENU_ITEM}</h1>
\r
386 <div id="menulist_assigned" class="menulist_box_assigned">
\r
387 <patTemplate:tmpl name="menuassignedlist" type="condition" conditionvar="type">
\r
388 <pattemplate:sub condition="__default">
\r
389 <div class="menulist_aitem">
\r
390 <input type="hidden" class="item_type" value="{ITEM_TYPE}" />
\r
391 <div class="menulist_aitem_head">{TITLE}</div>
\r
392 <div class="menulist_aitem_body">{BODY}</div>
\r
395 <pattemplate:sub condition="subitem">
\r
396 <div class="menulist_aitem menulist_subitem">
\r
397 <input type="hidden" class="item_type" value="{ITEM_TYPE}" />
\r
398 <input type="hidden" class="item_option" value="{OPTION}" />
\r
399 <div class="menulist_aitem_head">{TITLE}</div>
\r
400 <div class="menulist_aitem_body">
\r
401 <table border="0" cellpadding="2" cellspacing="1" width="95%">
\r
402 <tr><td width="30">{LABEL_NAME}</td><td><input type="text" class="item_name" name="item_name" value="{NAME}" size="25" maxlength="40" /></td>
\r
403 <td width="55">{LABEL_OPTION}</td><td><input type="text" class="item_param" name="item_param" value="{PARAM}" size="15" maxlength="30" /></td></tr>
\r
404 <tr><td>{LABEL_DESC}</td><td colspan="3"><textarea class="item_desc" style="width:100%" rows="1">{DESC}</textarea></td></tr>
\r
409 <pattemplate:sub condition="title">
\r
410 <div class="menulist_aitem">
\r
411 <input type="hidden" class="item_type" value="{ITEM_TYPE}" />
\r
412 <div class="menulist_aitem_head">{TITLE}</div>
\r
413 <div class="menulist_aitem_body">
\r
414 <table border="0" cellpadding="2" cellspacing="1" width="95%">
\r
415 <tr><td width="30">{LABEL_NAME}</td><td><input type="text" class="item_name" name="item_name" value="{NAME}" size="25" maxlength="40" /></td></tr>
\r
416 <tr><td>{LABEL_DESC}</td><td><textarea class="item_desc" style="width:100%" rows="1">{DESC}</textarea></td></tr>
\r
421 </patTemplate:tmpl>
\r
426 <td colspan="3" align="right">
\r
427 <input type="button" class="button" onclick="updateItem();" value="{_LC_LABEL_UPDATE}" />
\r
435 <form enctype="multipart/form-data" method="post" name="upload">
\r
436 <input type="hidden" name="act" />
\r
437 <input type="hidden" name="task" value="editmenu" />
\r
438 <table class="simple-table">
\r
441 <td class="table-head">{_LC_LABEL_MENU_SCRIPT}</td>
\r
444 <td><input type="file" name="upfile" size="50" /><input type="button" class="button" onclick="uploadCheck();" value="{_LC_LABEL_UPLOAD}" /></td>
\r
448 <input type="button" class="button" onclick="downloadFile();" value="{_LC_LABEL_DOWNLOAD}" />
\r
457 </patTemplate:tmpl>
\r
459 <patTemplate:tmpl name="select_admin_page">
\r
460 <select id="item_adminpage" name="item_adminpage" class="selectmenu" onchange="selectAdminPage();">
\r
461 <patTemplate:tmpl name="admin_list">
\r
462 <option value="{VALUE}" {SELECTED}>{NAME}</option>
\r
463 </patTemplate:tmpl>
\r
465 </patTemplate:tmpl>
\r
467 <patTemplate:tmpl name="select_widget">
\r
468 <select id="item_widget" name="item_widget" class="selectmenu" onchange="selectWidget();">
\r
469 <patTemplate:tmpl name="widget_list">
\r
470 <option value="{VALUE}" {SELECTED}>{NAME}</option>
\r
471 </patTemplate:tmpl>
\r
473 </patTemplate:tmpl>
\r