123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328 |
- <?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 cellspacing="3" cellpadding="3">
- <tr>
- <th>$lang_blockclasssel</th><td>$blockclass_sel</td>
- </tr>
- <tr>
- <th> </th>
- <td>
- <input type="hidden" name="action" value="blockstyle" />
- <input type="hidden" name="operation" value="add" />
- <input type="submit" value="$lang_submit" class="btn" />
- </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/cache');
- updatecache('blockclass');
- 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/cache');
- updatecache('blockclass');
- 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();
- 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" value="'.$lang['submit'].'"></div><br /><br />';
- echo '<div class="colorbox">';
- 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']);
- updatecache('blockclass');
- 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']);
- updatecache('blockclass');
- 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 style="margin-top:8px;">
- <table cellspacing="3" cellpadding="3">
- <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>
- </form>
- SEARCH;
- $start = ($page-1)*$perpage;
- showformheader('blockstyle');
- showtableheader('blockstyle_list');
- 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();
- showformfooter();
- }
- ?>
|