• R/O
  • SSH
  • HTTPS

epitta-bbs: Commit


Commit MetaInfo

Revision25 (tree)
Time2011-07-08 20:36:36
Authorwajett

Log Message

2011/07/08 いろいろ追加。

Change Summary

Incremental Difference

--- app/actions/page_action.php (nonexistent)
+++ app/actions/page_action.php (revision 25)
@@ -0,0 +1,41 @@
1+<?php if ( ! defined('BASEPATH')) exit('Denied Access');
2+/**
3+ * Epitta BB
4+ *
5+ * @author Wajett
6+ * @copyright Copyright (c) 2011 - 2012, Wajett Systems
7+ *
8+ *
9+ */
10+
11+
12+
13+class Page_Action extends Base_Action {
14+
15+
16+ public function __construct()
17+ {
18+ parent::__construct();
19+
20+ }
21+
22+
23+
24+ public function notice()
25+ {
26+ //スキン
27+ $this->readSkin('notice');
28+ $this->content = getNoticeHtml();
29+
30+ $this->set['view'] = __FUNCTION__;
31+ $this->setLayout('base');
32+ return true;
33+
34+ }
35+
36+
37+
38+
39+}
40+
41+?>
\ No newline at end of file
--- app/actions/article_action.php (revision 24)
+++ app/actions/article_action.php (revision 25)
@@ -299,7 +299,6 @@
299299
300300
301301 //スキン
302- $this->readSkin('article'); //先行必須
303302 $this->readSkin('thread');
304303
305304 //var_dump($threads);
--- app/actions/search_action.php (revision 24)
+++ app/actions/search_action.php (revision 25)
@@ -48,9 +48,7 @@
4848
4949 public function result()
5050 {
51-
52-
53-
51+
5452 //
5553 $word = $this->getPost('word');
5654 $mode = $this->getPost('mode', 1);
@@ -94,16 +92,34 @@
9492 //スキン
9593 $this->readSkin('search');
9694
97- $myContent = getSearchResultHtml($articles, $this->baseSet);
95+ //コンテント
96+ $myContent = '';
97+ if ( $articles ) {
98+ $myContent .= getSearchedListHtml($articles);
9899
100+ } else {
101+ //
102+ $this->postSet['word'] = $_POST['word'];
103+ $this->postSet['mode'] = $_POST['mode'];
104+ $this->postSet['errMessage'] = $GLOBALS['LNG']['searchNoResult'];
105+ $this->postSet['errMsgAry'] = array();
106+ $this->input();
107+ return;
108+ }
99109 $this->content = $myContent;
100110
101111
112+ //$myContent = getSearchResultHtml($articles, $this->baseSet);
113+
114+ //$this->content = $myContent;
115+
116+
102117 $this->set['view'] = __FUNCTION__;
103118 $this->setLayout('base');
104119
105120 return true;
106121 }
122+
107123 }
108124
109125 ?>
\ No newline at end of file
--- app/actions/admin_action.php (nonexistent)
+++ app/actions/admin_action.php (revision 25)
@@ -0,0 +1,135 @@
1+<?php if ( !defined('ADMINIDTF') or !defined('BASEPATH') ) exit('Denied Access');
2+/**
3+ * Epitta BB
4+ *
5+ * @author Wajett
6+ * @copyright Copyright (c) 2011 - 2012, Wajett Systems
7+ *
8+ *
9+ */
10+
11+
12+
13+class Admin_Action extends Base_Action {
14+
15+
16+ public function __construct()
17+ {
18+ //管理者画面専用の設定
19+
20+
21+ $this->action = $GLOBALS['APP']['actStr'];
22+
23+ //セット
24+ $this->id = $GLOBALS['APP']['id'];
25+ $this->platform = $GLOBALS['APP']['platform'];
26+ $this->skin = $GLOBALS['APP']['skin'];
27+
28+ //platform
29+ if ( isset( $_POST['plfm']) ) {
30+ $this->platform = $_POST['plfm'];
31+ } else if ( isset( $_GET['plfm']) ) {
32+ $this->platform = $_GET['plfm'];
33+ }
34+
35+ //Set
36+ $this->baseSet['script'] = $_SERVER["SCRIPT_NAME"];
37+ $this->baseSet['id'] = $this->id;
38+ $this->baseSet['act'] = $this->action;
39+ $this->baseSet['plfm'] = $this->platform;
40+ $this->baseSet['skin'] = $this->skin;
41+
42+ //リンクURL
43+ $this->baseSet['linkBaseUrl'] = SCRIPTURL . "?";
44+ $query = '';
45+ if ( $this->id and $this->id != 'default' ) {
46+ $query = "id=" . $this->id;
47+ }
48+ if ( $this->platform and $this->platform != 'default' ) {
49+ if ( ! $query ) $query >= "&";
50+ $query .= "plfm=" . $this->platform;
51+ }
52+ $this->baseSet['linkBaseUrl'] .= $query;
53+
54+ //pubURL & dataURL
55+ if ( $this->id ) {
56+ $this->baseSet['pubURL'] = PUBURL ."/". $this->id;
57+ $this->baseSet['dataURL'] = DATAURL ."/". $this->id;
58+ } else {
59+ $this->baseSet['pubURL'] = PUBURL ."/default";
60+ $this->baseSet['dataURL'] = DATAURL ."/default";
61+ }
62+ $this->baseSet['dataCmn'] = DATAURL ."/common";
63+ $this->baseSet['pubCmn'] = PUBURL;
64+
65+ //スキンパス
66+ $this->skinPath = VIEWPATH . '/admin';
67+
68+ //スキンエレメント
69+ require_once( $this->skinPath . '/base_elements.php' );
70+
71+ }
72+
73+
74+ public function loginInput()
75+ {
76+
77+ $this->postSet['errMessage'] = '';
78+ $this->postSet['errMsgAry'] = null;
79+ $this->postSet['password'] = '';
80+
81+
82+ if ( $_POST ) {
83+
84+ if ( empty($_POST['password']) ) {
85+ $this->postSet['password'] = '';
86+ $this->postSet['errMessage'] = $GLOBALS['LNG']['adminAuthFailed'];
87+ $this->postSet['errMsgAry'][0] = '';
88+
89+
90+ } else {
91+
92+ //認証チェック
93+
94+ $brdMdl = $this->loadModel('Board');
95+ $admPass = $brdMdl->getAdminPass();
96+
97+ echo $admPass;
98+
99+ //TODO 管理者パスワード暗号化
100+
101+
102+ //
103+ $this->postSet['password'] = $_POST['password'];
104+
105+ //$this->postSet['errMessage'] = $GLOBALS['LNG']['postInvalid'];
106+ //$this->postSet['errMsgAry'][0] = $GLOBALS['LNG']['searchWordLess'];
107+
108+
109+ }
110+
111+
112+
113+
114+ }
115+
116+
117+ //スキン
118+ $this->readSkin('login');
119+ $this->content = getLoginHtml($this->baseSet, $this->postSet);
120+
121+ $this->set['view'] = 'login';
122+ $this->setLayout('admin');
123+ return true;
124+
125+ }
126+
127+
128+
129+
130+
131+
132+
133+}
134+
135+?>
\ No newline at end of file
--- app/actions/base_action.php (revision 24)
+++ app/actions/base_action.php (revision 25)
@@ -60,15 +60,16 @@
6060 }
6161 $this->baseSet['linkBaseUrl'] .= $query;
6262
63- //dataURL
63+ //pubURL & dataURL
6464 if ( $this->id ) {
65+ $this->baseSet['pubURL'] = PUBURL ."/". $this->id;
6566 $this->baseSet['dataURL'] = DATAURL ."/". $this->id;
6667 } else {
68+ $this->baseSet['pubURL'] = PUBURL ."/default";
6769 $this->baseSet['dataURL'] = DATAURL ."/default";
6870 }
69- $this->baseSet['pubURL'] = PUBURL;
71+ $this->baseSet['pubCmn'] = PUBURL;
7072
71-
7273 //スキンパス
7374 if ( $this->platform ) {
7475 $this->skinPath = VIEWPATH . '/' . $this->platform . '/' . $this->skin;
--- app/models/article_model.php (revision 24)
+++ app/models/article_model.php (revision 25)
@@ -351,8 +351,8 @@
351351 $sql = "SELECT * FROM epitta_articles "
352352 . " WHERE " . $where . " ORDER BY " . $order . " LIMIT " . $limit;
353353
354- echo $sql;
355- $rows = $this->getRecord($sql, true);
354+ //echo $sql;
355+ $rows = $this->getRecord($sql);
356356
357357 $this->closeConn();
358358
--- app/filters/late_filter.php (revision 24)
+++ app/filters/late_filter.php (revision 25)
@@ -17,57 +17,58 @@
1717
1818 }
1919
20- function set_platform() {
21-// ($^O eq 'MSWin32') && ($::FLAG{'mswin'} = 1);
22- if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
23- $GLOBALS['FLAG']['mswin'] = 1;
24- }
25-// $ENV{'HTTP_USER_AGENT'} =~ s/\s+/ /g;
26-// if (index($ENV{'HTTP_USER_AGENT'}, 'DoCoMo') == 0) {
27-// $::FLAG{'mobile'}{'imode'} = 1;
28-// }
29-// elsif (index($ENV{'HTTP_USER_AGENT'}, 'J-PHONE') == 0) {
30-// $::FLAG{'mobile'}{'jsky'} = 1;
31-// }
32-// elsif (index($ENV{'HTTP_USER_AGENT'},'KDDI') == 0) {
33-// $::FLAG{'mobile'}{'hdml'} = 1;
34-// }
35-// elsif (index($ENV{'HTTP_USER_AGENT'}, 'UP.Browser') == 0) {
36-// $::FLAG{'mobile'}{'hdml'} = 1;
37-// }
38-// elsif (index($ENV{'HTTP_USER_AGENT'}, 'ASTEL') == 0) {
39-// $::FLAG{'mobile'}{'astel'} = 1;
40-// }
41-// elsif (index($ENV{'HTTP_USER_AGENT'}, 'DDIPOCKET') != -1) {
42-// $::FLAG{'mobile'}{'imode'} = 1;
43-// }
44- if(strpos("/DoCoMo/",$_SERVER['HTTP_USER_AGENT']) !== false) {
45- $GLOBALS['mobile']['imode'] = 1;
46- }
47- elseif(strpos("/J-PHONE/",$_SERVER['HTTP_USER_AGENT'])) {
48- $GLOBALS['mobile']['jsky'] = 1;
49- }
50- elseif(strpos("/KDDI/",$_SERVER['HTTP_USER_AGENT'])) {
51- $GLOBALS['mobile']['hdml'] = 1;
52- }
53- elseif(strpos("/Vodafone/",$_SERVER['HTTP_USER_AGENT'])) {
54- $GLOBALS['mobile']['wap20'] = 1;
55- }
56- elseif(strpos("/UP.Browser/",$_SERVER['HTTP_USER_AGENT'])) {
57- $GLOBALS['mobile']['hdml'] = 1;
58- }
59- elseif(strpos("/ASTEL/",$_SERVER['HTTP_USER_AGENT'])) {
60- $GLOBALS['mobile']['astel'] = 1;
61- }
62- elseif(strpos("/DDIPOCKET/",$_SERVER['HTTP_USER_AGENT'])) {
63- $GLOBALS['mobile']['imode'] = 1;
64- }
65-// $::FLAG{'mobile'} && ($::FLAG{'mobile'}{'mode'} = 1);
66- if(!empty($GLOBALS['FLAG']['mobile']) && count($GLOBALS['FLAG']['mobile'])) {
67- $GLOBALS['FLAG']['mobile']['mode'] = 1;
68- }
69-// }
70- }
20+ function set_platform() {
21+
22+ // ($^O eq 'MSWin32') && ($::FLAG{'mswin'} = 1);
23+ if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
24+ $GLOBALS['FLAG']['mswin'] = 1;
25+ }
26+ // $ENV{'HTTP_USER_AGENT'} =~ s/\s+/ /g;
27+ // if (index($ENV{'HTTP_USER_AGENT'}, 'DoCoMo') == 0) {
28+ // $::FLAG{'mobile'}{'imode'} = 1;
29+ // }
30+ // elsif (index($ENV{'HTTP_USER_AGENT'}, 'J-PHONE') == 0) {
31+ // $::FLAG{'mobile'}{'jsky'} = 1;
32+ // }
33+ // elsif (index($ENV{'HTTP_USER_AGENT'},'KDDI') == 0) {
34+ // $::FLAG{'mobile'}{'hdml'} = 1;
35+ // }
36+ // elsif (index($ENV{'HTTP_USER_AGENT'}, 'UP.Browser') == 0) {
37+ // $::FLAG{'mobile'}{'hdml'} = 1;
38+ // }
39+ // elsif (index($ENV{'HTTP_USER_AGENT'}, 'ASTEL') == 0) {
40+ // $::FLAG{'mobile'}{'astel'} = 1;
41+ // }
42+ // elsif (index($ENV{'HTTP_USER_AGENT'}, 'DDIPOCKET') != -1) {
43+ // $::FLAG{'mobile'}{'imode'} = 1;
44+ // }
45+ if(strpos("/DoCoMo/",$_SERVER['HTTP_USER_AGENT']) !== false) {
46+ $GLOBALS['mobile']['imode'] = 1;
47+ }
48+ elseif(strpos("/J-PHONE/",$_SERVER['HTTP_USER_AGENT'])) {
49+ $GLOBALS['mobile']['jsky'] = 1;
50+ }
51+ elseif(strpos("/KDDI/",$_SERVER['HTTP_USER_AGENT'])) {
52+ $GLOBALS['mobile']['hdml'] = 1;
53+ }
54+ elseif(strpos("/Vodafone/",$_SERVER['HTTP_USER_AGENT'])) {
55+ $GLOBALS['mobile']['wap20'] = 1;
56+ }
57+ elseif(strpos("/UP.Browser/",$_SERVER['HTTP_USER_AGENT'])) {
58+ $GLOBALS['mobile']['hdml'] = 1;
59+ }
60+ elseif(strpos("/ASTEL/",$_SERVER['HTTP_USER_AGENT'])) {
61+ $GLOBALS['mobile']['astel'] = 1;
62+ }
63+ elseif(strpos("/DDIPOCKET/",$_SERVER['HTTP_USER_AGENT'])) {
64+ $GLOBALS['mobile']['imode'] = 1;
65+ }
66+ // $::FLAG{'mobile'} && ($::FLAG{'mobile'}{'mode'} = 1);
67+ if(!empty($GLOBALS['FLAG']['mobile']) && count($GLOBALS['FLAG']['mobile'])) {
68+ $GLOBALS['FLAG']['mobile']['mode'] = 1;
69+ }
70+ // }
71+ }
7172
7273 }
7374
--- app/filters/filter.php (revision 24)
+++ app/filters/filter.php (revision 25)
@@ -62,6 +62,13 @@
6262 // }
6363 }
6464
65+
66+
67+ function checkAdminLogon() {
68+
69+ //クッキーをチェック
70+
71+
72+ }
6573
66-
6774 ?>
\ No newline at end of file
--- app/app_controller.php (revision 24)
+++ app/app_controller.php (revision 25)
@@ -1,5 +1,9 @@
11 <?php if ( ! defined('BASEPATH')) exit('Denied Access');
2-
2+
3+/**
4+ * 通常用コントローラー
5+ *
6+ */
37 class App_Controller {
48
59 protected $ctrl = array();
@@ -8,7 +12,7 @@
812 public function __construct()
913 {
1014
11- //
15+ //for Debug
1216 if ( ENV == 'dev' ) {
1317 array_push( $GLOBALS['DBG'], "Mem=" . round((memory_get_usage()/(1024*1024) ),2) . "MB\n" );
1418 }
@@ -34,6 +38,8 @@
3438 //
3539 'srhipt' =>array( 'act'=>'Search', 'func'=>'input' ),
3640 'srhrst' =>array( 'act'=>'Search', 'func'=>'result' ),
41+ //
42+ 'ntce' =>array( 'act'=>'Page', 'func'=>'notice' ),
3743
3844 );
3945
@@ -86,16 +92,121 @@
8692
8793
8894
89- function __destruct() {
95+ function __destruct() {
9096
91- if ( ENV == 'dev' ) {
97+ if ( ENV == 'dev' ) {
98+ echo "<div>Now Developing!</div>\n";
9299 array_push( $GLOBALS['DBG'], "Mem=" . round((memory_get_usage()/(1024*1024) ),2) . "MB\n" );
93100 }
94101
95102 print_r( $GLOBALS['DBG']);
96103
97- }
104+ }
98105
99106 }
100-
107+
108+
109+
110+/**
111+ * 管理者用コントローラー
112+ *
113+ */
114+class AppAdmin_Controller {
115+
116+ protected $ctrl = array();
117+
118+
119+ public function __construct()
120+ {
121+
122+ //for Debug
123+ if ( ENV == 'dev' ) {
124+ array_push( $GLOBALS['DBG'], "Mem=" . round((memory_get_usage()/(1024*1024) ),2) . "MB\n" );
125+ }
126+
127+ $this->ctrl = array(
128+ //このモッサリ感はださいけど、Mod_Rwriteは利用者のハードルがあがる
129+
130+ //
131+ 'index' =>array( 'act'=>'Admin', 'func'=>'loginInput' ),
132+ 'login' =>array( 'act'=>'Admin', 'func'=>'loginInput' ),
133+ 'logout' =>array( 'act'=>'Admin', 'func'=>'logout' ),
134+ 'menu' =>array( 'act'=>'Admin', 'func'=>'menu' ),
135+
136+ 'cgfipt' =>array( 'act'=>'Admin', 'func'=>'configInput' ),
137+ 'cgfsv' =>array( 'act'=>'Admin', 'func'=>'cpmfogSave' ),
138+
139+ 'artlst' =>array( 'act'=>'Admin', 'func'=>'articleList' ),
140+ 'artedt' =>array( 'act'=>'Admin', 'func'=>'articleEdit' ),
141+ 'artsv' =>array( 'act'=>'Admin', 'func'=>'articleSave' ),
142+
143+ 'artlst' =>array( 'act'=>'Admin', 'func'=>'articleList' ),
144+ 'artedt' =>array( 'act'=>'Admin', 'func'=>'articleEdit' ),
145+ 'artsv' =>array( 'act'=>'Admin', 'func'=>'articleSave' ),
146+
147+ 'acs' =>array( 'act'=>'Admin', 'func'=>'access' ),
148+
149+ );
150+
151+ //
152+ $this->action();
153+
154+ }
155+
156+
157+ public function Action()
158+ {
159+
160+ //
161+ $act = 'index';
162+ if ( isset( $_POST['act'] ) ) {
163+ $act = $_POST['act'];
164+ } else if ( isset( $_GET['act'] ) ) {
165+ $act = $_GET['act'];
166+ }
167+ $GLOBALS['APP']['actStr'] = $act;
168+
169+ $actionSet = null;
170+ if ( isset( $this->ctrl[$act] ) ) {
171+ $actionSet = $this->ctrl[$act];
172+ } else {
173+ $actionSet = $this->ctrl['index'];
174+ }
175+
176+
177+ //読み込み
178+ require_once( APPPATH . '/actions/base_action.php' );
179+ require_once( APPPATH . '/actions/' . strtolower($actionSet['act']) . "_action.php" );
180+
181+ //echo $actionSet['act'];
182+
183+
184+ //インスタンス
185+ //$ins = new ReflectionClass( $actionSet['act'] );
186+ $className = $actionSet['act'] . '_Action';
187+ $ins = new $className();
188+
189+ //ファンクション
190+ $ins->$actionSet['func']();
191+ //$ret = ReflectionFunction::export( $actionSet['func']);
192+
193+ exit;
194+
195+
196+ }
197+
198+
199+
200+ function __destruct() {
201+
202+ if ( ENV == 'dev' ) {
203+ echo "<div>Now Developing!</div>\n";
204+ array_push( $GLOBALS['DBG'], "Mem=" . round((memory_get_usage()/(1024*1024) ),2) . "MB\n" );
205+ }
206+
207+ print_r( $GLOBALS['DBG']);
208+
209+ }
210+
211+}
101212 ?>
\ No newline at end of file
--- SetUpTools/create_sql.php (revision 24)
+++ SetUpTools/create_sql.php (revision 25)
@@ -31,6 +31,7 @@
3131 delete_mode INTEGER NOT NULL DEFAULT 1,
3232 edit_mode INTEGER NOT NULL DEFAULT 1,
3333 img_view INTEGER NOT NULL DEFAULT 0,
34+ new_days INTEGER NOT NULL DEFAULT 3,
3435
3536 clipfile INTEGER NOT NULL DEFAULT 1,
3637 clipfile_types TEXT DEFAULT 'jpeg,gif,png,txt,zip',
--- system/layouts/error.php (revision 24)
+++ system/layouts/error.php (revision 25)
@@ -14,7 +14,7 @@
1414 <!-- header -->
1515 <div style="background-color:#ffffcc;">
1616 ヘッダー
17-<?php echo $GLOBALS['CNF']['vw_header']; ?>
17+<?php echo ( ! empty($GLOBALS['CNF']['vw_header']) ) ? $GLOBALS['CNF']['vw_header'] : ''; ?>
1818 </div>
1919 <br clear="all" class="clear" />
2020 <!-- header -->
@@ -51,12 +51,11 @@
5151 <div style="background-color:#ffffcc;">
5252 <br />
5353 フッター
54-<?php echo $GLOBALS['CNF']['vw_footer']; ?>
54+<?php echo ( ! empty($GLOBALS['CNF']['vw_footer']) ) ? $GLOBALS['CNF']['vw_footer'] : ''; ?>
5555 </div>
5656 <!-- footer -->
5757
5858 <div class="appCount"></div>
59-<div class="appFoot"><?php echo EPTNAME . EPTVER; ?></div>
6059
6160 </div>
6261
--- system/epitta_config.php (revision 24)
+++ system/epitta_config.php (revision 25)
@@ -33,7 +33,7 @@
3333
3434 //DB
3535 define('COREDB', 'epitta.db');
36-define('DEFDB', 'def_12345678.db');
36+//define('DEFDB', 'def_12345678.db');
3737
3838
3939
--- system/epitta_core.php (revision 24)
+++ system/epitta_core.php (revision 25)
@@ -57,13 +57,21 @@
5757 $ltflt = new Late_Filter();
5858
5959
60- //アクション
61- require_once( APPPATH . '/app_config.php');
62- require_once( APPPATH . '/app_controller.php');
63- $acIns = new APP_Controller();
60+ //その他の設定
61+ require_once( APPPATH . '/app_config.php');
62+ //アクション
63+ require_once( APPPATH . '/app_controller.php');
64+ if ( ! defined('ADMINIDTF') ) {
65+ //通常
66+ $acIns = new App_Controller();
67+ } else {
68+ //管理用
69+ $acIns = new AppAdmin_Controller();
70+ }
6471
6572
6673
74+
6775 //@ob_end_flush();
6876
6977
@@ -112,7 +120,8 @@
112120 //コンフィグ読み込み
113121 $cmnMdl = new Common_model($GLOBALS['APP']['coreDbPath']);
114122 $result = $cmnMdl->readConfig($GLOBALS['APP']['id']);
115- if (!$result) trigger_error ('Unknown BB\'s id!');
123+ if (!$result) trigger_error ('Unknown BB\'s id!');
124+
116125 //配列へ
117126 $GLOBALS['CNF'] = $result;
118127 //var_dump($GLOBALS['CNF']);
--- system/locals/ja/wordlist.php (revision 24)
+++ system/locals/ja/wordlist.php (revision 25)
@@ -35,6 +35,7 @@
3535
3636 'post' => '投稿',
3737 'modify' => '編集',
38+'addMod' => '追記',
3839 'delete' => '削除',
3940
4041
@@ -55,15 +56,24 @@
5556 'submitKey' => '投稿キーワード',
5657 'submitButton' => ' 投 稿 ',
5758 'modifyButton' => ' 編 集 ',
59+'addModButton' => ' 追 記 ',
5860 'deleteButton' => ' 削 除 ',
5961 'deleteConfirm' => ' 削除確認 ',
6062
63+'branchShape0' => '  ',
64+'branchShape1' => '┣ ',
65+'branchShape2' => '┃ ',
66+'branchShape3' => '┗',
67+
68+
6169 'searchArticle' => '記事検索',
6270 'searchWord' => '検索単語',
6371 'searchMode' => '検索モード',
6472 'searchButton' => ' 検 索 ',
65-'searchInfo1' => '※複数の単語は半角スペースで区切ってください。',
73+'searchResult' => '検索結果',
74+'searchInfo1' => '※複数の単語は半角スペースで区切ってください。',
6675 'searchWordLess' => '検索単語は2文字以上で入力してください。',
76+'searchNoResult' => '該当する記事は見つかりませんでした。',
6777
6878 'responseTo' => '返信対象',
6979
@@ -91,6 +101,14 @@
91101 'failedFileSize' => '添付するファイルのサイズが制限を超えています。',
92102
93103
104+'adminAuth' => '管理者ログイン',
105+'adminLogout' => '管理者ログアウト',
106+'adminAuthButton' => '認 証',
107+'adminAuthFailed' => '認証できませんでした。',
108+'adminMenu' => '管理者メニュー',
109+'adminBoardList' => '掲示板一覧',
110+
111+
94112 );
95113
96114
--- epitta_admin.php (nonexistent)
+++ epitta_admin.php (revision 25)
@@ -0,0 +1,14 @@
1+<?php
2+/*
3+ * Epitta BB
4+ *
5+ */
6+
7+
8+define('ADMINIDTF', '1234ABCD');
9+define('BACKPATH', './epitta.php');
10+
11+require_once( BACKPATH );
12+
13+
14+?>
\ No newline at end of file
--- views/pc/default/list.php (revision 24)
+++ views/pc/default/list.php (revision 25)
@@ -16,5 +16,4 @@
1616 return $myContent;
1717 }
1818
19-
2019 ?>
\ No newline at end of file
--- views/pc/default/notice.php (nonexistent)
+++ views/pc/default/notice.php (revision 25)
@@ -0,0 +1,52 @@
1+<?php
2+function getNoticeHtml() {
3+ $myContent = '';
4+
5+$myContent .=<<< HTML
6+<div class="notice">
7+
8+<div style="text-align:center;">
9+<h2 class="noticeTitle">留意事項</h2>
10+
11+<div style="width:650px;text-align:left; margin:0px auto;">
12+
13+<div style="margin:40px 50px; font-size:14px; line-height:24px;">
14+ 法律や公序良俗に反する内容、犯罪にかかわる内容、罵詈雑言や誹謗中傷、差別的な表現などの投稿は禁止します。また個人情報に関わる内容は、削除する可能性があります。<br />
15+ 一般的な常識の範疇で投稿を行ってください。<br />
16+ 管理者は、掲示板利用者の不利益になると判断した記事を予告なく削除することがあります。また管理のために記事投稿者のIPアドレスなどの接続情報を開示する場合があります。<br />
17+<br />
18+ なお記事の削除など掲示板の管理についてのご質問には、お答えできない場合があります。<br />
19+ あらかじめご了承ください。<br />
20+
21+<div style="text-align:right;font-size:14px;">掲示板管理者</div>
22+</div>
23+
24+
25+
26+
27+<div style="margin:5px 50px;">
28+<strong>【詳細情報】</strong>
29+<ul style="line-height:24px;">
30+<li class="first">投稿者が自身の投稿記事を削除するには、投稿時にパスワードを設定しておく必要があります。</li>
31+<li class="first">投稿時の入力必須項目には、項目名にアスタリスク(*)マークが付記されています。</li>
32+<li class="first">管理者が設定する禁止用語を含む内容は、投稿できません。</li>
33+<li class="first">この掲示板には、投稿時間制限機能と、独自のスパムフィルターが実装されています。</li>
34+<li class="first">投稿日時より3日以内の記事に、新着マークを表示しています。</li>
35+</ul>
36+</div>
37+
38+<br />
39+<br />
40+<br />
41+
42+</div>
43+</div>
44+</div>
45+
46+HTML;
47+
48+ return $myContent;
49+}
50+
51+?>
52+
--- views/pc/default/article.php (revision 24)
+++ views/pc/default/article.php (revision 25)
@@ -3,6 +3,7 @@
33
44 function getArticleHtml($art, $baseSet, $artlSet, $indent=0, $prev=false){
55
6+ $new = makeNew($art['created_at'], $GLOBALS['CNF']['new_days'], $baseSet['pubURL']);
67 $email = makeEmail($art['email']);
78 $homepage = makeHomepage($art['homepage']);
89 $icon = makeIcon($art['iconfile'], $baseSet['pubURL'] . "/img/icon/");
@@ -18,7 +19,7 @@
1819 $article =<<< HTML
1920 <div style="margin-left:{$indent};">
2021 <div class="articleBoxOut">
21-<div class="articleTitleBox">{$art['tree_number']}:{$art['id']}:{$art['subject']}</div>
22+<div class="articleTitleBox">{$art['tree_number']}:{$art['id']}:{$art['subject']}&nbsp;{$new}</div>
2223 <div class="articleAuthorBox">
2324 <div class="articleAuthor">{$art['author']}</div>
2425 {$icon}
@@ -69,177 +70,6 @@
6970 }
7071
7172
72-function makeEmail($email) {
73- if (! $email) return '';
74-
75- $myContent = '';
76-
77-$myContent .=<<< HTML
78- <span class="mail"><a href="mailto:{$email}">[Email]</a></span>
79-HTML;
80-
81- return $myContent;
82-}
83-
84-
85-function makeHomepage($homepage) {
86- if (! $homepage) return '';
87-
88- $myContent = '';
89-
90-$myContent .=<<< HTML
91- <span class="home"><a href="{$homepage}">[Home]</a></span>
92-HTML;
93-
94- return $myContent;
95-}
96-
97-function makeIcon($iconfile, $pubURL) {
98- if (! $iconfile) return '';
99-
100- $myContent = '';
101-
102-$myContent .=<<< HTML
103- <div class="icon"><img src="{$pubURL}{$iconfile}" alt="アイコン" /></div>
104-HTML;
105-
106- return $myContent;
107-}
108-
109-function makeFtc($ftcolor) {
110- if (! $ftcolor) return '<span>';
111-
112- $myContent = '';
113-
114-$myContent .=<<< HTML
115- <span style="color:{$ftcolor};">
116-HTML;
117-
118- return $myContent;
119-}
120-
121-function makeClipFiles($artId, $clip1, $clip2, $clip3, $pubUrl, $dataUrl) {
122- if (! $clip1 and $clip2 and $clip3) return '';
123-
124- $myContent = '';
125- $dataUrl2 = $dataUrl . "/uploads/" . $artId . "_";
126-
127-$myContent .=<<< HTML
128- <div class="clipfiles">
129-HTML;
130-
131-if ( $clip1 ) {
132-$myContent .=<<< HTML
133- <span class="clip"><a href="{$dataUrl2}{$clip1}" target="_blank"><img src="{$pubUrl}/img/clip.gif"></a></span>
134-HTML;
135-}
136-if ( $clip2 ) {
137-$myContent .=<<< HTML
138- <span class="clip"><a href="{$dataUrl2}{$clip2}" target="_blank"><img src="{$pubUrl}/img/clip.gif"></a></span>
139-HTML;
140-}
141-if ( $clip3 ) {
142-$myContent .=<<< HTML
143- <span class="clip"><a href="{$dataUrl2}{$clip3}" target="_blank"><img src="{$pubUrl}/img/clip.gif"></a></span>
144-HTML;
145-}
146-
147-$myContent .=<<< HTML
148- </div>
149-HTML;
150-
151-
152- return $myContent;
153-}
154-
155-
156-function makeFileImages($mode, $artId, $clip1, $clip2, $clip3, $dataUrl) {
157- if (! $clip1 and $clip2 and $clip3) return '';
158- echo $mode;
159- if( empty($mode) ) return '';
160-
161- $dataUrl2 = $dataUrl . "/uploads/" . $artId . "_";
162- $myContent = '';
163-
164- //
165- $vh = loadHelper('viewHelper');
166-
167-
168-$myContent .=<<< HTML
169- <div class="imageFileView">
170-HTML;
171-
172-if ( $clip1 and $vh->isImage($dataUrl2.$clip1)!=false ) {
173-$myContent .=<<< HTML
174- <div class="clipImage"><img src="{$dataUrl2}{$clip1}"></div>
175-HTML;
176-}
177-
178-if ( $clip2 and $vh->isImage($dataUrl2.$clip2)!=false ) {
179-$myContent .=<<< HTML
180- <div class="clipImage"><img src="{$dataUrl2}{$clip2}"></div>
181-HTML;
182-}
183-
184-if ( $clip3 and $vh->isImage($dataUrl2.$clip3)!=false ) {
185-$myContent .=<<< HTML
186- <div class="clipImage"><img src="{$dataUrl2}{$clip3}"></div>
187-HTML;
188-}
189-
190-$myContent .=<<< HTML
191- </div>
192-HTML;
193-
194- return $myContent;
195-}
196-
197-
198-
199-
200-
201-function makeEditButton($articleId, $baseSet, $artlSet) {
202- if (! $articleId) return '';
203-
204- $myContent = '';
205-
206- if ( $artlSet['edit_mode'] < 1 and $artlSet['delete_mode'] < 1 ) return '';
207-
208- $action = 'modipt';
209- $btnName = '';
210- if ( $artlSet['edit_mode'] == 1 ) {
211- $btnName = '編集';
212-
213- } else if ( $artlSet['edit_mode'] == 2 ) {
214- $btnName = '追記';
215-
216- } else {
217-
218- if ( $artlSet['delete_mode'] == 1 ) {
219- $btnName = '削除';
220- $action = 'delipt';
221- }
222- }
223-
224-
225-if ( $btnName ) {
226-$myContent .=<<< HTML
227- <form method="post" action="{$baseSet['script']}" class="button edit">
228- <input type="hidden" name="id" value="{$baseSet['id']}" />
229- <input type="hidden" name="plfm" value="{$baseSet['plfm']}" />
230- <input type="hidden" name="article_id" value="$articleId" />
231- <input type="hidden" name="act" value="$action" />
232- <input type="submit" value="$btnName" class="button" />
233- </form>
234-HTML;
235-
236-}
237-
238- return $myContent;
239-}
240-
241-
242-
24373 function getThreadsArticleHtml($art, $baseSet, $artlSet, $indent=0){
24474
24575 $editBtn = makeEditButton($art['id'], $baseSet, $artlSet);
--- views/pc/default/search.php (nonexistent)
+++ views/pc/default/search.php (revision 25)
@@ -0,0 +1,78 @@
1+<?php
2+
3+
4+function getSearchInputHtml($baseSet, $postSet) {
5+
6+ $err = makeError($postSet['errMessage'], $postSet['errMsgAry']);
7+ $m1 = ( $postSet['mode'] == 1 ) ? 'checked' : '';
8+ $m2 = ( $postSet['mode'] == 2 ) ? 'checked' : '';
9+
10+ $myContent = '';
11+$myContent .=<<< HTML
12+
13+<div class="searchInput" style="text-align:center;">
14+
15+<div style="width:500px; border:1px solid #777; margin :10px auto;">
16+<form method="post" action="{$baseSet['script']}?act=srhrst" accept-charset="UTF-8">
17+
18+ <div class="searchTitle">{$GLOBALS['LNG']['searchArticle']}</div>
19+
20+ <div class="searchBody">
21+ {$err}
22+
23+ <div>
24+ <label for="searchWord">{$GLOBALS['LNG']['searchWord']}:</label>
25+ <input name="word" type="text" value="{$postSet['word']}" size="30" id="searchWord" />
26+ <div>{$GLOBALS['LNG']['searchInfo1']}</div>
27+ </div>
28+
29+ <div>
30+ <label for="searchMode">{$GLOBALS['LNG']['searchMode']}:</label>
31+ <input type="radio" name="mode" value="1" id="searchModeAnd" {$m1}/><label for="searchModeAnd">And</label>
32+ <input type="radio" name="mode" value="2" id="searchModeOr" {$m2}/><label for="searchModeOr">Or</label>
33+ </div>
34+
35+ </div>
36+
37+ <input type="submit" value="{$GLOBALS['LNG']['searchButton']}" />
38+
39+</form>
40+</div>
41+
42+</div>
43+
44+HTML;
45+
46+ return $myContent;
47+}
48+
49+
50+function getSearchedListHtml($articles) {
51+
52+ $myContent = '';
53+
54+$myContent .=<<< HTML
55+<div class="searchResultTitle">{$GLOBALS['LNG']['searchResult']}</div>
56+<div>\n
57+HTML;
58+
59+ foreach($articles as $key => $art) {
60+
61+$myContent .=<<< HTML
62+<div class="tree">
63+<div style="border:1px solid #678;">
64+ <a href="?act=trsgl&t={$art['tree_number']}">[{$art['id']}]</>:<a href="?act=sngl&a={$art['id']}" title="{$art['article']}">{$art['subject']}</a>&nbsp;{$art['author']}&nbsp;{$art['created_at']}
65+</div>
66+</div>\n
67+HTML;
68+ }
69+
70+$myContent .=<<< HTML
71+</div>
72+HTML;
73+
74+ return $myContent;
75+}
76+
77+
78+?>
\ No newline at end of file
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
--- views/pc/default/base_layout.php (revision 24)
+++ views/pc/default/base_layout.php (revision 25)
@@ -6,7 +6,7 @@
66 <meta http-equiv="content-style-type" content="text/css" />
77 <link rel="stylesheet" type="text/css" href="<?php echo $this->baseSet['dataURL']; ?>/base.css" />
88 <link rel="stylesheet" type="text/css" href="<?php echo $this->baseSet['dataURL']; ?>/overwrite.css" />
9-<script type="text/javascript" src="<?php echo $this->baseSet['pubURL']; ?>/js/common.js"></script>
9+<script type="text/javascript" src="<?php echo $this->baseSet['pubCmn']; ?>/js/common.js"></script>
1010 <title><?php echo $this->set['vw_title']; ?></title>
1111 </head>
1212 <body <?php echo $this->set['vw_body']; ?>>
--- views/pc/default/thread.php (revision 24)
+++ views/pc/default/thread.php (revision 25)
@@ -17,9 +17,11 @@
1717 $homepage = makeHomepage($art['homepage']);
1818 $icon = makeIcon($art['iconfile'], $baseSet['pubURL'] . "/img/icon/");
1919 $ftcspan = makeFtc($art['fontcolor']);
20- $clipfiles = makeClipFiles($art['clipfile1'], $art['clipfile2'], $art['clipfile3']);
21- $fileimages = makeFileImages( $artlSet['img_view'], $art['clipfile1'], $art['clipfile2'], $art['clipfile3']);
22- $editBtn = makeEditButton($baseSet['id'], $baseSet['plfm'], $art['id'], $artlSet['delete_mode'], $artlSet['edit_mode']);
20+ $clipfiles =
21+ makeClipFiles($art['id'], $art['clipfile1'], $art['clipfile2'], $art['clipfile3'], $baseSet['pubURL'], $baseSet['dataURL']);
22+ $fileimages =
23+ makeFileImages( $artlSet['img_view'], $art['id'], $art['clipfile1'], $art['clipfile2'], $art['clipfile3'], $baseSet['pubURL'], $baseSet['dataURL']);
24+ $editBtn = makeEditButton($art['id'], $baseSet, $artlSet );
2325
2426 $art['article'] = nl2br($art['article']);
2527
@@ -69,9 +71,11 @@
6971
7072 $email = makeEmail($art['email']);
7173 $homepage = makeHomepage($art['homepage']);
72- $clipfiles = makeClipFiles($art['clipfile1'], $art['clipfile2'], $art['clipfile3']);
73- $fileimages = makeFileImages( $artlSet['img_view'], $art['clipfile1'], $art['clipfile2'], $art['clipfile3']);
74- $editBtn = makeEditButton($baseSet['id'], $baseSet['plfm'], $art['id'], $artlSet['delete_mode'], $artlSet['edit_mode']);
74+ $clipfiles =
75+ makeClipFiles($art['id'], $art['clipfile1'], $art['clipfile2'], $art['clipfile3'], $baseSet['pubURL'], $baseSet['dataURL']);
76+ $fileimages =
77+ makeFileImages( $artlSet['img_view'], $art['id'], $art['clipfile1'], $art['clipfile2'], $art['clipfile3'], $baseSet['pubURL'], $baseSet['dataURL']);
78+ $editBtn = makeEditButton($art['id'], $baseSet, $artlSet );
7579
7680 $article =<<< HTML
7781 <div style="margin-left:{$indent};">
--- views/admin/menu.php (nonexistent)
+++ views/admin/menu.php (revision 25)
@@ -0,0 +1,36 @@
1+<?php
2+
3+
4+function getMenuHtml($baseSet, $postSet) {
5+
6+ $myContent = '';
7+$myContent .=<<< HTML
8+
9+<div class="searchInput" style="text-align:center;">
10+
11+<div style="width:500px; border:1px solid #777; margin :10px auto;">
12+
13+ <div class="adminMenuTitle">{$GLOBALS['LNG']['adminMenu']}</div>
14+
15+ <div class="searchBody">
16+
17+
18+
19+ <div>
20+
21+ </div>
22+
23+ </div>
24+
25+
26+</div>
27+
28+</div>
29+
30+HTML;
31+
32+ return $myContent;
33+}
34+
35+
36+?>
\ No newline at end of file
--- views/admin/admin_layout.php (nonexistent)
+++ views/admin/admin_layout.php (revision 25)
@@ -0,0 +1,51 @@
1+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2+<html lang="<?php echo LANG; ?>">
3+<head>
4+<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>" />
5+<meta http-equiv="content-script-type" content="text/javascript" />
6+<meta http-equiv="content-style-type" content="text/css" />
7+<link rel="stylesheet" type="text/css" href="<?php echo $this->baseSet['pubCmn']; ?>/common/css/base.css" />
8+<script type="text/javascript" src="<?php echo $this->baseSet['pubCmn']; ?>/js/common.js"></script>
9+<title>管理画面</title>
10+</head>
11+<body <?php echo $this->set['vw_body']; ?>>
12+
13+
14+<div class="container">
15+
16+<!-- header -->
17+<div style="background-color:#ffffcc;">
18+ヘッダー
19+
20+</div>
21+<br clear="all" class="clear" />
22+<!-- header -->
23+
24+
25+<div class="mainContentOuter">
26+<div class="mainContent <?php echo $this->set['view']; ?>View">
27+
28+<?php echo $this->content; ?>
29+
30+</div>
31+</div>
32+<div style="text-align:right;"><a href="">ログアウト</a></div>
33+
34+
35+<br clear="all" class="clear" />
36+
37+<!-- footer -->
38+<div style="background-color:#ffffcc;">
39+<br />
40+フッター
41+
42+</div>
43+<!-- footer -->
44+
45+<div class="appCount"></div>
46+<div class="appFoot"><?php echo $this->set['app_info']; ?></div>
47+
48+</div>
49+
50+</body>
51+</html>
\ No newline at end of file
--- views/admin/base_elements.php (nonexistent)
+++ views/admin/base_elements.php (revision 25)
@@ -0,0 +1,524 @@
1+<?php if ( ! defined('BASEPATH')) exit('Denied Access');
2+
3+
4+
5+function makeManubar(){
6+
7+
8+ $menuW = array();
9+ $menuL = array();
10+
11+ //ワード
12+ $menuW['viewTree'] = $GLOBALS['CNF']['tree_on'];
13+ $menuW['viewPlain'] = $GLOBALS['CNF']['plain_on'];
14+ $menuW['viewThread'] = $GLOBALS['CNF']['thread_on'];
15+ $menuW['viewTopic'] = $GLOBALS['CNF']['topic_on'];
16+ $menuW['viewList'] = $GLOBALS['CNF']['list_on'];
17+
18+ $menuW['viewTop'] = $GLOBALS['CNF']['top_on'];
19+ $menuW['viewNewpost'] = $GLOBALS['CNF']['newpost_on'];
20+ $menuW['viewSearch'] = $GLOBALS['CNF']['search_on'];
21+ $menuW['viewNotice'] = $GLOBALS['CNF']['notice_on'];
22+ $menuW['viewHome'] = $GLOBALS['CNF'];
23+
24+ //リンク
25+ if ( $GLOBALS['CNF']['topurl'] ) {
26+ $top = $GLOBALS['CNF']['topurl'] . "?";
27+ } else {
28+ $top = SCRIPTURL . "?";
29+ }
30+
31+ $setId = "";
32+ if ( $GLOBALS['APP']['id'] <> 'default' ) $setId = "id=" . $GLOBALS['APP']['id'] . "&";
33+
34+ $menuL['viewTree'] = $top . $setId . 'act=tree';
35+ $menuL['viewPlain'] = $top . $setId . 'act=plain';
36+ $menuL['viewThread'] = $top . $setId . 'act=thrd';
37+ $menuL['viewTopic'] = $top . $setId . 'act=topic';
38+ $menuL['viewList'] = $top . $setId . 'act=list';
39+
40+ $menuL['viewTop'] = $top;
41+ $menuL['viewNewpost'] = $top . $setId . 'act=crtipt';
42+ $menuL['viewSearch'] = $top . $setId . 'act=srhipt';
43+ $menuL['viewNotice'] = $top . $setId . 'act=ntce';
44+ $menuL['viewHome'] = $GLOBALS['CNF']['homepage'];
45+
46+
47+ asort( $menuW );
48+
49+ $myMenu = "";
50+ foreach( $menuW as $key => $val ) {
51+
52+ if ( $menuW['viewTree'] != 0 ) {
53+ //if( $myMenu <> "" ) $myMenu .= "&nbsp;";
54+ $myMenu .= '<div class="menuElement"><a href="' . $menuL[$key] . '">';
55+ $myMenu .= $GLOBALS['LNG'][$key];
56+ $myMenu .= "</a></div>";
57+ }
58+
59+
60+ }
61+ $myMenu = '<div class="menubar">' . $myMenu . '</div><br class="clear">';
62+
63+
64+ return $myMenu;
65+
66+}
67+
68+
69+function makePageGuide($page=1, $artSet, $baseSet){
70+
71+ $paging = makePaging($page, $artSet['unit'], $artSet['total'], $baseSet);
72+
73+$pager =<<< HTML
74+<div class="pager pageGuide">
75+$paging
76+</div>
77+
78+HTML;
79+
80+ return $pager;
81+
82+}
83+
84+function makePagenation($page=1, $artSet, $baseSet ){
85+
86+ $pager = "";
87+
88+$pager =<<< HTML
89+<div class="pager pagenation">
90+<form method="get" action="{$baseSet['script']}" class="pagenation">
91+<input name="id" type="hidden" value="{$baseSet['id']}" />
92+<input name="plfm" type="hidden" value="{$baseSet['plfm']}" />
93+<input name="act" type="hidden" value="{$baseSet['act']}" />
94+<input name="p" type="text" value="" size="2" class="ime_ia" style="width:30px;" />
95+<input type="submit" value="{$GLOBALS['LNG']['pageSetButton']}" />
96+</form>
97+&nbsp;&nbsp;
98+HTML;
99+
100+
101+ if ( ! is_numeric($artSet['unit']) or $artSet['unit'] == 0 or empty($artSet['total']) ) {
102+ $pager .= '</div>';
103+
104+ } else {
105+
106+ $paging = makePaging($page, $artSet['unit'], $artSet['total'], $baseSet);
107+
108+$pager .=<<< HTML
109+$paging
110+</div>
111+HTML;
112+
113+ }
114+
115+ return $pager;
116+
117+}
118+
119+function makePaging($page=1, $unit, $total, $baseSet){
120+
121+ $pager = "";
122+ $unitName = $GLOBALS['LNG']['articleUnitName'];
123+ $prevLink = $GLOBALS['LNG']['previous'];
124+ $nextLink = $GLOBALS['LNG']['next'];
125+
126+
127+ $url = '';
128+ //echo $total . '-' . $unit;
129+ $pages = ceil($total / $unit);
130+
131+
132+ $url = $baseSet['linkBaseUrl'] . '&act=' . $baseSet['act'] . '&p=' ;
133+ if ( $page > 0 and $page < $pages ) {
134+ $nextLink = '<a href="' .$url . ($page+1). '">' .$nextLink. '</a>';
135+ }
136+ if ( $page > 1 and $page <= $pages ) {
137+ $prevLink = '<a href="' . $url . ($page-1) . '">' .$prevLink. '</a>';
138+ }
139+
140+$pager =<<< HTML
141+$prevLink&nbsp;&nbsp;&nbsp;$unitName&nbsp;{$page}&nbsp;of&nbsp;<span class="pageTotal">{$pages}</span>&nbsp;&nbsp;&nbsp;$nextLink
142+HTML;
143+
144+
145+ return $pager;
146+
147+}
148+
149+
150+
151+
152+function makeNew($date, $newDays=3, $pubUrl) {
153+ if (! $date) return '';
154+
155+ $newSec = $newDays * 24 * 60 * 60;
156+ $diff = time() - strtotime($date);
157+ //echo $diff ."-" . $newSec;
158+ if ( $diff > $newSec ) return '';
159+
160+ $myContent = '';
161+$myContent .=<<< HTML
162+ <span class="new"><img src="{$pubUrl}/img/new_icon.gif" alt="new_icon.gif" class="newIcon" /></span>
163+HTML;
164+ return $myContent;
165+}
166+
167+function makeEmail($email) {
168+ if (! $email) return '';
169+
170+ $myContent = '';
171+
172+$myContent .=<<< HTML
173+ <span class="mail"><a href="mailto:{$email}">[Email]</a></span>
174+HTML;
175+
176+ return $myContent;
177+}
178+
179+function makeHomepage($homepage) {
180+ if (! $homepage) return '';
181+
182+ $myContent = '';
183+
184+$myContent .=<<< HTML
185+ <span class="home"><a href="{$homepage}" alt="home" target="_blank" class="homeLink">[Home]</a></span>
186+HTML;
187+
188+ return $myContent;
189+}
190+
191+function makeIcon($iconfile, $pubURL) {
192+ if (! $iconfile) return '';
193+
194+ $myContent = '';
195+
196+$myContent .=<<< HTML
197+ <div class="userIcon"><img src="{$pubURL}{$iconfile}" alt="icon" class="userIcon" /></div>
198+HTML;
199+
200+ return $myContent;
201+}
202+
203+function makeFtc($ftcolor) {
204+ if (! $ftcolor) return '<span>';
205+
206+ $myContent = '';
207+
208+$myContent .=<<< HTML
209+ <span style="color:{$ftcolor};">
210+HTML;
211+
212+ return $myContent;
213+}
214+
215+function makeClipFiles($artId, $clip1, $clip2, $clip3, $pubUrl, $dataUrl) {
216+ if (! $clip1 and $clip2 and $clip3) return '';
217+
218+ $myContent = '';
219+ $dataUrl2 = $dataUrl . "/uploads/" . $artId . "_";
220+
221+$myContent .=<<< HTML
222+ <div class="clipfiles">
223+HTML;
224+
225+if ( $clip1 ) {
226+$myContent .=<<< HTML
227+ <span class="clip"><a href="{$dataUrl2}{$clip1}" target="_blank"><img src="{$pubUrl}/img/clip_icon.gif"></a></span>
228+HTML;
229+}
230+if ( $clip2 ) {
231+$myContent .=<<< HTML
232+ <span class="clip"><a href="{$dataUrl2}{$clip2}" target="_blank"><img src="{$pubUrl}/img/clip.gif"></a></span>
233+HTML;
234+}
235+if ( $clip3 ) {
236+$myContent .=<<< HTML
237+ <span class="clip"><a href="{$dataUrl2}{$clip3}" target="_blank"><img src="{$pubUrl}/img/clip.gif"></a></span>
238+HTML;
239+}
240+
241+$myContent .=<<< HTML
242+ </div>
243+HTML;
244+
245+
246+ return $myContent;
247+}
248+
249+function makeFileImages($mode, $artId, $clip1, $clip2, $clip3, $dataUrl) {
250+ if (! $clip1 and $clip2 and $clip3) return '';
251+ //echo $mode;
252+ if( empty($mode) ) return '';
253+
254+ $dataUrl2 = $dataUrl . "/uploads/" . $artId . "_";
255+ $myContent = '';
256+
257+ //
258+ $vh = loadHelper('viewHelper');
259+
260+
261+$myContent .=<<< HTML
262+ <div class="imageFileView">
263+HTML;
264+
265+if ( $clip1 and $vh->isImage($dataUrl2.$clip1)!=false ) {
266+$myContent .=<<< HTML
267+ <div class="clipImage"><img src="{$dataUrl2}{$clip1}"></div>
268+HTML;
269+}
270+
271+if ( $clip2 and $vh->isImage($dataUrl2.$clip2)!=false ) {
272+$myContent .=<<< HTML
273+ <div class="clipImage"><img src="{$dataUrl2}{$clip2}"></div>
274+HTML;
275+}
276+
277+if ( $clip3 and $vh->isImage($dataUrl2.$clip3)!=false ) {
278+$myContent .=<<< HTML
279+ <div class="clipImage"><img src="{$dataUrl2}{$clip3}"></div>
280+HTML;
281+}
282+
283+$myContent .=<<< HTML
284+ </div>
285+HTML;
286+
287+ return $myContent;
288+}
289+
290+function makeEditButton($articleId, $baseSet, $artlSet) {
291+ if (! $articleId) return '';
292+
293+ $myContent = '';
294+
295+ if ( $artlSet['edit_mode'] < 1 and $artlSet['delete_mode'] < 1 ) return '';
296+
297+ $action = 'modipt';
298+ $btnName = '';
299+ if ( $artlSet['edit_mode'] == 1 ) {
300+ $btnName = $GLOBALS['LNG']['modify'];
301+
302+ } else if ( $artlSet['edit_mode'] == 2 ) {
303+ $btnName = $GLOBALS['LNG']['addMod'];
304+
305+ } else {
306+
307+ if ( $artlSet['delete_mode'] == 1 ) {
308+ $btnName = $GLOBALS['LNG']['delete'];
309+ $action = 'delipt';
310+ }
311+ }
312+
313+
314+if ( $btnName ) {
315+$myContent .=<<< HTML
316+ <form method="post" action="{$baseSet['script']}" class="button edit">
317+ <input type="hidden" name="id" value="{$baseSet['id']}" />
318+ <input type="hidden" name="plfm" value="{$baseSet['plfm']}" />
319+ <input type="hidden" name="article_id" value="$articleId" />
320+ <input type="hidden" name="act" value="$action" />
321+ <input type="submit" value="$btnName" class="button" />
322+ </form>
323+HTML;
324+
325+}
326+
327+ return $myContent;
328+}
329+
330+
331+
332+
333+function makeBranch($branches, $parent_id, $branchMap, &$depthBranch, $depth=1) {
334+
335+ $myContent = "";
336+ $myChild = "";
337+ $baseIndent = '&nbsp;';
338+ $depthEnd = false;
339+
340+ $shapes = array( 0=>$GLOBALS['LNG']['branchShape0'], 1=>$GLOBALS['LNG']['branchShape0'],
341+ 2=>$GLOBALS['LNG']['branchShape0'], 3=>$GLOBALS['LNG']['branchShape0'] );
342+
343+
344+ foreach($branches as $key => $row) {
345+
346+ //echo "[" . $parent_id . "-" . $row['parent_id'] . "]";
347+ if ( $parent_id == $row['parent_id'] ) {
348+
349+
350+ $map = $branchMap[$row['id']];
351+ $depthBranch[$depth] = $map['shape'];
352+
353+ $myChild = makeBranch($branches, $row['id'], $branchMap, $depthBranch, $depth + 1);
354+
355+ if ( $depth > 1 ) {
356+ #$myChild .= $depthBranch[$depth]-1;
357+ }
358+
359+ //exit;
360+
361+ $twig = "";
362+ $brc = "";
363+
364+ $depthEnd = false;
365+ for ( $d=1; $d<=$depth; $d++ ) {
366+ if ( $twig!="" ) $twig.=$baseIndent;
367+
368+ if ( $d < $depth ) {
369+ $brc = $depthBranch[$d];
370+ if ( $d < $depth and $brc == 1 ) {
371+ $brc = 2;
372+ }
373+
374+ } else {
375+ $brc = $branchMap[$row['id']]['shape'];
376+ //echo "ID=". $row['id'] . $branchMap[$row['id']]['shape'];
377+ }
378+
379+ if ( $brc<>3 ) {
380+ $twig .= $shapes[$brc];
381+
382+ } else {
383+
384+ if ( $d == $depth ) {
385+ $twig .= $shapes[$brc];
386+
387+ } else {
388+ $twig .= $shapes[0];
389+
390+ }
391+
392+
393+ }
394+
395+ }
396+
397+ #if ( $brc==3 ) $myContent . "end";
398+
399+ $myContent .= getBranchHtml($row, $twig, PUBURL); //ここはグローバル変数で
400+
401+ $myContent .= $myChild;
402+
403+
404+
405+ }
406+
407+ }
408+
409+ return $myContent;
410+
411+}
412+
413+function makeBranchArticle(&$branches, $parent_id, $depth=1, $baseSet, $artlSet) {
414+
415+ $myContent = "";
416+ $myChild = "";
417+ $baseIndent = 6;
418+
419+
420+ foreach($branches as $key => $row) {
421+
422+ //echo "[" . $parent_id . "-" . $row['parent_id'] . "]";
423+
424+ if ( $parent_id == $row['parent_id'] ) {
425+
426+ $myChild = makeBranchArticle($branches, $row['id'], $depth + 1, $baseSet, $artlSet);
427+
428+ $indent = $baseIndent * $depth;
429+
430+ $myContent .= getArticleHtml($row, $baseSet, $artlSet, $indent);
431+
432+ $myContent .= $myChild;
433+
434+ }
435+
436+ }
437+
438+ return $myContent;
439+
440+}
441+
442+function branchExtender($trees, $parentId, $treeNum ) {
443+
444+ $myBranch = array();
445+ foreach($trees as $art) {
446+ if ( $art['parent_id'] != 0 and $art['tree_number'] == $treeNum) {
447+ array_push( $myBranch, $art);
448+ }
449+ }
450+
451+ $map = array();
452+ branchSelector($myBranch, $map, $parentId, 0 );
453+
454+
455+ return $map;
456+}
457+
458+function branchSelector($branches, &$map, $parentId, $width=1, $depth=1, &$lastShape=0) {
459+
460+ $cnt = 1;
461+ $lastId = 0;
462+ $shape = 0;
463+ foreach($branches as $art) {
464+
465+ if ( $art['parent_id'] == $parentId ) {
466+
467+ if ( $lastShape <> 3 ) {
468+ $shape = 1;
469+ } else {
470+ $shape = 3;
471+ }
472+
473+ $map[$art['id']] = array( 'width'=>$width, 'depth'=>$depth, 'shape'=>$shape );
474+ branchSelector($branches, $map, $art['id'], $width+1, $depth+1 );
475+
476+ $lastId = $art['id'];
477+ $cnt += 1;
478+ }
479+
480+ }
481+ if ( $lastId > 0 ) {
482+ $map[$lastId]['shape'] = 3;
483+ }
484+
485+
486+}
487+
488+function makeError($msg, $msgAry) {
489+ if (! $msg) return '';
490+
491+ $myContent = '';
492+
493+$myContent .=<<< HTML
494+ <div class="ctr">
495+ <div class="mainError">{$msg}</div>
496+HTML;
497+
498+foreach ($msgAry as $emsg) {
499+$myContent .=<<< HTML
500+ <div class="itemError">$emsg</div>
501+HTML;
502+}
503+
504+$myContent .=<<< HTML
505+ </div>
506+HTML;
507+
508+ return $myContent;
509+}
510+
511+
512+
513+
514+/**
515+ * loadLibと同じ
516+ */
517+function loadHelper($className)
518+{
519+ require_once( APPPATH. "/libs/" . strtolower ($className). '.php' );
520+ return new $className();
521+}
522+
523+
524+?>
\ No newline at end of file
--- views/admin/login.php (nonexistent)
+++ views/admin/login.php (revision 25)
@@ -0,0 +1,40 @@
1+<?php
2+
3+
4+function getLoginHtml($baseSet, $postSet) {
5+
6+ $err = makeError($postSet['errMessage'], $postSet['errMsgAry']);
7+
8+ $myContent = '';
9+$myContent .=<<< HTML
10+
11+<div class="searchInput" style="text-align:center;">
12+
13+<div style="width:500px; border:1px solid #777; margin :10px auto;">
14+<form method="post" action="{$baseSet['script']}?act=login" accept-charset="UTF-8">
15+
16+ <div class="searchTitle">{$GLOBALS['LNG']['adminAuth']}</div>
17+ <br />
18+ <div class="searchBody">
19+ {$err}
20+ <div>
21+
22+ <input name="word" type="text" value="{$postSet['password']}" size="30" id="searchWord" />
23+ </div>
24+ <br />
25+ </div>
26+
27+ <input type="submit" value="{$GLOBALS['LNG']['searchButton']}" />
28+
29+</form>
30+</div>
31+
32+</div>
33+
34+HTML;
35+
36+ return $myContent;
37+}
38+
39+
40+?>
\ No newline at end of file
--- public/common/css/base.css (nonexistent)
+++ public/common/css/base.css (revision 25)
@@ -0,0 +1,245 @@
1+@charset "utf-8";
2+/*
3+Epitta BBS Style Sheet
4+システムによって自動生成されます。
5+変更はoverwrite.cssに行ってください。
6+
7+*/
8+
9+
10+body {
11+ color: #777777;
12+ font-size:14px;
13+ text-align: center;
14+}
15+
16+input, textarea, select, option, table, tr, th, td {
17+ font-size:14px;
18+}
19+
20+input.ime_ia {
21+ ime-mode: inactive;
22+}
23+
24+input.ime_ac, textarea.ime_ac, {
25+ ime-mode: active;
26+}
27+
28+
29+
30+div.container {
31+ width:840px;
32+ text-align: left;
33+ margin-left:auto;
34+ margin-right:auto;
35+ border:1px solid #666;
36+}
37+
38+
39+div.mainContentOuter {
40+ width:840px;
41+ text-align:center;
42+}
43+
44+div.mainContent {
45+ border: 1px solid black;
46+ width:96%;
47+ text-align:left;
48+ margin:5px auto 5px auto ;
49+
50+}
51+
52+br.clear, div.clear {
53+ font-size:0px;
54+ height:0px;
55+ visibility: hidden;
56+ clear:both;
57+}
58+
59+div.ctr, td.ctr {
60+ text-align:center;
61+}
62+
63+a {
64+ text-decoration: none;
65+}
66+
67+div.mainError {
68+ color:red;
69+ font-size:120%;
70+ font-weight:bold;
71+}
72+
73+div.itemError {
74+ color:red;
75+ display:inline;
76+ margin-right:20px;
77+}
78+
79+
80+
81+div.menubar {
82+ background-color:#ccddff;
83+ margin: 1px 1px;
84+ padding: 1px 4px;
85+ clear:both;
86+}
87+
88+div.menuElement {
89+ width:75px;
90+ float:left;
91+ text-align:center;
92+ border: 1px solid green;
93+}
94+
95+div.pager {
96+ font-size:12px;
97+}
98+
99+div.pager form, div.pager input, div.pager select {
100+ display:inline;
101+ font-size:11px;
102+}
103+
104+div.tree {
105+ padding-top:4px;
106+}
107+
108+
109+
110+div.threadChildren {
111+ margin-left:10px;
112+
113+}
114+
115+
116+div.articleBoxOut {
117+ border: 1px solid #555;
118+ width:750px;
119+ text-align:left;
120+}
121+
122+div.articleTitleBox {
123+ background-color:#555;
124+ color:#fff;
125+ width:100%;
126+}
127+
128+div.articleAuthorBox {
129+ float: left;
130+ border: 1px solid #ccc;
131+ padding: 3px 3px;
132+ width: 150px;
133+ word-break:break-all;
134+ word-wrap: break-word;
135+}
136+
137+div.articleTextBoxOut {
138+ float: left;
139+ border: 1px solid #ccc;
140+ width: 580px;
141+}
142+
143+div.articleCreate {
144+ font-size:80%;
145+ text-align:right;
146+}
147+
148+div.articleTextBox {
149+ border: 1px solid #cfc;
150+ margin: 5px 0px 5px 5px;
151+ line-height : 22px;
152+ word-break:break-all;
153+ word-wrap: break-word;
154+}
155+
156+div.threadFrame {
157+ border: 1px solid #06f;
158+
159+}
160+
161+
162+div.topicFrame table {
163+ width: 100%;
164+
165+}
166+
167+/* articleInput */
168+div.inputForm {
169+
170+}
171+
172+table.inputOuter {
173+ width:100%;
174+}
175+
176+div.inputForm form{
177+ margin:0px 0px;
178+ padding:0px 0px;
179+}
180+
181+div.inputForm input.rqd2 {
182+ background-color:#ff9;
183+}
184+
185+div.inputForm textarea.article {
186+
187+}
188+
189+
190+div.articleInput {
191+ width:660px;
192+ border:1px solid red;
193+ margin: 5px auto;
194+}
195+
196+div.preview {
197+ margin: 5px 0px 8px 0px;
198+}
199+div.previewTitle {
200+ margin-left:5%;
201+ text-align:left;
202+}
203+div.preview input.button {
204+ visibility: hidden;
205+}
206+
207+div.previewTitle, div.originTitle, div.responseToTitle {
208+ margin-left:5%;
209+ text-align:left;
210+}
211+
212+
213+div.origin {
214+ margin-top: 10px;
215+ margin-bottom: 10px;
216+}
217+
218+div.inputForm div.itemName {
219+ float:left;
220+ padding-top: 5px;
221+ text-align:right;
222+ width:120px;
223+ border:0px solid #999;
224+}
225+
226+div.inputForm div.itemInput {
227+ float:left;
228+ margin-bottom:4px;
229+ border:0px solid #999;
230+}
231+
232+
233+div.inputForm div.left1 {
234+ width:180px;
235+}
236+
237+
238+div.inputForm div.itemView {
239+ float:left;
240+ margin-top: 6px;
241+ width:250px;
242+ border:0px solid #999;
243+}
244+
245+
Show on old repository browser