📄 threadtypes.inc.php
字号:
$modelopt = $db->fetch_first("SELECT options, customoptions FROM {$tablepre}typemodels WHERE id='$modelid'");
if($modelopt['customoptions']) {
foreach(explode("\t", $modelopt['customoptions']) as $id) {
$addoption[$id] = $required[$id] = 0;
$available[$id] = 1;
}
}
if($modelopt['options']) {
foreach(explode("\t", $modelopt['options']) as $id) {
$addoption[$id] = $available[$id] = $required[$id] = 1;
}
}
}
$addoption = $addoption ? (array)$addoption + (array)$displayorder : (array)$displayorder;
@$newoptions = array_keys($addoption);
if(empty($addoption)) {
cpmsg('threadtype_infotypes_invalid', '', 'error');
}
@$delete = array_merge((array)$delete, array_diff($orgoptions, $newoptions));
if($delete) {
if($ids = implodeids($delete)) {
$db->query("DELETE FROM {$tablepre}typevars WHERE typeid='$typeid' AND optionid IN ($ids)");
}
foreach($delete as $id) {
unset($addoption[$id]);
}
}
if(is_array($addoption)) {
foreach($addoption as $id => $val) {
$db->query("INSERT INTO {$tablepre}typevars (typeid, optionid, available, required) VALUES ('$typeid', '$id', '1', '".intval($val)."')", 'SILENT');
$db->query("UPDATE {$tablepre}typevars SET displayorder='$displayorder[$id]', available='$available[$id]', required='$required[$id]', unchangeable='$unchangeable[$id]', search='$search[$id]' WHERE typeid='$typeid' AND optionid='$id'");
}
}
updatecache('threadtypes');
cpmsg('threadtype_infotypes_succeed', 'admincp.php?action=threadtypes&operation=typedetail&typeid='.$typeid, 'succeed');
} elseif(submitcheck('typepreviewsubmit')) {
header("Location: {$boardurl}admincp.php?action=threadtypes&operation=typedetail&typeid=$typeid#template");
}
}
} elseif($operation == 'typemodel') {
if(!submitcheck('modelsubmit')) {
$typemodels = '';
$query = $db->query("SELECT * FROM {$tablepre}typemodels ORDER BY displayorder");
while($model = $db->fetch_array($query)) {
$typemodels .= showtablerow('', array('class="td25"', 'class="td28 td23"', 'class="td24"'), array(
"<input class=\"checkbox\" type=\"checkbox\" name=\"delete[]\" value=\"$model[id]\" ".($model['type'] ? 'disabled' : '').">",
"<input type=\"text\" class=\"txt\" size=\"10\" name=\"displayorder[$model[id]]\" value=\"$model[displayorder]\">",
"<input type=\"text\" class=\"txt\" name=\"name[$model[id]]\" value=\"$model[name]\">",
"<a href=\"admincp.php?action=threadtypes&operation=modeldetail&modelid=$model[id]\" class=\"act\">$lang[detail]</a>"
), TRUE);
}
echo <<<EOT
<script type="text/JavaScript">
var rowtypedata = [
[
[1, '', 'td25'],
[1, '<input type="text" class="txt" size="10" name="newdisplayorder[]">', 'td28 td23'],
[1, '<input type="text" class="txt" name="newtitle[]">', 'td24'],
[1, '']
],
];
</script>
EOT;
shownav('forum', 'threadtype_models');
showsubmenu('threadtype_models', '');
showformheader('threadtypes&operation=typemodel');
showtableheader();
showsubtitle(array('', 'display_order', 'name', ''));
echo $typemodels;
echo '<tr><td></td><td colspan="3"><div><a href="###" onclick="addrow(this, 0)" class="addtr">'.$lang['threadtype_infotypes_add_model'].'</a></div></td></tr>';
showsubmit('modelsubmit', 'submit', 'del');
showtablefooter();
showformfooter();
} else {
if($ids = implodeids($delete)) {
$db->query("DELETE FROM {$tablepre}typemodels WHERE id IN ($ids)");
}
if(is_array($name)) {
foreach($name as $id => $val) {
$db->query("UPDATE {$tablepre}typemodels SET displayorder='$displayorder[$id]', name='$name[$id]' WHERE id='$id'");
}
}
if(is_array($newtitle)) {
foreach($newtitle as $key => $value) {
if($value) {
$db->query("INSERT INTO {$tablepre}typemodels (name, displayorder, type)
VALUES ('$value', '$newdisplayorder[$key]', '0')");
}
}
}
cpmsg('threadtype_infotypes_model_succeed', 'admincp.php?action=threadtypes&operation=typemodel', 'succeed');
}
} elseif($operation == 'modeldetail') {
if(!submitcheck('modeldetailsubmit')) {
$classoptions = $modeloption = $sysoption = $sysoptselect = '';
$query = $db->query("SELECT * FROM {$tablepre}typeoptions WHERE classid!='0' ORDER BY displayorder");
while($option = $db->fetch_array($query)) {
$classoptions .= "<option value=\"$option[optionid]\">$option[title]</option>";
}
$model = $db->fetch_first("SELECT * FROM {$tablepre}typemodels WHERE id='".intval($modelid)."'");
if(!$model) {
cpmsg('undefined_action', '', 'error');
}
$query = $db->query("SELECT * FROM {$tablepre}typeoptions WHERE optionid IN (".implodeids(explode("\t", $model['customoptions'])).")");
while($modelopt = $db->fetch_array($query)){
$modeloption .= "<option value=\"$modelopt[optionid]\">$modelopt[title]</option>";
}
if($model['type']) {
$query = $db->query("SELECT * FROM {$tablepre}typeoptions WHERE optionid IN (".implodeids(explode("\t", $model['options'])).")");
while($modelopt = $db->fetch_array($query)){
$sysoption .= "<option value=\"$modelopt[optionid]\">$modelopt[title]</option>";
}
$sysoptselect = '<select name="" size="10" multiple="multiple">'.$sysoption.'</select>';
}
$optselect = '<select name="" size="10" multiple="multiple" id="coptselect">'.$classoptions.'</select>';
$hoptselect = '<select name="customoptions[]" size="10" multiple="multiple" id="moptselect">'.$modeloption.'</select>';
echo <<<EOT
<script type="text/JavaScript">
function copyoption(s1, s2) {
var s1 = $(s1);
var s2 = $(s2);
var len = s1.options.length;
for(var i=0; i<len; i++) {
op = s1.options[i];
if(op.selected == true && !optionexists(s2, op.value)) {
o = op.cloneNode(true);
s2.appendChild(o);
}
}
}
function optionexists(s1, value) {
var len = s1.options.length;
for(var i=0; i<len; i++) {
if(s1.options[i].value == value) {
return true;
}
}
return false;
}
function removeoption(s1) {
var s1 = $(s1);
var len = s1.options.length;
for(var i=s1.options.length - 1; i>-1; i--) {
op = s1.options[i];
if(op.selected && op.selected == true) {
s1.removeChild(op);
}
}
return false;
}
function selectalloption(s1) {
var s1 = $(s1);
var len = s1.options.length;
for(var i=s1.options.length - 1; i>-1; i--) {
op = s1.options[i];
op.selected = true;
}
}
</script>
EOT;
showsubmenu('threadtype_models_option_setting');
showformheader("threadtypes&operation=modeldetail&modelid=$modelid", 'onsubmit="selectalloption(\'moptselect\');"');
showtableheader();
showsetting('name', 'namenew', $model['name'], 'text');
if($model['type']) {
showsetting('threadtype_models_option_model', '', '', $sysoptselect);
}
showsetting('threadtype_models_option_user', '', '', $hoptselect.'<br /><a href="###" onclick="removeoption(\'moptselect\')">['.$lang['del'].']</a>');
showsetting('threadtype_models_option_system', '', '', $optselect.'<br /><a href="###" onclick="copyoption(\'coptselect\', \'moptselect\')">['.$lang['threadtype_models_option_copy'].']</a>');
showsubmit('modeldetailsubmit');
showtablefooter();
showformfooter();
} else {
$customoptionsnew = $customoptions && is_array($customoptions) ? implode("\t", $customoptions) : '';
$db->query("UPDATE {$tablepre}typemodels SET name='$namenew', customoptions='$customoptionsnew' WHERE id='$modelid'");
cpmsg('threadtype_infotypes_model_succeed', 'admincp.php?action=threadtypes&operation=modeldetail&modelid='.$modelid, 'succeed');
}
} elseif($operation == 'classlist') {
$classoptions = '';
$classidarray = array();
!$classid && $classid = 0;
$query = $db->query("SELECT optionid, title FROM {$tablepre}typeoptions WHERE classid='$classid' ORDER BY displayorder");
while($option = $db->fetch_array($query)) {
$classidarray[] = $option['optionid'];
$classoptions .= "<a href=\"#ol\" onclick=\"ajaxget('admincp.php?action=threadtypes&operation=optionlist&typeid=$typeid&classid=$option[optionid]', 'optionlist', 'optionlist', 'Loading...', '', checkedbox)\">$option[title]</a> ";
}
include template('header');
echo $classoptions;
include template('footer');
exit;
} elseif($operation == 'optionlist') {
if(!$classid) {
$classid = $db->result_first("SELECT optionid FROM {$tablepre}typeoptions WHERE classid='0' ORDER BY displayorder LIMIT 1");
}
$query = $db->query("SELECT optionid FROM {$tablepre}typevars WHERE typeid='$typeid'");
$option = $options = array();
while($option = $db->fetch_array($query)) {
$options[] = $option['optionid'];
}
$optionlist = '';
$query = $db->query("SELECT * FROM {$tablepre}typeoptions WHERE classid='$classid' ORDER BY displayorder");
while($option = $db->fetch_array($query)) {
$optionlist .= "<input ".(in_array($option['optionid'], $options) ? ' checked="checked" ' : '')."class=\"checkbox\" type=\"checkbox\" name=\"typeselect[]\" id=\"typeselect_$option[optionid]\" value=\"$option[optionid]\" onclick=\"insertoption(this.value);\" /><label for=\"typeselect_$option[optionid]\">".dhtmlspecialchars($option['title'])."</label> ";
}
include template('header');
echo $optionlist;
include template('footer');
exit;
} elseif($operation == 'typelist') {
$option = $db->fetch_first("SELECT * FROM {$tablepre}typeoptions WHERE optionid='$optionid' LIMIT 1");
include template('header');
$option['type'] = $lang['threadtype_edit_vars_type_'. $option['type']];
$option['available'] = 1;
showtablerow('', array('class="td25"', 'class="td28 td23"'), array(
"<input class=\"checkbox\" type=\"checkbox\" name=\"delete[]\" value=\"$option[optionid]\" ".($option['model'] ? 'disabled' : '').">",
"<input type=\"text\" class=\"txt\" size=\"2\" name=\"displayorder[$option[optionid]]\" value=\"$option[displayorder]\">",
"<input class=\"checkbox\" type=\"checkbox\" name=\"available[$option[optionid]]\" value=\"1\" ".($option['available'] ? 'checked' : '')." ".($option['model'] ? 'disabled' : '').">",
dhtmlspecialchars($option['title']),
$option[type],
"<input class=\"checkbox\" type=\"checkbox\" name=\"required[$option[optionid]]\" value=\"1\" ".($option['required'] ? 'checked' : '')." ".($option['model'] ? 'disabled' : '').">",
"<input class=\"checkbox\" type=\"checkbox\" name=\"unchangeable[$option[optionid]]\" value=\"1\" ".($option['unchangeable'] ? 'checked' : '').">",
"<input class=\"checkbox\" type=\"checkbox\" name=\"search[$option[optionid]]\" value=\"1\" ".($option['search'] ? 'checked' : '').">",
"<a href=\"###\" onclick=\"insertvar('$option[identifier]');doane(event);return false;\" class=\"act\">".$lang['threadtype_infotypes_add_template']."</a>",
"<a href=\"admincp.php?action=threadtypes&operation=optiondetail&optionid=$option[optionid]\" class=\"act\">".$lang['edit']."</a>"
));
include template('footer');
exit;
}
function showoption($var, $type) {
global $optiontitle, $lang;
if($optiontitle[$var]) {
$optiontitle[$var] = $type == 'title' ? $optiontitle[$var] : $optiontitle[$var].$lang['value'];
return $optiontitle[$var];
} else {
return "!$var!";
}
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -