#############################################
插件名稱:勳章中心
適用版本:discuz 5.5
原 作:【Discuz! Support Team】— 獨自流浪
作 者:Ro(qazxcdews88)
數據升級:需要添加一個字段
最後更新:2008-02-05 05:54
繁 化:Eric03
台灣繁化:Ro(qazxcdews88)
演 示:
http://www.h532.idv.tw/bbs/plugi ... module=medals_index (帳密皆為test)
功能說明:允許用戶前台瀏覽勳章信息 版主和超級版主可以前台頒發/收回勛章
備 注:本人將插件改得更人性化!
注意事項:1.有什麼問題請在本帖發表,pm者一律不接受
2.與本(AL8討論區)討論區所發的
http://www.alan888.com/Discuz/viewthread.php?tid=83648完全不同
#############################################
全新安裝開始:
一、升級數據庫cdb_medals,添加一個字段,用來做勳章介紹信息。
ALTER TABLE `cdb_medals` ADD `info` VARCHAR( 255 ) NOT NULL AFTER `name` ;
卸載的時候(安裝不用執行)
ALTER TABLE `cdb_medals` DROP `info`
二、打開include/cache.func.php文件,
查找:
$cols = 'medalid, name, image';
修改為:
$cols = 'medalid, name, info, image';
繼續查找:
$data[$medal['medalid']] = array('name' => $medal['name'], 'image' => $medal['image']);
修改為:
$data[$medal['medalid']] = array('name' => $medal['name'], 'info' => $medal['info'], 'image' => $medal['image']);
接著打開admin/misc.inc.php,查找:
if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
exit('Access Denied');
}
在下面添加函數:
function ifcheck($value, $name) {
if($value) {
global ${$name.'_Y'};
${$name.'_Y'} = 'checked';
} else {
global ${$name.'_N'};
${$name.'_N'} = 'checked';
}
}
繼續查找:
"<td class=\"altbg1\" width=\"48\"><input class=\"checkbox\" type=\"checkbox\" name=\"delete[]\" value=\"$medal[medalid]\"></td>\n".
"<td class=\"altbg2\"><input type=\"text\" size=\"30\" name=\"name[$medal[medalid]]\" value=\"$medal[name]\"></td>\n".
"<td class=\"altbg1\"><input class=\"checkbox\" type=\"checkbox\" name=\"available[$medal[medalid]]\" value=\"1\" $checkavailable></td>\n".
"<td class=\"altbg2\"><input type=\"text\" size=\"25\" name=\"image[$medal[medalid]]\" value=\"$medal[image]\">\n".
修改為:
"<td class=\"altbg1\" width=\"48\"><input class=\"checkbox\" type=\"checkbox\" name=\"delete[]\" value=\"$medal[medalid]\"></td>\n".
"<td class=\"altbg2\"><input type=\"text\" size=\"15\" name=\"name[$medal[medalid]]\" value=\"$medal[name]\"></td>\n".
"<td class=\"altbg1\"><input type=\"text\" size=\"30\" name=\"info[$medal[medalid]]\" value=\"$medal[info]\" maxlength=\"255\"></td>\n".
"<td class=\"altbg2\" width=\"48\"><input class=\"checkbox\" type=\"checkbox\" name=\"available[$medal[medalid]]\" value=\"1\" $checkavailable></td>\n".
"<td class=\"altbg1\"><input type=\"text\" size=\"15\" name=\"image[$medal[medalid]]\" value=\"$medal[image]\">\n".
繼續查找:
shownav('menu_misc_medals');
showtips('medals_tips');
下面添加:
//medal start
require_once(DISCUZ_ROOT.'./plugins/medals_center/md_config.php');
ifcheck($md_ifopen,'ifopen');
ifcheck($md_ifmsg,'ifmsg');
$medal_admins = array(1 => '管理員', 2 => '超級版主', 3 => '版主'); //管理組id 1:管理員 2:超級版主 3:版主
foreach($medal_admins as $key => $admin) {
$checked .= "<input type='checkbox' name='groups[]' value='$key' ".(strpos($md_groups,",$key,")!==false ? 'checked' : '').">$admin ";
} //medal end
繼續查找:
<td><input type="text" size="30" name="newname"></td>
<td><input class="checkbox" type="checkbox" name="availablenew" value="1"></td>
<td><input type="text" size="25" name="newimage"></td>
修改為:
<td><input type="text" size="15" name="newname"></td>
<td><input type="text" size="30" name="newinfo" maxlength="255"></td>
<td><input class="checkbox" type="checkbox" name="availablenew" value="1"></td>
<td><input type="text" size="15" name="newimage"></td>
繼續查找:
<td><?=$lang['name']?></td><td><?=$lang['available']?></td><td><?=$lang['medals_image']?></td></tr>
修改為:
<td><?=$lang['medals_name']?></td><td><?=$lang['medals_acquaint']?></td><td><?=$lang['available']?></td><td><?=$lang['medals_image']?></td></tr>
繼續查找:
<center><input class="button" type="submit" name="medalsubmit" value="<?=$lang['submit']?>"></center></form>
下面添加:
<!--{medal start}-->
<form action="admincp.php?action=medals" method="post">
<input type="hidden" name="formhash" value="<?=FORMHASH?>">
<input type=hidden name="step" value="config">
<table width="100%" align="center" border="0" cellpadding="0" cellspacing="0" class="tableborder">
<tr class="header"><td colspan="2">勳章插件管理</td></tr>
<tr>
<td width="30%">是否開啟勳章功能</td>
<td>
<input type="radio" value="1" name="config[md_ifopen]" <?=$ifopen_Y?>> 是
<input type="radio" value="0" name="config[md_ifopen]" <?=$ifopen_N?>> 否
</td>
</tr>
<tr>
<td>(頒發or摘除)勳章是否短消息通知用戶</td>
<td>
<input type="radio" value="1" name="config[md_ifmsg]" <?=$ifmsg_Y?>> 是
<input type="radio" value="0" name="config[md_ifmsg]" <?=$ifmsg_N?>> 否
</td>
</tr>
<tr>
<td>(頒發or摘除)勳章管理組權限安</td>
<td>
<?=$checked?>
</td>
</tr>
</table>
<br>
<center><input class="button" type="submit" name="medalsubmit" value="<?=$lang['submit']?>"></center>
</form>
<!--{medal end}-->
繼續查找:
$db->query("UPDATE {$tablepre}medals SET name=".($name[$id] ? '\''.dhtmlspecialchars($name[$id]).'\'' : 'name').", available='$available[$id]', image=".($image[$id] ? '\''.$image[$id].'\'' : 'image')." WHERE medalid='$id'");
修改為:
$db->query("UPDATE {$tablepre}medals SET name=".($name[$id] ? '\''.dhtmlspecialchars($name[$id]).'\'' : 'name').", info=".($info[$id] ? '\''.dhtmlspecialchars($info[$id]).'\'' : '\'\'').", available='$available[$id]', image=".($image[$id] ? '\''.$image[$id].'\'' : 'image')." WHERE medalid='$id'");
繼續查找:
$db->query("INSERT INTO {$tablepre}medals (name, available, image) VALUES ('".dhtmlspecialchars($newname)."', '$newavailable', '$newimage')");
修改為:
$db->query("INSERT INTO {$tablepre}medals (name, info, available, image) VALUES ('".dhtmlspecialchars($newname)."', '".dhtmlspecialchars($newinfo)."', '$newavailable', '$newimage')");
繼續查找:
if($newname != '' && $newimage != '') {
$db->query("INSERT INTO {$tablepre}medals (name, info, available, image) VALUES ('".dhtmlspecialchars($newname)."', '".dhtmlspecialchars($newinfo)."', '$newavailable', '$newimage')");
}
下面添加:
if($step == 'config') { //medal start
if(is_array($groups)){
$config['md_groups']=','.implode(',',$groups).',';
}else{
$config['md_groups']='';
}
$md_config = "<?php\n";
foreach($config as $key=>$value){
$md_config .= "\$$key = '$value';\n";
}
$md_config .= "?>";
$fp = @fopen(DISCUZ_ROOT.'./plugins/medals_center/md_config.php','w') or cpmsg('medal配置文件打開出錯,查看是否設置了0777權限', 'admincp.php?action=medals');
@fwrite($fp, $md_config) or cpmsg('medal配置文件寫入出錯,查看是否設置了0777權限', 'admincp.php?action=medals');
} //medal end
接著打開templates/default/admincp.lang.php,查找: (建議使用WordPad開啟,因為檔案太大開啟容易當機!)
查找:
下面添加:
'medals_name' => '勳章名稱',
'medals_acquaint' => '勳章介紹',
接著打開templates/default/actions.lang.php,查找: (在現動作,若已經有了再換其他號碼)
查找:
下面添加:
以上文件就是後台和緩存文件需要的修改了,到此代碼修改完畢,如果直接copy我的文件的話,那麼就動手了!
三、將附件解壓縮出來,按照路徑分別粘貼到相應的文件夾!
這裡介紹一下每個文件的用處
QUOTE:
-- plugins
-- medals_center
-- md_config.php 勳章中心 配置文件,修改的配置全部在這裡面,不要修改,因為是動態變化的!
-- medalcache.inc.php 用戶勛章信息緩存文件,用來生成用戶勛章的緩存信息,一般不需要動!
-- medals_index.inc.php 用戶前台調用文件,可以按照自己的頁面修改顯示的記錄數,我有漢字的注釋!
-- templates
-- default
-- medals_index.htm 模版文件,隨你修改,別修改的不能調用(一句老話,修改之前備份)
-- include
-- cache.func.php discuz的緩存文件,除非你很清醒的知道你在做什麼,負責請不要亂修改!
-- admin
-- misc.inc.php discuz後台文件,很多雜項都是在這個文件下修改的,除非你很清醒的知道你在做什麼,負責請不要亂修改!
-- discuz_plugin_medals_center.txt 裝過插件的人都知道,discuz的插件安裝需要導入這個文件,假如你動了它,出現問題概不負責!
四、後台導入插件discuz_plugin_medals_center.txt文檔。
五、更新緩存。這時候可以享受自己的勞動成果了!
六、 附件和圖片展示!
[
本帖最後由 qazxcdews88 於 2008-2-5 09:27 編輯 ]