First commit
This commit is contained in:
334
source/admincp/admincp_blockstyle.php
Normal file
334
source/admincp/admincp_blockstyle.php
Normal file
@@ -0,0 +1,334 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* [Discuz!] (C)2001-2099 Comsenz Inc.
|
||||
* This is NOT a freeware, use is subject to license terms
|
||||
*
|
||||
* $Id: admincp_blockstyle.php 32661 2013-02-28 06:29:46Z monkey $
|
||||
*/
|
||||
|
||||
if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
|
||||
exit('Access Denied');
|
||||
}
|
||||
|
||||
cpheader();
|
||||
$operation = in_array($operation, array('add', 'edit', 'delete')) ? $operation : 'list';
|
||||
|
||||
loadcache('blockclass');
|
||||
|
||||
shownav('portal', 'blockstyle');
|
||||
|
||||
if($operation=='add' || $operation=='edit') {
|
||||
|
||||
if($operation=='edit') {
|
||||
showsubmenu('blockstyle', array(
|
||||
array('list', 'blockstyle', 0),
|
||||
array('edit', 'blockstyle&operation=edit&blockclass='.$_GET['blockclass'].'&styleid='.$_GET['styleid'], 1)
|
||||
));
|
||||
} else {
|
||||
showsubmenu('blockstyle', array(
|
||||
array('list', 'blockstyle', 0),
|
||||
array('add', 'blockstyle&operation=add', 1)
|
||||
));
|
||||
}
|
||||
|
||||
include_once libfile('function/block');
|
||||
|
||||
if(empty($_GET['blockclass'])) {
|
||||
|
||||
$blockclass_sel = '<select name="blockclass">';
|
||||
$blockclass_sel .= '<option value="">'.cplang('blockstyle_blockclass_sel').'</option>';
|
||||
foreach($_G['cache']['blockclass'] as $key=>$value) {
|
||||
foreach($value['subs'] as $subkey=>$subvalue) {
|
||||
$blockclass_sel .= "<option value=\"$subkey\">{$subvalue['name']}</option>";
|
||||
}
|
||||
}
|
||||
$blockclass_sel .= '</select>';
|
||||
$adminscript = ADMINSCRIPT;
|
||||
$lang_blockclasssel = cplang('blockstyle_blockclass_sel');
|
||||
$lang_submit = cplang('submit');
|
||||
echo <<<BLOCKCLASSSEL
|
||||
<form method="get" autocomplete="off" action="$adminscript">
|
||||
<div style="margin-top:8px;">
|
||||
<table class="tb tb2 nobottom nobdb" cellspacing="3" cellpadding="3">
|
||||
<tr>
|
||||
<th class="td27">$lang_blockclasssel</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="vtop rowform">$blockclass_sel</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="vtop rowform">
|
||||
<input type="hidden" name="action" value="blockstyle" />
|
||||
<input type="hidden" name="operation" value="add" />
|
||||
<div class="fixsel"><input type="submit" value="$lang_submit" class="btn" /></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
BLOCKCLASSSEL;
|
||||
|
||||
} else {
|
||||
|
||||
showtips('blockstyle_add_tips');
|
||||
|
||||
if(submitcheck('stylesubmit')) {
|
||||
$arr = array(
|
||||
'name' => $_POST['name'],
|
||||
'blockclass' => $_GET['blockclass'],
|
||||
);
|
||||
$_POST['template'] = $_POST['template'];
|
||||
|
||||
include_once libfile('function/block');
|
||||
block_parse_template($_POST['template'], $arr);
|
||||
|
||||
if($_GET['styleid']) {
|
||||
$styleid = intval($_GET['styleid']);
|
||||
C::t('common_block_style')->update($styleid, $arr);
|
||||
require_once libfile('function/block');
|
||||
blockclass_cache();
|
||||
cpmsg('blockstyle_edit_succeed', 'action=blockstyle&operation=edit&blockclass='.$_GET['blockclass'].'&styleid='.$styleid.'&preview='.($_POST['preview']?'1':'0'), 'succeed');
|
||||
} else {
|
||||
$styleid = C::t('common_block_style')->insert($arr, true);
|
||||
$msg = 'blockstyle_create_succeed';
|
||||
require_once libfile('function/block');
|
||||
blockclass_cache();
|
||||
cpmsg('blockstyle_create_succeed', 'action=blockstyle&operation=edit&blockclass='.$_GET['blockclass'].'&styleid='.$styleid.'&preview='.($_POST['preview']?'1':'0'), 'succeed');
|
||||
}
|
||||
}
|
||||
|
||||
if($_GET['styleid']) {
|
||||
$_GET['styleid'] = intval($_GET['styleid']);
|
||||
include_once libfile('function/block');
|
||||
$thestyle = block_getstyle($_GET['styleid']);
|
||||
if(!$thestyle) {
|
||||
cpmsg('blockstyle_not_found!');
|
||||
}
|
||||
$thestyle['template'] = block_build_template($thestyle['template']);
|
||||
|
||||
$_GET['blockclass'] = $thestyle['blockclass'];
|
||||
} else {
|
||||
$_GET['styleid'] = 0;
|
||||
$thestyle = array(
|
||||
'template' => "<div class=\"module cl\">\n<ul>\n[loop]\n\t<li><a href=\"{url}\"{target}>{title}</a></li>\n[/loop]\n</ul>\n</div>"
|
||||
);
|
||||
}
|
||||
|
||||
$theclass = block_getclass($_GET['blockclass']);
|
||||
|
||||
if($preview) {
|
||||
echo '<h4 style="margin-bottom:15px;">'.lang('preview').'</h4>'.$preview;
|
||||
}
|
||||
|
||||
showformheader('blockstyle&operation='.$operation.'&blockclass='.$_GET['blockclass'].'&styleid='.$_GET['styleid']);
|
||||
showtableheader('', 'nobottom');
|
||||
if($_GET['styleid']) {
|
||||
showtitle('blockstyle_add_editstyle');
|
||||
} else {
|
||||
showtitle('blockstyle_add_addstyle');
|
||||
}
|
||||
showsetting('blockstyle_name', 'name', $thestyle['name'], 'text');
|
||||
showtablefooter();
|
||||
|
||||
$template = '';
|
||||
foreach($theclass['fields'] as $key=>$value) {
|
||||
if($value['name']) {
|
||||
$template .= $value['name']. ': <a href="###" onclick="insertunit($(\'jstemplate\'), \'{'.$key.'}\')">{'.$key.'}</a>';
|
||||
}
|
||||
}
|
||||
$template .= '<br />';
|
||||
$template .= cplang('blockstyle_add_loop').': <a href="###" onclick="insertunit($(\'jstemplate\'), \'[loop]\n\n[/loop]\')">[loop]...[/loop]</a>';
|
||||
$template .= cplang('blockstyle_add_order').': <a href="###" onclick="insertunit($(\'jstemplate\'), \'[order=N]\n\n[/order]\')">[order=N]...[/order]</a>';
|
||||
$template .= cplang('blockstyle_add_index').': <a href="###" onclick="insertunit($(\'jstemplate\'), \'[index=N]\n\n[/index]\')">[index=N]...[/index]</a>';
|
||||
$template .= cplang('blockstyle_add_urltitle').': <a href="###" onclick=\'insertunit($("jstemplate"), "<a href=\"{url}\"{target}>{title}</a>")\'><a href=...</a>';
|
||||
$template .= cplang('blockstyle_add_picthumb').': <a href="###" onclick=\'insertunit($("jstemplate"), "<img src=\"{pic}\" width=\"{picwidth}\" height=\"{picheight}\" />")\'><img src=...></a>';
|
||||
if(in_array($_GET['blockclass'], array('forum_thread', 'portal_article', 'group_thread'), true)) {
|
||||
$template .= cplang('blockstyle_add_moreurl').': <a href="###" onclick="insertunit($(\'jstemplate\'), \'{moreurl}\')">{moreurl}</a>';
|
||||
}
|
||||
$template .= cplang('blockstyle_add_currentorder').': <a href="###" onclick="insertunit($(\'jstemplate\'), \'{currentorder}\')">{currentorder}</a>';
|
||||
$template .= cplang('blockstyle_add_parity').': <a href="###" onclick="insertunit($(\'jstemplate\'), \'{parity}\')">{parity}</a>';
|
||||
$template .= '</div><br />';
|
||||
$template .= '<textarea cols="100" rows="5" id="jstemplate" name="template" style="width: 95%;" onkeyup="textareasize(this)" onkeydown="textareakey(this, event)">'.$thestyle['template'].'</textarea>';
|
||||
$template .= '<input type="hidden" name="preview" value="0" /><input type="hidden" name="stylesubmit" value="1" />';
|
||||
$template .= '<br /><!--input type="button" class="btn" onclick="this.form.preview=\'1\';this.form.submit()" value="'.$lang['preview'].'"> --><input type="submit" class="btn" style="margin-left: 0px;" value="'.$lang['submit'].'"></div>';
|
||||
echo '<div class="colorbox" style="padding-bottom: 10px;">';
|
||||
echo '<div class="extcredits">';
|
||||
echo $template;
|
||||
echo '</div>';
|
||||
|
||||
showformfooter();
|
||||
}
|
||||
|
||||
} elseif($operation=='delete') {
|
||||
|
||||
$_GET['styleid'] = intval($_GET['styleid']);
|
||||
$thestyle = C::t('common_block_style')->fetch($_GET['styleid']);
|
||||
if(empty($thestyle)) {
|
||||
cpmsg('blockstyle_not_found', 'action=blockstyle', 'error');
|
||||
}
|
||||
$styles = array();
|
||||
if(($styles = C::t('common_block_style')->fetch_all_by_blockclass($thestyle['blockclass']))) {
|
||||
unset($styles[$_GET['styleid']]);
|
||||
}
|
||||
if(empty($styles)) {
|
||||
cpmsg('blockstyle_should_be_kept', 'action=blockstyle', 'error');
|
||||
}
|
||||
|
||||
if(submitcheck('deletesubmit')) {
|
||||
$_POST['moveto'] = intval($_POST['moveto']);
|
||||
$newstyle = C::t('common_block_style')->fetch($_POST['moveto']);
|
||||
if($newstyle['blockclass'] != $thestyle['blockclass']) {
|
||||
cpmsg('blockstyle_blockclass_not_match', 'action=blockstyle', 'error');
|
||||
}
|
||||
C::t('common_block')->update_by_styleid($styleid, array('styleid' => $_POST['moveto']));
|
||||
C::t('common_block_style')->delete($_GET['styleid']);
|
||||
require_once libfile('function/block');
|
||||
blockclass_cache();
|
||||
cpmsg('blockstyle_delete_succeed', 'action=blockstyle', 'succeed');
|
||||
}
|
||||
|
||||
if(C::t('common_block')->fetch_by_styleid($_GET['styleid'])) {
|
||||
showtips('blockstyle_delete_tips');
|
||||
showformheader('blockstyle&operation=delete&styleid='.$_GET['styleid']);
|
||||
showtableheader();
|
||||
$movetoselect = '<select name="moveto">';
|
||||
foreach($styles as $key=>$value) {
|
||||
$movetoselect .= "<option value=\"$key\">{$value['name']}</option>";
|
||||
}
|
||||
$movetoselect .= '</select>';
|
||||
showsetting('blockstyle_moveto', '', '', $movetoselect);
|
||||
showsubmit('deletesubmit');
|
||||
showtablefooter();
|
||||
showformfooter();
|
||||
|
||||
} else {
|
||||
C::t('common_block_style')->delete($_GET['styleid']);
|
||||
require_once libfile('function/block');
|
||||
blockclass_cache();
|
||||
cpmsg('blockstyle_delete_succeed', 'action=blockstyle', 'succeed');
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
$_GET = $_GET + $_POST;
|
||||
$searchctrl = '<span style="float: right; padding-right: 40px;">'
|
||||
.'<a href="javascript:;" onclick="$(\'tb_search\').style.display=\'\';$(\'a_search_show\').style.display=\'none\';$(\'a_search_hide\').style.display=\'\';" id="a_search_show" style="display:none">'.cplang('show_search').'</a>'
|
||||
.'<a href="javascript:;" onclick="$(\'tb_search\').style.display=\'none\';$(\'a_search_show\').style.display=\'\';$(\'a_search_hide\').style.display=\'none\';" id="a_search_hide">'.cplang('hide_search').'</a>'
|
||||
.'</span>';
|
||||
showsubmenu('blockstyle', array(
|
||||
array('list', 'blockstyle', 1),
|
||||
array('add', 'blockstyle&operation=add', 0)
|
||||
), $searchctrl);
|
||||
|
||||
$mpurl = ADMINSCRIPT.'?action=blockstyle';
|
||||
$intkeys = array('styleid');
|
||||
$strkeys = array('blockclass');
|
||||
$randkeys = array();
|
||||
$likekeys = array('name', 'template');
|
||||
$results = getwheres($intkeys, $strkeys, $randkeys, $likekeys);
|
||||
foreach($likekeys as $k) {
|
||||
$_GET[$k] = dhtmlspecialchars($_GET[$k]);
|
||||
}
|
||||
$wherearr = $results['wherearr'];
|
||||
$mpurl .= '&'.implode('&', $results['urls']);
|
||||
|
||||
$wheresql = empty($wherearr)?'1':implode(' AND ', $wherearr);
|
||||
|
||||
$orders = getorders(array('blockclass'), 'styleid');
|
||||
$ordersql = $orders['sql'];
|
||||
if($orders['urls']) $mpurl .= '&'.implode('&', $orders['urls']);
|
||||
$orderby = array($_GET['orderby']=>' selected');
|
||||
$ordersc = array($_GET['ordersc']=>' selected');
|
||||
|
||||
$perpage = empty($_GET['perpage'])?0:intval($_GET['perpage']);
|
||||
if(!in_array($perpage, array(10,20,50,100))) $perpage = 20;
|
||||
$perpages = array($perpage=>' selected');
|
||||
$mpurl .= '&perpage='.$perpage;
|
||||
|
||||
$searchlang = array();
|
||||
$keys = array('search', 'likesupport', 'resultsort', 'defaultsort', 'orderdesc', 'orderasc', 'perpage_10', 'perpage_20', 'perpage_50', 'perpage_100',
|
||||
'blockstyle_id', 'blockstyle_name', 'blockstyle_blockclass', 'blockstyle_template');
|
||||
foreach ($keys as $key) {
|
||||
$searchlang[$key] = cplang($key);
|
||||
}
|
||||
$blockclass_sel = '<select name="blockclass">';
|
||||
$blockclass_sel .= '<option value="">'.cplang('blockstyle_blockclass_sel').'</option>';
|
||||
foreach($_G['cache']['blockclass'] as $key=>$value) {
|
||||
foreach($value['subs'] as $subkey=>$subvalue) {
|
||||
$selected = (!empty($_GET['blockclass']) && $subkey == $_GET['blockclass'] ? ' selected' : '');
|
||||
$blockclass_sel .= "<option value=\"$subkey\"$selected>{$subvalue['name']}</option>";
|
||||
}
|
||||
}
|
||||
$blockclass_sel .= '</select>';
|
||||
|
||||
$adminscript = ADMINSCRIPT;
|
||||
echo <<<SEARCH
|
||||
<form method="post" autocomplete="off" action="$adminscript" id="tb_search">
|
||||
<div class="dbox"><div class="boxbody">
|
||||
<table cellspacing="3" cellpadding="3" class="tb tb2">
|
||||
<tr>
|
||||
<th>{$searchlang['blockstyle_id']}</th><td><input type="text" class="txt" name="styleid" value="{$_GET['styleid']}"></td>
|
||||
<th>{$searchlang['blockstyle_name']}*</th><td><input type="text" class="txt" name="name" value="{$_GET['name']}">*{$searchlang['likesupport']}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$searchlang['blockstyle_blockclass']}</th><td>$blockclass_sel</td>
|
||||
<th>{$searchlang['blockstyle_template']}*</th><td><input type="text" name="template" value="{$_GET['template']}">*{$searchlang['likesupport']}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$searchlang['resultsort']}</th>
|
||||
<td colspan="3">
|
||||
<select name="orderby">
|
||||
<option value="styleid">{$searchlang['defaultsort']}</option>
|
||||
<option value="blockclass"{$orderby['blockclass']}>{$searchlang['blockstyle_blockclass']}</option>
|
||||
</select>
|
||||
<select name="ordersc">
|
||||
<option value="desc"{$ordersc['desc']}>{$searchlang['orderdesc']}</option>
|
||||
<option value="asc"{$ordersc['asc']}>{$searchlang['orderasc']}</option>
|
||||
</select>
|
||||
<select name="perpage">
|
||||
<option value="10"{$perpages[10]}>{$searchlang['perpage_10']}</option>
|
||||
<option value="20"{$perpages[20]}>{$searchlang['perpage_20']}</option>
|
||||
<option value="50"{$perpages[50]}>{$searchlang['perpage_50']}</option>
|
||||
<option value="100"{$perpages[100]}>{$searchlang['perpage_100']}</option>
|
||||
</select>
|
||||
<input type="hidden" name="action" value="blockstyle">
|
||||
<input type="submit" name="searchsubmit" value="{$searchlang['search']}" class="btn">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div></div>
|
||||
</form>
|
||||
SEARCH;
|
||||
|
||||
$start = ($page-1)*$perpage;
|
||||
|
||||
showformheader('blockstyle');
|
||||
showboxheader('blockstyle_list');
|
||||
showtableheader();
|
||||
showsubtitle(array('blockstyle_name', 'blockstyle_blockclass', 'operation'));
|
||||
|
||||
$multipage = '';
|
||||
if(($count = C::t('common_block_style')->count_by_where($wheresql))) {
|
||||
include_once libfile('function/block');
|
||||
foreach(C::t('common_block_style')->fetch_all_by_where($wheresql, $ordersql, $start, $perpage) as $value) {
|
||||
$theclass = block_getclass($value['blockclass']);
|
||||
list($c1, $c2) = explode('_', $value['blockclass']);
|
||||
showtablerow('', array('class=""', 'class=""', 'class="td28"'), array(
|
||||
$value['name'],
|
||||
$theclass['name'],
|
||||
"<a href=\"".ADMINSCRIPT."?action=blockstyle&operation=edit&blockclass={$value['blockclass']}&styleid={$value['styleid']}\">".cplang('blockstyle_edit')."</a> ".
|
||||
"<a href=\"".ADMINSCRIPT."?action=blockstyle&operation=delete&styleid={$value['styleid']}\">".cplang('blockstyle_delete')."</a>"
|
||||
));
|
||||
}
|
||||
$multipage = multi($count, $perpage, $page, $mpurl);
|
||||
}
|
||||
|
||||
showsubmit('', '', '', '', $multipage);
|
||||
showtablefooter();
|
||||
showboxfooter();
|
||||
showformfooter();
|
||||
|
||||
}
|
||||
|
||||
?>
|
Reference in New Issue
Block a user