Skip to content

Commit 9aaa2c6

Browse files
committed
sysop panel improvements & messages truncation support
1 parent eebb769 commit 9aaa2c6

File tree

3 files changed

+27
-11
lines changed

3 files changed

+27
-11
lines changed

iiweb.inc.php

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,16 @@
88
session_start();
99

1010
//поддержка ссылок и разметки
11-
function reparse($string) {
11+
function reparse($string, $truncate=false, &$truncate_flag) {
1212
global $access;
13+
1314
$pre_flag = false;
1415
$string = explode ("\n", $string);
16+
if ($truncate && count($string) > $truncate) {
17+
$string = array_slice($string, 0, $truncate);
18+
$truncate_flag = true;
19+
} else $truncate_flag = false;
20+
1521
for ($i = 0; $i < count ($string); ++$i) {
1622
$string[$i] = preg_replace("/([^\w\/])(www\.[a-z0-9\-]+\.[a-z0-9\-]+)/i", "$1http://$2",$string[$i]);
1723
$string[$i] = preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","<a target=\"_blank\" href=\"$1\">$1</a>",$string[$i]);
@@ -39,6 +45,7 @@ function reparse($string) {
3945
$string[$i]=preg_replace("/(^|\s+)(PS|P\.S|ЗЫ|З\.Ы|\/\/|#).+$/i", "<span class='comment'>\\0</span>", $string[$i]);
4046
}
4147
}
48+
if ($pre_flag) $string[count($string) - 1] .= "</pre>";
4249
$string = implode("<br />", $string);
4350
return $string;
4451
}
@@ -339,7 +346,19 @@ function printMsg($message, $viewonly=false, $plainlink=false) {
339346

340347
$ret.= "&nbsp;&nbsp;–&nbsp;&nbsp;<span class='date'>".date("H:i:s Y-m-d", $message['time'])."</span>";
341348

342-
$ret.="<br /><br />\n<span class='msgtext'>".reparse($message['msg'])."</span>\n";
349+
$truncate = false; $truncate_flag = false;
350+
if (!$plainlink) {
351+
// Если мы смотрим на сообщение в ленте, то его надо обрезать
352+
// А если в окне ответа или в отдельном просмотре, то нет
353+
// Наличие ссылки на "сырое" сообщение служит индикатором для этого
354+
$truncate = 15;
355+
$truncate_flag = false;
356+
}
357+
358+
$reparsedMessage = reparse($message['msg'], $truncate, $truncate_flag);
359+
if ($truncate_flag) $reparsedMessage.="<br /><br /><a href='?msgid=$msgid'>&gt;&gt; Читать далее</a>";
360+
361+
$ret.="<br /><br />\n<span class='msgtext'>".$reparsedMessage."</span>\n";
343362

344363
$ret.="</div>";
345364
return $ret;

sysop.php

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,14 @@ function __construct($tpldir, $transport, $access) {
4747
$html.=$htmlmain;
4848
} elseif ($remote["delechoarea"]) {
4949
$msgids=$access->getMsgList($remote["delechoarea"]);
50-
foreach ($msgids as $msgid) {
51-
$transport->deleteMessage($msgid, $withecho=true);
52-
$remote["debug-messages"].="deleted msgid ".$msgid." from echo ".$remote["delechoarea"]."<br />\n";
53-
}
50+
$transport->deleteMessages($msgids, $withecho=true);
51+
$remote["debug-messages"].="Deleted ".$remote["delechoarea"]
52+
." (".count($msgids).")<br />\n";
5453
$html.=$htmlmain;
5554
} elseif ($remote["clearblacklist"]) {
5655
$msgids=$access->blacklist;
57-
foreach ($msgids as $msgid) {
58-
$transport->deleteMessage($msgid, $withecho=true);
59-
$remote["debug-messages"].="deleted msgid ".$msgid."<br />\n";
60-
}
56+
$transport->deleteMessages($msgids, $withecho=true);
57+
$remote["debug-messages"].="Clear (".count($msgids).")<br />\n";
6158
$html.=$htmlmain;
6259
} elseif ($remote["editmessage"]) {
6360
if ($remote["updatemessage-text"]) {

transports.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ function deleteMessage($msgid, $withecho=NULL) {
159159

160160
function deleteMessages($msgids, $withechoes=NULL) {
161161
foreach ($msgids as $msgid) {
162-
deleteMessage($msgid, $withechoes);
162+
$this->deleteMessage($msgid, $withechoes);
163163
}
164164
}
165165

0 commit comments

Comments
 (0)