Files
IPB/upload/sources/lib/admin_template_functions.php
T
2025-12-19 00:21:15 -08:00

415 lines
18 KiB
PHP

<?php
/*
+--------------------------------------------------------------------------
| Invision Power Board 2.1.7
| =============================================
| by Matthew Mecham
| (c) 2001 - 2005 Invision Power Services, Inc.
| http://www.invisionpower.com
| =============================================
| Web: http://www.invisionboard.com
| http://www.ibresource.ru/products/invisionpowerboard/
| Time: Tuesday 18th of July 2006 05:56:00 PM
| Release: 52f408a29988b02f45b5e6f4ba5af0ae
| Licence Info: http://www.invisionboard.com/?license
| http://www.ibresource.ru/license
+---------------------------------------------------------------------------
| INVISION POWER BOARD IS NOT FREE / OPEN SOURCE!
+---------------------------------------------------------------------------
| INVISION POWER BOARD ÍÅ ßÂËßÅÒÑß ÁÅÑÏËÀÒÍÛÌ ÏÐÎÃÐÀÌÌÍÛÌ ÎÁÅÑÏÅ×ÅÍÈÅÌ!
| Ïðàâà íà ÏÎ ïðèíàäëåæàò Invision Power Services
| Ïðàâà íà ïåðåâîä IBResource (http://www.ibresource.ru)
+---------------------------------------------------------------------------
| > $Date: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $
| > $Revision: 23 $
| > $Author: matt $
+---------------------------------------------------------------------------
|
| > Admin Template functions library
| > Script written by Matt Mecham
| > Date started: 19th November 2003
|
| > DBA Checked: Tue 25th May 2004
+--------------------------------------------------------------------------
*/
class admin_template_functions
{
var $menu_fontchange = "";
var $menu_sizechange = "";
var $menu_backchange = "";
var $menu_fontcolor = "";
var $menu_widthchange = "";
var $menu_highchange = "";
var $default_css = "";
//-----------------------------------------
// Constructor
//-----------------------------------------
function admin_template_functions()
{
$this->default_css = "font-family:Verdana;font-size:11pt;color:black;background-color:white;border:3px outset #555";
}
//-----------------------------------------
// Build generic editor
//-----------------------------------------
function build_generic_editor_area( $data )
{
$return = "";
$return .= $this->html_build_editor_top();
$return .= "
<script language='javascript'>
<!--
var template_bit_ids = 'txt{$data['textareaname']}';
//-->
</script>
<div class='tableborder'>
<div class='titlemedium'>
<table width='100%' cellpadding='0' cellspacing='0' border='0'>
<tr>
<td width='1%' align='left' valign='middle'>
<input type='button' value='Ïëàâàþùåå îêíî' class='realdarkbutton' title='Îòêðûòü ðåäàêòèðîâàíèå ýòîãî øàáëîíà â áîëüøîì îêíå' onclick=\"pop_win('section={$data['section']}&act={$data['act']}&code=floateditor&id={$data['textareaname']}', 'Float', 800, 400)\">&nbsp;
</td>
<td width='95%' align='left' valign='middle'>&nbsp;<b>{$data['title']}</b></td>
<td width='5% align='right' valign='middle' nowrap='nowrap' ><!--TOP.RIGHT--></td>
</tr>
<!--TR.ROW-->
</table>
</div>";
$return .= "<div align='center' style='padding:2px;'>".$this->ipsclass->adskin->form_textarea("txt{$data['textareaname']}", $data['textareainput'], $this->ipsclass->vars['tx'], $this->ipsclass->vars['ty'], 'none', "txt{$data['textareaname']}", $this->default_css )."</div>\n";
$return .= $this->html_build_editor_bottom() . "</div>";
return $return;
}
//-----------------------------------------
// Build editor text area table
//-----------------------------------------
function build_editor_area( $html, $template=array(), $img="" )
{
$return = "";
$edit_prefs = $this->type == 'single' ? $this->editor_prefs_dropdown : '';
$close_box = $this->type == 'single' ? "<input type='button' class='realbutton' style='color:red' onclick='parent.template_edit_close(\"{$template['suid']}\")' value=' X ' />" : '';
$template['func_data'] = str_replace( "'", '&#039;', $template['func_data'] );
$spiffy_diffy = "<div align='center' style='position:absolute;width:99%;display:none;text-align:center' id='dv_{$template['suid']}'>
<table cellspacing='0' width='500' align='center' cellpadding='6' style='background:#EEE;border:2px outset #555;'>
<tr>
<td align='center' valign='top'>
<b>Ðàñøèðåííûé ðåæèì: Ïåðåìåííûå øàáëîíà</b><br />Îñòàâüòå êàê åñòü, åñëè âû íå çíàåòå, êàê ýòî ðàáîòàåò.<br />Èñïîëüçóéòå çàïÿòóþ äëÿ ðàçäåëåíèÿ íåñêîëüêèõ ïåðåìåííûõ.
<br /><input class='textinput' name='funcdata_{$template['suid']}' value='{$template['func_data']}' type='text' size='50' />
<br /><br />
<input type='button' class='realdarkbutton' value='Ñîõðàíèòü è Çàêðûòü' onclick=\"togglediv('dv_{$template['suid']}');\" />
</td>
</tr>
</table>
</div>";
$return .= <<<EOF
<div class='tableborder'>
<div class='titlemedium'>
<table width='100%' cellpadding='0' cellspacing='0' border='0'>
<tr>
<td width='1%' align='left' valign='middle'>{$close_box}</td>
<td width='19%' align='left' valign='middle' nowrap='nowrap'>
{$edit_prefs}
</td>
<td width='75%' align='left' valign='middle'>&nbsp;{$img}<b>{$template['easy_name']}</b></td>
<td width='5% align='right' nowrap='nowrap' valign='middle'>
<input type='hidden' id='edited-{$template['suid']}' name='edited-{$template['suid']}' value='0' />
<input type='submit' name='submit-{$template['suid']}' value='Ñîõðàíèòü øàáëîí' id='sb-t{$template['suid']}' class='realdarkbutton' />
<input type='button' value='Ïëàâàþùåå îêíî' class='realbutton' title='Îòêðûòü ðåäàêòèðîâàíèå ýòîãî øàáëîíà â ïëàâàþùåì îêíå' onclick="pop_win('section=lookandfeel&act=templ&code=floateditor&id={$template['suid']}', 'Ïëàâàþùåå îêíî {$template['suid']}', 800, 400)">
<img id="tmpl-{$template['suid']}" src='{$this->ipsclass->skin_url}/images/filebrowser_action.gif' border='0' alt='Îïöèè' class='ipd' />
&nbsp;
</td>
</tr>
</table>
$spiffy_diffy
</div>
<script type="text/javascript">
EOF;
if ( $this->type == 'single' OR $this->type == 'multiple' )
{
$return .= "\ntry { parent.template_bit_onload(); } catch(e) { }\n";
}
$return .= <<<EOF
menu_build_menu(
"tmpl-{$template['suid']}",
new Array(
img_item + " <a href='#' onclick=\"menu_action_close(); toggleview('dv_{$template['suid']}')\"; return false;'>Ðåäàêòèðîâàíèå âõîäÿùèõ ïåðåìåííûõ...</a>",
img_item + " <a href='#' onclick='menu_action_close(); pop_win(\"act=rtempl&code=macro_one&suid={$template['suid']}\", \"MacroWindow\", 400, 200); return false;'>Ïðîâåðêà ìàêðîñîâ...</a>",
img_item + " <a href='#' onclick='menu_action_close(); pop_win(\"act=rtempl&code=compare&suid={$template['suid']}\", \"CompareWindow\", 500,400); return false;'>Ñðàâíèòü âåðñèè...</a>",
img_item + " <a href='#' onclick='menu_action_close(); parent.template_bit_restore(\"{$template['suid']}\"); return false;'>Îáðàòèòü âñå èçìåíåíèÿ...</a>",
img_item + " <a href='#' onclick='menu_action_close(); pop_win(\"act=rtempl&code=preview&suid={$template['suid']}&type=html\", \"OriginalPreview\", 400,400); return false;'>Ïðîñìîòð îðèãèíàëà...</a>"
) );
</script>
EOF;
$return .= "<div align='center' style='padding:2px;'>".$this->ipsclass->adskin->form_textarea("txt{$template['suid']}", $html, $this->ipsclass->vars['tx'], $this->ipsclass->vars['ty'], 'none', "t{$template['suid']}", $this->default_css, 'onkeypress="parent.template_bit_changed(\'t'.$template['suid'].'\')"' )."</div>\n";
$return .= "</div>";
return $return;
}
//-----------------------------------------
// Build JS for floated window
//-----------------------------------------
function build_editor_area_floated($no_buttons=0)
{
$return = "<form name='theform'>";
$return .= $this->html_build_editor_top();
$return .= "<div class='tableborder'>
<div class='titlemedium' align='right'>";
if ( $no_buttons == 0 )
{
$return .= "
<input type='button' value='Ïîèñê' class='realbutton' title='Ïîèñê ïî øàáëîíó' onClick='pop_win(\"act=rtempl&code=search&suid={$template['suid']}&type=html\", \"Search\", 500,400)'>
<input type='button' value='Ìàêðîñû' class='realbutton' title='Ïðîâåðêà ìàêðîñîâ ïî ââåäåííîé çàïèñè' onClick='pop_win(\"code=macro_one&suid={$template['suid']}\", \"MacroWindow\", 400, 200)'>
<input type='button' value='Ñðàâíèòü' class='realbutton' title='Ñðàâíèòü èçìåíåííûé âàìè âàðèàíò øàáëîíà ñ ïåðâîíà÷àëüíûì îðèãèíàëîì' onClick='pop_win(\"act=rtempl&code=compare&suid={$template['suid']}\", \"CompareWindow\", 500,400)'>
<input type='button' value='Îáðàòèòü' class='realbutton' title='Îáðàòèòü âñå èçìåíåíèÿ øàáëîíà, òî åñòü ïðèâåñòè åãî ê ïåðâîíà÷àëüíîìó ñòàíäàðòíîìó âèäó' onClick='restore(\"{$template['suid']}\",\"{$this->ipsclass->input['expand']}\")'>
<input type='button' value='Îðèãèíàë' class='realbutton' title='Ïðîñìîòð îðèãèíàëüíîãî ïåðâîíà÷àëüíîãî âàðèàíòà øàáëîíà' onClick='pop_win(\"act=rtempl&code=preview&suid={$template['suid']}&type=html\", \"OriginalPreview\", 400,400)'>
";
}
$return .= "</div>";
$return .= "<div align='center' style='padding:2px;'>".$this->ipsclass->adskin->form_textarea("templatebit", $html, $this->ipsclass->vars['tx'], $this->ipsclass->vars['ty'], 'none', "templatebit", $this->default_css )."</div>\n";
$return .= "</div>";
$return .= "<script type='text/javascript'>
var template_id = '{$this->ipsclass->input['id']}';
var template_bit = eval(\"opener.document.theform.txt\"+template_id+\".value\");
document.theform.templatebit.value = template_bit;
var template_bit_ids = 'templatebit';
function saveandclose()
{
eval(\"opener.document.theform.txt\"+template_id+\".value = document.theform.templatebit.value\");
window.close();
}
</script>
";
$return .= $this->html_build_editor_bottom();
$return .= "<br /><div class='tableborder'><div class='catrow2' align='center' style='padding:4px;'><input type='button' onclick='saveandclose()' value='Ñêîïèðîâàòü íàçàä â ñòàíäàðòíîå ïîëå è çàêðûòü îêíî' class='realdarkbutton' /></div></div></form>";
$this->ipsclass->html = $return;
$this->ipsclass->admin->print_popup();
}
//-----------------------------------------
// Build editor preferences menus
//-----------------------------------------
function build_editor_pref_menus()
{
$this->menu_fontchange = "<select name='fontchange' class='smalldropdown'>".
"<option value='monaco'>Monaco</option>".
"<option value='courier'>Courier</option>".
"<option value='verdana'>Verdana</option>".
"<option value='arial'>Arial</option>".
"</select>";
$this->menu_sizechange = "<select name='sizechange' class='smalldropdown'>".
"<option value='8pt'>8 ïóíêòîâ</option>".
"<option value='9pt'>9 ïóíêòîâ</option>".
"<option value='10pt'>10 ïóíêòîâ</option>".
"<option value='11pt'>11 ïóíêòîâ</option>".
"<option value='12pt'>12 ïóíêòîâ</option>".
"</select>";
$this->menu_backchange = "<select name='backchange' class='smalldropdown'>".
"<option value='black'>×åðíûé</option>".
"<option value='white'>Áåëûé</option>".
"<option value='#EEEEEE'>Ñâåòëîñåðûé</option>".
"<option value='gray'>Ñåðûé</option>".
"</select>";
$this->menu_fontcolor = "<select name='fontcolor' class='smalldropdown'>".
"<option value='black'>×åðíûé</option>".
"<option value='white'>Áåëûé</option>".
"<option value='blue'>Ñèíèé</option>".
"<option value='lightgreen'>Ñâåòëîçåëåíûé</option>".
"<option value='green'>Çåëåíûé</option>".
"<option value='darkgreen'>Òåìíîçåëåíûé</option>".
"<option value='gray'>Ñåðûé</option>".
"</select>";
$this->menu_widthchange = "<select name='widthchange' class='smalldropdown'>".
"<option value='100%'>100%</option>".
"<option value='90%'>90%</option>".
"<option value='80%'>80%</option>".
"<option value='70%'>70%</option>".
"<option value='60%'>60%</option>".
"<option value='50%'>50%</option>".
"</select>";
//-----------------------------------------
// Not single?
//-----------------------------------------
if ( $this->type != 'single' AND $this->type != 'multiple' )
{
$this->menu_highchange = "<select name='highchange' class='smalldropdown'>".
"<option value='50px'>50 ïèêñåëåé</option>".
"<option value='100px'>100 ïèêñåëåé</option>".
"<option value='200px'>200 ïèêñåëåé</option>".
"<option value='300px'>300 ïèêñåëåé</option>".
"<option value='400px'>400 ïèêñåëåé</option>".
"<option value='500px'>500 ïèêñåëåé</option>".
"<option value='600px'>600 ïèêñåëåé</option>".
"<option value='700px'>700 ïèêñåëåé</option>".
"<option value='800px'>800 ïèêñåëåé</option>".
"<option value='900px'>900 ïèêñåëåé</option>".
"<option value='1000px'>1000 ïèêñåëåé</option>".
"</select>";
}
else
{
$this->menu_highchange = "<select name='highchange' class='smalldropdown' style='color:gray'><option value='-'>Íåäîñòóïíî</option></span>";
}
if ( $cookie = $this->ipsclass->my_getcookie( 'acpeditorprefs' ) )
{
list( $font, $size, $bg, $fc, $width, $height ) = explode( "," ,$cookie );
}
else
{
//-----------------------------------------
// Decent defaults
//-----------------------------------------
$font = 'monaco';
$size = '8pt';
$bg = 'white';
$fc = 'black';
$width = '100%';
$height = '300px';
}
//-----------------------------------------
// Force decent height if single
//-----------------------------------------
if ( $this->type == 'single' OR $this->type == 'multiple' )
{
$height = '300px';
}
//-----------------------------------------
// Show..
//-----------------------------------------
$this->default_css = "font-family:$font;font-size:$size;color:$fc;background-color:$bg;width:$width;height:$height;border:3px outset #555";
$this->menu_fontchange = preg_replace( "/(option value='".preg_quote($font)."')/" , "\\1 selected='selected'", $this->menu_fontchange );
$this->menu_sizechange = preg_replace( "/(option value='".preg_quote($size)."')/" , "\\1 selected='selected'", $this->menu_sizechange );
$this->menu_backchange = preg_replace( "/(option value='".preg_quote($bg)."')/" , "\\1 selected='selected'", $this->menu_backchange );
$this->menu_fontcolor = preg_replace( "/(option value='".preg_quote($fc)."')/" , "\\1 selected='selected'", $this->menu_fontcolor );
$this->menu_widthchange = preg_replace( "/(option value='".preg_quote($width)."')/" , "\\1 selected='selected'", $this->menu_widthchange );
$this->menu_highchange = preg_replace( "/(option value='".preg_quote($height)."')/" , "\\1 selected='selected'", $this->menu_highchange );
$this->editor_prefs_dropdown = "<div class='fauxbutton' style='padding:4px;color:black;white-space:nowrap;font-weight:bold;float:left' id='tmpl-editor-prefs'>Íàñòðîéêè ðåäàêòîðà <img src='{$this->ipsclass->skin_url}/images/icon_open.gif' border='0' style='vertical-align:top' /></div>";
}
function html_build_editor_top()
{
$this->build_editor_pref_menus();
if ( $this->type == 'single' )
{
return "<input type='hidden' name='changed_bits' id='changed_bits' /><div class='tableborder'><div>";
}
$close_box = $this->type == 'multiple' ? "<input type='button' class='realbutton' style='color:red' onclick='parent.template_edit_close(\"{$template['suid']}\")' value=' X ' />" : '';
return <<<EOF
<div class='tableborder'>
<div class='maintitle' align='left' style='height:30px'>
<div style='float:right'>{$close_box} <!--TOPRIGHT--></div>
<div>{$this->editor_prefs_dropdown}</div>
</div>
<div class='tablepad'><!--BEFORETEXTAREA-->
EOF;
}
function html_build_editor_bottom()
{
return <<<EOF
<script type="text/javascript">
menu_build_menu(
'tmpl-editor-prefs',
new Array( "<table cellpadding='4' cellspacing='0' width='200' border='0'>"+
"<tr>"+
"<td nowrap='nowrap'>Øðèôò</td>"+
"<td width='100%'>{$this->menu_fontchange}</td>"+
"</tr>"+
"<tr>"+
"<td nowrap='nowrap'>Ðàçìåð øðèôòà</td>"+
"<td width='100%'>{$this->menu_sizechange}</td>"+
"</tr>"+
"<tr>"+
"<td nowrap='nowrap'>Öâåò øðèôòà</td>"+
"<td width='100%'>{$this->menu_fontcolor}</td>"+
"</tr>"+
"<tr>"+
"<td nowrap='nowrap'>Ôîí</td>"+
"<td width='100%'>{$this->menu_backchange}</td>"+
"</tr>"+
"<tr>"+
"<td nowrap='nowrap'>Øèðèíà ðåäàêòîðà</td>"+
"<td width='100%'>{$this->menu_widthchange}</td>"+
"</tr>"+
"<tr>"+
"<td nowrap='nowrap'>Âûñîòà ðåäàêòîðà</td>"+
"<td width='100%'>{$this->menu_highchange}</td>"+
"</tr>"+
"<tr>"+
"<td colspan='2' align='center'>"+
"<input type='button' value='Èçìåíèòü!' class='realbutton' onclick=\"menu_action_close(); changefont();\" />"+
"</td>"+
"</tr>"+
"</table>"
) );
</script>
<!--IPB.EDITORBOTTOM--></div>\n</div>
EOF;
}
}
?>