⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 threadtypes.inc.php

📁 论坛代码网增加免费空间业务
💻 PHP
📖 第 1 页 / 共 3 页
字号:
				$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> &nbsp; ";
	}

	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>&nbsp;&nbsp;";
	}
	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 + -