📄 ad_stylesheets.php
字号:
<?php
class ad_settings
{
var $base_url;
function ad_settings( )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
$tmp_in = array_merge( $_GET, $_POST, $_COOKIE );
foreach ( $tmp_in as $k => $v )
{
}
switch ( $IN['code'] )
{
case "wrapper" :
$this->list_sheets( );
break;
case "add" :
$this->do_form( "add" );
break;
case "edit2" :
$this->do_form( "edit" );
break;
case "edit" :
$this->do_form( "edit" );
break;
case "doadd" :
$this->save_wrapper( "add" );
break;
case "doedit" :
$this->save_wrapper( "edit" );
break;
case "remove" :
$this->remove( );
break;
case "export" :
$this->export( );
break;
case "optimize" :
$this->optimize( );
break;
case "css_upload" :
$this->css_upload( "new" );
break;
case "easyedit" :
$this->easy_edit( );
break;
case "editcomments" :
$this->edit_comments( );
break;
case "doeditcomments" :
$this->do_edit_comments( );
break;
default :
$this->list_sheets( );
break;
}
}
function do_edit_comments( )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
global $HTTP_POST_VARS;
if ( $IN['id'] == "" )
{
$ADMIN->error( "你必须指定一个存在的主题界面文件ID,请返回后重试!" );
}
$DB->query( "SELECT cssid, css_text, css_name, css_comments FROM ibf_css WHERE cssid='".$IN['id']."'" );
if ( !( $cssinfo = $DB->fetch_row( ) ) )
{
$ADMIN->error( "无法在数据库中找到相关CSS数据" );
}
$DB->query( "UPDATE ibf_css SET css_comments='{$IN['comments']}' WHERE cssid='".$IN['id']."'" );
$ADMIN->done_screen( "内容已经更新", "管理论坛层叠式样表", "act=style" );
}
function edit_comments( )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
if ( $IN['id'] == "" )
{
$ADMIN->error( "你必须指定一个存在的主题界面文件ID,请返回后重试!" );
}
$DB->query( "SELECT cssid, css_text, css_name, css_comments FROM ibf_css WHERE cssid='".$IN['id']."'" );
if ( !( $cssinfo = $DB->fetch_row( ) ) )
{
$ADMIN->error( "无法在数据库中找到相关CSS数据" );
}
$ADMIN->page_detail = "请根据提示在下面进行输入或编辑";
$ADMIN->page_title = "编辑论坛层叠式样表(CSS)内容 '{$cssinfo['css_name']}'";
$SKIN->td_header[] = array( "CSS", "40%" );
$SKIN->td_header[] = array( "内容", "60%" );
$ADMIN->html .= $SKIN->start_form( array(
1 => array( "code", "doeditcomments" ),
2 => array( "act", "style" ),
3 => array(
"id",
$IN['id']
)
) );
$ADMIN->html .= $SKIN->start_table( "编辑内容" );
$ADMIN->html .= $SKIN->add_td_row( array(
"<b>编辑论坛层叠式样表(CSS)内容",
$SKIN->form_textarea( "comments", str_replace( "<br>", "\n", $cssinfo['comments'] ) )
) );
$ADMIN->html .= $SKIN->add_td_basic( "返回:<a href='".$SKIN->base_url."&act=style'>论坛层叠式样表(CSS)管理</a> -> <a href='".$SKIN->base_url."&act=style&code=edit&id={$IN['id']}'>编辑选项</a>", "center", "title" );
$ADMIN->html .= $SKIN->end_form( "编辑内容" );
$ADMIN->html .= $SKIN->end_table( );
$ADMIN->output( );
}
function edit_splash( )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
if ( $IN['id'] == "" )
{
$ADMIN->error( "你必须指定一个存在的主题界面文件ID,请返回后重试!" );
}
$DB->query( "SELECT cssid, css_text, css_name FROM ibf_css WHERE cssid='".$IN['id']."'" );
if ( !( $cssinfo = $DB->fetch_row( ) ) )
{
$ADMIN->error( "无法在数据库中找到相关的CSS数据" );
}
$ADMIN->page_detail = "请选择你需要编辑的选项";
$ADMIN->page_title = "编辑论坛层叠式样表(CSS) '{$cssinfo['css_name']}'";
$SKIN->td_header[] = array( "选项", "40%" );
$SKIN->td_header[] = array( "叙述", "60%" );
$ADMIN->html .= $SKIN->start_table( "选择一个选项" );
$ADMIN->html .= $SKIN->add_td_row( array(
"<a href='".$SKIN->base_url."&act=style&code=edit2&id={$IN['id']}'>编辑 CSS 文件</a>",
"在打开的文本编辑器中编辑论坛层叠式样表(CSS)内容"
) );
$ADMIN->html .= $SKIN->add_td_row( array(
"<a href='".$SKIN->base_url."&act=style&code=editupload&id={$IN['id']}'>上传 CSS 文件</a>",
"通过上传一个新的层叠式样表(CSS)文件以替换旧的层叠式样表(CSS)文件"
) );
$ADMIN->html .= $SKIN->add_td_row( array(
"<a href='".$SKIN->base_url."&act=style&code=editcomments&id={$IN['id']}'>编辑 CSS 内容</a>",
"编辑论坛模板中定义的层叠式样表(CSS)文件内容"
) );
$ADMIN->html .= $SKIN->add_td_basic( "返回:<a href='".$SKIN->base_url."&act=style'>论坛层叠式样表(CSS)管理</a>", "center", "title" );
$ADMIN->html .= $SKIN->end_table( );
$ADMIN->output( );
}
function css_upload( $type = "new" )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
global $HTTP_POST_FILES;
$FILE_NAME = $HTTP_POST_FILES['FILE_UPLOAD']['name'];
$FILE_SIZE = $HTTP_POST_FILES['FILE_UPLOAD']['size'];
$FILE_TYPE = $HTTP_POST_FILES['FILE_UPLOAD']['type'];
$FILE_TYPE = preg_replace( "/^(.+?);.*\$/", "\\1", $FILE_TYPE );
if ( !is_dir( $INFO['upload_dir'] ) )
{
$ADMIN->error( "无法找到上传目录 - 请确认 'uploads' 目录设置正确" );
}
if ( $HTTP_POST_FILES['FILE_UPLOAD']['name'] == "" || !$HTTP_POST_FILES['FILE_UPLOAD']['name'] || $HTTP_POST_FILES['FILE_UPLOAD']['name'] == "none" )
{
$ADMIN->error( "没有选择上传的文件!" );
}
if ( !move_uploaded_file( $HTTP_POST_FILES['FILE_UPLOAD']['tmp_name'], $INFO['upload_dir']."/".$FILE_NAME ) )
{
$ADMIN->error( "文件上传失败" );
}
$real_name = str_replace( "_", " ", preg_replace( "/^(.*),\\d+\\.css\$/", "\\1", $FILE_NAME ) );
$real_name .= " [UPLOAD]";
if ( $FH = @fopen( $INFO['upload_dir']."/".$FILE_NAME, "r" ) )
{
$data = @fread( $FH, @filesize( $INFO['upload_dir']."/".$FILE_NAME ) );
@fclose( $FH );
@unlink( $INFO['upload_dir']."/".$FILE_NAME );
}
else
{
@unlink( $INFO['upload_dir']."/".$FILE_NAME );
$ADMIN->error( "无法读取上传的文件内容,操作中止" );
}
list( $css, $comments ) = explode( "<|COMMENTS|>", $data );
$css = trim( $css );
$comments = trim( $css );
if ( $type == "new" )
{
$dbs = $DB->compile_db_insert_string( array(
"css_name" => $real_name,
"css_text" => $css,
"css_comments" => $comments
) );
$DB->query( "INSERT INTO ibf_css (".$dbs['FIELD_NAMES'].") VALUES(".$dbs['FIELD_VALUES'].")" );
$ADMIN->done_screen( "层叠式样表(CSS)已经上传", "层叠式样表(CSS)管理", "act=style" );
}
}
function optimize( )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
global $ADMIN;
global $std;
global $MEMBER;
global $GROUP;
if ( $IN['id'] == "" )
{
$ADMIN->error( "你必须指定一个存在的CSS文件ID,请返回后重试!" );
}
$DB->query( "SELECT * from ibf_css WHERE cssid='".$IN['id']."'" );
if ( !( $row = $DB->fetch_row( ) ) )
{
$ADMIN->error( "无法在数据库中找到相关数据" );
}
$orig_size = strlen( $row['css_text'] );
$orig_text = str_replace( "\r\n", "\n", $row['css_text'] );
$orig_text = str_replace( "\r", "\n", $orig_text );
$orig_text = str_replace( "\n\n", "\n", $orig_text );
$parsed = array( );
$orig_text = preg_replace( "#/\\*(.+?)\\*/#s", "", $orig_text );
preg_match_all( "/(.+?)\\{(.+?)\\}/s", $orig_text, $match, PREG_PATTERN_ORDER );
$i = 0;
for ( ; $i < count( $match[0] ); ++$i )
{
$match[1][$i] = trim( $match[1][$i] );
$parsed[$match[1][$i]] = trim( $match[2][$i] );
}
if ( count( $parsed ) < 1 )
{
$ADMIN->error( "系统无法识别层叠式样表(CSS)文件的格式,无法执行优化操作。" );
}
$final = "";
foreach ( $parsed as $name => $p )
{
if ( preg_match( "#^//#", $name ) )
{
}
else
{
$parts = explode( ";", $p );
$defs = array( );
foreach ( $parts as $part )
{
if ( $part != "" )
{
list( $definition, $data ) = explode( ":", $part );
$defs[] = trim( $definition ).": ".trim( $data );
}
}
$final .= $name." { ".implode( "; ", $defs )." }\n";
}
}
$final_size = strlen( $final );
if ( $final_size < 1000 )
{
$ADMIN->error( "系统无法识别层叠式样表(CSS)文件的格式,无法执行优化操作。" );
}
$dbs = $DB->compile_db_update_string( array(
"css_text" => $final
) );
$DB->query( "UPDATE ibf_css SET {$dbs} WHERE cssid='".$IN['id']."'" );
$saved = $orig_size - $final_size;
$pc_saved = 0;
if ( 0 < $saved )
{
$pc_saved = sprintf( "%.2f", $saved / $orig_size * 100 );
}
$ADMIN->done_screen( "层叠式样表(CSS)已经更新<br>字符已经保存:{$saved} ({$pc_saved} %)", "层叠式样表(CSS)管理", "act=style" );
}
function export( )
{
global $IN;
global $INFO;
global $DB;
global $SKIN;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -