Merge branch 'rhymix:master' into master

This commit is contained in:
Lastorder 2025-03-03 10:47:47 +09:00 committed by GitHub
commit e5b729f8e9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
152 changed files with 2348 additions and 792 deletions

View file

@ -9,44 +9,58 @@
class Board extends ModuleObject
{
var $search_option = array('title_content','title','content','comment','user_name','nick_name','user_id','tag'); ///< 검색 옵션
var $order_target = array('list_order', 'update_order', 'regdate', 'voted_count', 'blamed_count', 'readed_count', 'comment_count', 'title', 'nick_name', 'user_name', 'user_id'); // 정렬 옵션
var $skin = "default"; ///< skin name
var $list_count = 20; ///< the number of documents displayed in a page
var $page_count = 10; ///< page number
var $category_list = NULL; ///< category list
/**
* constructor
*
* @return void
* Default search columns
*/
function __construct()
{
parent::__construct();
}
public $search_option = [
'title_content',
'title',
'content',
'comment',
'user_name',
'nick_name',
'user_id',
'tag',
];
/**
* @brief install the module
**/
* Default sort columns
*/
public $order_target = [
'list_order',
'update_order',
'regdate',
'voted_count',
'blamed_count',
'readed_count',
'comment_count',
'title',
'nick_name',
'user_name',
'user_id',
];
/**
* Default values
*/
public $skin = 'default';
public $list_count = 20;
public $page_count = 10;
public $category_list;
/**
* Callback functions for autoinstall
*/
function moduleInstall()
{
}
/**
* @brief chgeck module method
**/
function checkUpdate()
{
}
/**
* @brief update module
**/
function moduleUpdate()
{
@ -54,17 +68,6 @@ class Board extends ModuleObject
function moduleUninstall()
{
$output = executeQueryArray("board.getAllBoard");
if(!$output->data) return new BaseObject();
@set_time_limit(0);
$oModuleController = getController('module');
foreach($output->data as $board)
{
$oModuleController->deleteModule($board->module_srl);
}
return new BaseObject();
}
}

View file

@ -5,21 +5,14 @@
* @class boardController
* @author NAVER (developers@xpressengine.com)
* @brief board module Controller class
**/
*/
class BoardController extends Board
{
/**
* @brief initialization
**/
function init()
{
}
/**
* @brief insert document
**/
function procBoardInsertDocument()
*/
public function procBoardInsertDocument()
{
// check grant
if(!$this->grant->write_document)
@ -152,7 +145,6 @@ class BoardController extends Board
$manual = true;
$anonymous_name = $this->module_info->anonymous_name ?: 'anonymous';
$anonymous_name = $this->createAnonymousName($anonymous_name, $logged_info->member_srl, $obj->document_srl);
$this->module_info->admin_mail = '';
$obj->notify_message = 'N';
$obj->email_address = $obj->homepage = $obj->user_id = '';
@ -295,7 +287,7 @@ class BoardController extends Board
$this->setMessage($msg_code);
}
function procBoardRevertDocument()
public function procBoardRevertDocument()
{
$update_id = Context::get('update_id');
$logged_info = Context::get('logged_info');
@ -338,8 +330,8 @@ class BoardController extends Board
/**
* @brief delete the document
**/
function procBoardDeleteDocument()
*/
public function procBoardDeleteDocument()
{
// get the document_srl
$document_srl = Context::get('document_srl');
@ -416,8 +408,8 @@ class BoardController extends Board
/**
* @brief vote
**/
function procBoardVoteDocument()
*/
public function procBoardVoteDocument()
{
// Check document_srl
$document_srl = intval(Context::get('document_srl'));
@ -434,8 +426,8 @@ class BoardController extends Board
/**
* @brief insert comments
**/
function procBoardInsertComment()
*/
public function procBoardInsertComment()
{
// check grant
if(!$this->grant->write_comment)
@ -513,7 +505,6 @@ class BoardController extends Board
// For anonymous use, remove writer's information and notifying information
if($this->module_info->use_anonymous == 'Y' && (!$this->grant->manager || ($this->module_info->anonymous_except_admin ?? 'N') !== 'Y'))
{
$this->module_info->admin_mail = '';
$obj->notify_message = 'N';
$obj->member_srl = -1*$logged_info->member_srl;
$obj->email_address = $obj->homepage = $obj->user_id = '';
@ -625,8 +616,8 @@ class BoardController extends Board
/**
* @brief delete the comment
**/
function procBoardDeleteComment()
*/
public function procBoardDeleteComment()
{
// get the comment_srl
$comment_srl = Context::get('comment_srl');
@ -741,8 +732,8 @@ class BoardController extends Board
/**
* @brief delete the tracjback
**/
function procBoardDeleteTrackback()
*/
public function procBoardDeleteTrackback()
{
$trackback_srl = Context::get('trackback_srl');
@ -765,8 +756,8 @@ class BoardController extends Board
/**
* @brief check the password for document and comment
**/
function procBoardVerificationPassword()
*/
public function procBoardVerificationPassword()
{
// get the id number of the document and the comment
$password = Context::get('password');
@ -790,7 +781,9 @@ class BoardController extends Board
}
$oComment->setGrantForSession();
} else {
}
else
{
// get the document information
$oDocument = DocumentModel::getDocument($document_srl);
if(!$oDocument->isExists())
@ -810,8 +803,8 @@ class BoardController extends Board
/**
* @brief the trigger for displaying 'view document' link when click the user ID
**/
function triggerMemberMenu($obj)
*/
public function triggerMemberMenu($obj)
{
if(!$mid = Context::get('cur_mid'))
{

View file

@ -3,7 +3,7 @@
class BoardMobile extends BoardView
{
function getBoardCommentPage()
public function getBoardCommentPage()
{
$this->dispBoardCommentPage();
$oTemplate = TemplateHandler::getInstance();

View file

@ -5,22 +5,16 @@
* @class boardModel
* @author NAVER (developers@xpressengine.com)
* @brief board module Model class
**/
*/
class BoardModel extends Board
{
/**
* @brief initialization
**/
function init()
{
}
/**
* @brief get the list configuration
**/
*/
public static function getListConfig($module_srl)
{
// get the list config value, if it is not exitsted then setup the default value
$module_srl = (int)$module_srl;
$list_config = ModuleModel::getModulePartConfig('board', $module_srl);
if(!is_array($list_config) || count($list_config) <= 0)
{
@ -53,7 +47,7 @@ class BoardModel extends Board
/**
* @brief return the default list configration value
**/
*/
public static function getDefaultListConfig($module_srl)
{
$extra_vars = [];
@ -84,7 +78,7 @@ class BoardModel extends Board
/**
* @brief return module name in sitemap
**/
*/
public function triggerModuleListInSitemap(&$obj)
{
array_push($obj, 'board');

View file

@ -5,24 +5,26 @@
* @class boardView
* @author NAVER (developers@xpressengine.com)
* @brief board module View class
**/
*/
class BoardView extends Board
{
var $listConfig;
var $columnList;
/**
* Default values
*/
public $listConfig = [];
public $columnList = [];
/**
* @brief initialization
* board module can be used in either normal mode or admin mode.\n
**/
function init()
*/
public function init()
{
$oSecurity = new Security();
$oSecurity->encodeHTML('document_srl', 'comment_srl', 'vid', 'mid', 'page', 'category', 'search_target', 'search_keyword', 'sort_index', 'order_type', 'trackback_srl');
/**
* setup the module general information
**/
*/
$m = Context::get('m');
$this->list_count = $m ? ($this->module_info->mobile_list_count ?? 20) : ($this->module_info->list_count ?? 20);
$this->search_list_count = $m ? ($this->module_info->mobile_search_list_count ?? 20) : ($this->module_info->search_list_count ?? 20);
@ -68,7 +70,7 @@ class BoardView extends Board
/**
* check the consultation function, if the user is admin then swich off consultation function
* if the user is not logged, then disppear write document/write comment./ view document
**/
*/
if($this->module_info->consultation == 'Y' && !$this->grant->manager && !$this->grant->consultation_read)
{
$this->consultation = TRUE;
@ -87,13 +89,13 @@ class BoardView extends Board
/**
* use context::set to setup extra variables
**/
*/
$extra_keys = DocumentModel::getExtraKeys($this->module_info->module_srl);
Context::set('extra_keys', $extra_keys);
/**
* add extra variables to order(sorting) target
**/
*/
if (is_array($extra_keys))
{
foreach($extra_keys as $val)
@ -103,7 +105,7 @@ class BoardView extends Board
}
/**
* load javascript, JS filters
**/
*/
Context::addJsFilter($this->module_path.'tpl/filter', 'input_password.xml');
Context::loadFile([$this->module_path.'tpl/js/board.js', 'head']);
if (config('url.rewrite') > 1)
@ -127,12 +129,12 @@ class BoardView extends Board
/**
* @brief display board contents
**/
function dispBoardContent()
*/
public function dispBoardContent()
{
/**
* check the access grant (all the grant has been set by the module object)
**/
*/
if(!$this->grant->access || !$this->grant->list)
{
$this->dispBoardMessage($this->user->isMember() ? 'msg_not_permitted' : 'msg_not_logged');
@ -140,13 +142,13 @@ class BoardView extends Board
/**
* display the category list, and then setup the category list on context
**/
*/
$this->dispBoardCategoryList();
/**
* display the search options on the screen
* add extra vaiables to the search options
**/
*/
// use search options on the template (the search options key has been declared, based on the language selected)
foreach($this->search_option as $opt) $search_option[$opt] = lang($opt);
$extra_keys = Context::get('extra_keys');
@ -208,7 +210,7 @@ class BoardView extends Board
/**
* add javascript filters
**/
*/
Context::addJsFilter($this->module_path.'tpl/filter', 'search.xml');
$oSecurity = new Security();
@ -220,10 +222,11 @@ class BoardView extends Board
/**
* @brief display the category list
**/
function dispBoardCategoryList(){
*/
public function dispBoardCategoryList()
{
// check if the use_category option is enabled
if($this->module_info->use_category=='Y')
if ($this->module_info->use_category === 'Y' || !empty($this->include_modules))
{
// check the grant
if(!$this->grant->list)
@ -239,14 +242,31 @@ class BoardView extends Board
}
else
{
$category_list = DocumentModel::getCategoryList($this->module_srl);
if ($this->module_info->use_category === 'Y')
{
$category_list = DocumentModel::getCategoryList($this->module_srl);
}
else
{
$category_list = [];
}
foreach ($this->include_modules as $module_srl)
{
if ($module_srl != $this->module_srl)
{
$category_list += DocumentModel::getCategoryList($module_srl);
if ((ModuleModel::getModuleExtraVars($module_srl)->hide_category ?? 'N') !== 'Y')
{
$category_list += DocumentModel::getCategoryList($module_srl);
}
}
}
if ($category_list)
{
$this->module_info->hide_category = 'N';
$this->module_info->use_category = 'Y';
}
}
Context::set('category_list', $category_list);
@ -257,15 +277,16 @@ class BoardView extends Board
/**
* @brief display the board conent view
**/
function dispBoardContentView(){
*/
public function dispBoardContentView()
{
// get the variable value
$document_srl = Context::get('document_srl');
$page = Context::get('page');
/**
* if the document exists, then get the document information
**/
*/
if($document_srl)
{
$oDocument = DocumentModel::getDocument($document_srl, false, true);
@ -318,16 +339,17 @@ class BoardView extends Board
/**
* if the document is not existed, get an empty document
**/
*/
}
else
{
$oDocument = DocumentModel::getDocument(0);
$oDocument->add('module_srl', $this->module_srl);
}
/**
*check the document view grant
**/
*/
if($oDocument->isExists())
{
if(!$this->grant->view && !$oDocument->isGranted())
@ -373,17 +395,18 @@ class BoardView extends Board
/**
* add javascript filters
**/
*/
Context::addJsFilter($this->module_path.'tpl/filter', 'insert_comment.xml');
}
/**
* @brief display the document file list (can be used by API)
**/
function dispBoardContentFileList(){
*/
public function dispBoardContentFileList()
{
/**
* check the access grant (all the grant has been set by the module object)
**/
*/
if(!$this->grant->access)
{
return $this->dispBoardMessage('msg_not_permitted');
@ -449,8 +472,9 @@ class BoardView extends Board
/**
* @brief display the document comment list (can be used by API)
**/
function dispBoardContentCommentList(){
*/
public function dispBoardContentCommentList()
{
// check document view grant
$this->dispBoardContentView();
@ -475,8 +499,9 @@ class BoardView extends Board
/**
* @brief display notice list (can be used by API)
**/
function dispBoardNoticeList(){
*/
public function dispBoardNoticeList()
{
// check the grant
if(!$this->grant->list || (Context::get('document_srl') && $this->module_info->use_bottom_list === 'N'))
{
@ -502,8 +527,9 @@ class BoardView extends Board
/**
* @brief display board content list
**/
function dispBoardContentList(){
*/
public function dispBoardContentList()
{
// check the grant
if(!$this->grant->list || (Context::get('document_srl') && $this->module_info->use_bottom_list === 'N'))
{
@ -670,7 +696,7 @@ class BoardView extends Board
}
}
function _makeListColumnList()
public function _makeListColumnList()
{
// List of all available columns
$allColumnList = array(
@ -727,8 +753,8 @@ class BoardView extends Board
/**
* @brief display tag list
**/
function dispBoardTagList()
*/
public function dispBoardTagList()
{
// check if there is not grant fot view list, then alert an warning message
if(!$this->grant->list)
@ -774,7 +800,7 @@ class BoardView extends Board
/**
* @brief display category list
*/
function dispBoardCategory()
public function dispBoardCategory()
{
$this->dispBoardCategoryList();
$this->setTemplateFile('category.html');
@ -783,7 +809,7 @@ class BoardView extends Board
/**
* @brief display comment page
*/
function dispBoardCommentPage()
public function dispBoardCommentPage()
{
$document_srl = Context::get('document_srl');
if(!$document_srl)
@ -810,8 +836,8 @@ class BoardView extends Board
/**
* @brief display document write form
**/
function dispBoardWrite()
*/
public function dispBoardWrite()
{
// check grant
if(!$this->grant->write_document)
@ -821,7 +847,7 @@ class BoardView extends Board
/**
* check if the category option is enabled not not
**/
*/
if($this->module_info->use_category=='Y')
{
// get the user group information
@ -969,7 +995,7 @@ class BoardView extends Board
/**
* add JS filters
**/
*/
if($this->grant->manager || $this->module_info->allow_no_category == 'Y')
{
Context::addJsFilter($this->module_path.'tpl/filter', 'insert_admin.xml');
@ -985,7 +1011,7 @@ class BoardView extends Board
$this->setTemplateFile('write_form');
}
function _getStatusNameList()
public function _getStatusNameList()
{
$resultList = array();
if(!empty($this->module_info->use_status))
@ -1006,8 +1032,8 @@ class BoardView extends Board
/**
* @brief display board module deletion form
**/
function dispBoardDelete()
*/
public function dispBoardDelete()
{
// check grant
if(!$this->grant->write_document)
@ -1078,7 +1104,7 @@ class BoardView extends Board
/**
* add JS filters
**/
*/
Context::addJsFilter($this->module_path.'tpl/filter', 'delete_document.xml');
$this->setTemplateFile('delete_form');
@ -1086,8 +1112,8 @@ class BoardView extends Board
/**
* @brief display comment wirte form
**/
function dispBoardWriteComment()
*/
public function dispBoardWriteComment()
{
$document_srl = Context::get('document_srl');
@ -1122,7 +1148,7 @@ class BoardView extends Board
/**
* add JS filter
**/
*/
Context::addJsFilter($this->module_path.'tpl/filter', 'insert_comment.xml');
$this->setTemplateFile('comment_form');
@ -1130,8 +1156,8 @@ class BoardView extends Board
/**
* @brief display comment replies page
**/
function dispBoardReplyComment()
*/
public function dispBoardReplyComment()
{
// check grant
if(!$this->grant->write_comment)
@ -1191,7 +1217,7 @@ class BoardView extends Board
/**
* add JS filters
**/
*/
Context::addJsFilter($this->module_path.'tpl/filter', 'insert_comment.xml');
$this->setTemplateFile('comment_form');
@ -1199,8 +1225,8 @@ class BoardView extends Board
/**
* @brief display the comment modification from
**/
function dispBoardModifyComment()
*/
public function dispBoardModifyComment()
{
// check grant
if(!$this->grant->write_comment)
@ -1275,7 +1301,7 @@ class BoardView extends Board
/**
* add JS fitlers
**/
*/
Context::addJsFilter($this->module_path.'tpl/filter', 'insert_comment.xml');
$this->setTemplateFile('comment_form');
@ -1283,8 +1309,8 @@ class BoardView extends Board
/**
* @brief display the delete comment form
**/
function dispBoardDeleteComment()
*/
public function dispBoardDeleteComment()
{
// check grant
if(!$this->grant->write_comment)
@ -1358,7 +1384,7 @@ class BoardView extends Board
/**
* add JS filters
**/
*/
Context::addJsFilter($this->module_path.'tpl/filter', 'delete_comment.xml');
$this->setTemplateFile('delete_comment_form');
@ -1366,8 +1392,8 @@ class BoardView extends Board
/**
* @brief display the delete trackback form
**/
function dispBoardDeleteTrackback()
*/
public function dispBoardDeleteTrackback()
{
$oTrackbackModel = getModel('trackback');
if(!$oTrackbackModel)
@ -1393,13 +1419,13 @@ class BoardView extends Board
/**
* add JS filters
**/
*/
Context::addJsFilter($this->module_path.'tpl/filter', 'delete_trackback.xml');
$this->setTemplateFile('delete_trackback_form');
}
function dispBoardUpdateLog()
public function dispBoardUpdateLog()
{
if($this->grant->update_view !== true)
{
@ -1427,7 +1453,7 @@ class BoardView extends Board
$this->setTemplateFile('update_list');
}
function dispBoardUpdateLogView()
public function dispBoardUpdateLogView()
{
if($this->grant->update_view !== true)
{
@ -1464,7 +1490,7 @@ class BoardView extends Board
$this->setTemplateFile('update_view');
}
function dispBoardVoteLog()
public function dispBoardVoteLog()
{
iF($this->grant->vote_log_view !== true)
{
@ -1528,7 +1554,7 @@ class BoardView extends Board
/**
* Default 404 Handler.
*/
function dispBoardNotFound()
public function dispBoardNotFound()
{
$this->dispBoardMessage('msg_not_founded', 404);
}
@ -1540,7 +1566,7 @@ class BoardView extends Board
* @param int $http_code
* @return void
*/
function dispBoardMessage($msg_code, $http_code = 403)
public function dispBoardMessage($msg_code, $http_code = 403)
{
//Context::set('message', lang($msg_code));
//$this->setTemplateFile('message');
@ -1561,11 +1587,10 @@ class BoardView extends Board
* @param int $http_code
* @return void
*/
function alertMessage($msg_code, $http_code = 403)
public function alertMessage($msg_code, $http_code = 403)
{
$script = sprintf('<script> jQuery(function(){ alert(%s); } );</script>', json_encode(lang($msg_code)));
Context::addHtmlFooter($script);
$this->setHttpStatusCode($http_code);
}
}

View file

@ -11,44 +11,45 @@ $lang->list_target_item = 'Target Item';
$lang->list_display_item = 'Display Item';
$lang->summary = 'Summary';
$lang->thumbnail = 'Thumbnail';
$lang->last_post = 'Last post';
$lang->last_post = 'Last Post';
$lang->board_management = 'Board Management';
$lang->search_result = 'Search Result';
$lang->consultation = 'Consultation';
$lang->use_consultation = 'Use as Consultation Board';
$lang->secret = 'Secret';
$lang->thisissecret = 'This is a secret article.';
$lang->thisissecret = 'This is a secret post.';
$lang->admin_mail = 'Administrator\'s Mail';
$lang->update_log = 'Update Log';
$lang->last_updater = 'Latest Update by';
$lang->cmd_board_list = 'Boards List';
$lang->cmd_module_config = 'Common Board Setting';
$lang->cmd_module_config = 'Common Board Settings';
$lang->cmd_board_info = 'Board Info';
$lang->cmd_list_setting = 'List Setting';
$lang->cmd_list_setting = 'List Settings';
$lang->cmd_list_items = 'Displayed Items and Order';
$lang->cmd_create_board = 'Create a new board';
$lang->cmd_create_board = 'Create a New Board';
$lang->cmd_manage_selected_board = 'Manage Selected Board';
$lang->about_layout_setup = 'You can manually modify board layout code. Insert or manage the widget code anywhere you want';
$lang->about_board_category = 'You can make board categories. When board category is broken, try rebuilding the cache file manually.';
$lang->about_except_notice = 'Notices will not be displayed in the normal list.<br />Caution: using this option can increase DB load if you have many visitors and lots of articles.';
$lang->about_use_bottom_list = 'Display the list at the bottom when viewing an article.';
$lang->about_customize_bottom_list = 'Calculating the bottom list consumes a lot of server resources.<br />You may be able to reduce DB load by not calculating it exactly when not needed.<br />This should have no effect on SEO.';
$lang->about_layout_setup = 'You can manually modify the board layout code. Insert or manage the widget code anywhere you want.';
$lang->about_board_category = 'You can make board categories. When a board category is broken, try rebuilding the cache file manually.';
$lang->about_except_notice = 'Notices will not be displayed in the normal list.<br />Caution: Using this option may increase DB load if you have many visitors and lots of posts.';
$lang->about_use_bottom_list = 'Display the list at the bottom when viewing a post.';
$lang->about_customize_bottom_list = 'Exact calculations of the lists consume a lot of server resources.<br />You can save server resources by calculating it roughly.<br />This should have no effect on SEO.';
$lang->about_use_anonymous_part1 = 'Hide the author\'s nickname to turn this board into an anonymous board.';
$lang->about_use_anonymous_part2 = 'It is more useful if you also hide the nickname in the skin.<br>Please also turn off document history, or the author\'s information may be revealed by the history.';
$lang->about_use_anonymous_part2 = 'It is more useful if you hide the nickname in the skin, as well.<br>Please concurrently turn off post history, which may unveil the author\'s information.';
$lang->about_anonymous_except_admin = 'The administrator\'s nickname will not be hidden.';
$lang->about_anonymous_name = 'You can customize the anonymous name that is displayed instead of the author\'s nickname.<br><b>$NUM</b> will be replaced with a random number that is unique to each member. (e.g. anon_$NUM → anon_12345678)<br><b>$DAILYNUM</b> will be replaced with a random number that is unique to each member but changes every day.<br><b>$DOCNUM</b> will be replaced with a random number that is unique to each member and changes from document to document.<br><b>$DOCDAILYNUM</b> will be replaced with a random number that is unique to each member and changes every day from document to document.<br>You can append a number to each variable, like <strong>$DAILYNUM:5</strong> to control the number of digits from 1 to 8.<br>To use hexadecimal digits that include some alphabets, use <strong>STR</strong> instead of <strong>NUM</strong>.';
$lang->about_anonymous_name = 'You can customize the anonymous name that will be displayed instead of the author\'s nickname.<br><b>$NUM</b> will be replaced with a random number that is unique to each member. (e.g. anon_$NUM → anon_12345678)<br><b>$DAILYNUM</b> will be replaced with a random number that is unique to each member but changes every day.<br><b>$DOCNUM</b> will be replaced with a random number that is unique to each member and changes from post to post.<br><b>$DOCDAILYNUM</b> will be replaced with a random number that is unique to each member and changes every day from post to post.<br>You can append a number to each variable, like <strong>$DAILYNUM:5</strong> to control the number of digits from 1 to 8.<br>To use hexadecimal digits that include some alphabets, use <strong>STR</strong> instead of <strong>NUM</strong>.';
$lang->about_board = 'This module is for creating and managing boards.';
$lang->about_consultation = 'Members who are not maangers will only see their own articles.<br>When this feature is enabled, non-members cannot read or write any articles on this board.';
$lang->about_secret = 'Users will be able to write secret articles or comments.';
$lang->about_admin_mail = 'A mail will be sent when an article or comment is submitted. Mails can be sent to mutiple mail addresses if connecting addresses with commas(,).';
$lang->about_consultation = 'Members who are not managers will only see their own posts.<br>When this feature is enabled, non-members cannot read or write any posts on this board.';
$lang->about_secret = 'Users will be able to write secret posts or comments.';
$lang->about_admin_mail = 'A mail will be sent when a post or comment is submitted. Mails can be sent to mutiple mail addresses if connecting addresses with commas(,).';
$lang->about_list_config = 'If using list-style skin, you may arrange items to display. However, this feature might not be availble for non-official skins. If you double-click target items and display items, then you can add / remove them';
$lang->about_use_status = 'Please select status that can be selected when you write article.';
$lang->about_use_status = 'Please select status that can be selected when you write a post.';
$lang->about_protect_comment = 'Prevent updating or deleting a comment if it has children.';
$lang->about_update_log = 'Store a log of every version of a document every time it is updated.';
$lang->skip_bottom_list_for_olddoc = 'Do not calculate the bottom list exactly when viewing an old article.';
$lang->about_update_log = 'Store a log of every version of a post every time it is updated.';
$lang->skip_bottom_list_for_olddoc = 'Do not calculate the bottom list exactly when viewing an old post.';
$lang->skip_bottom_list_for_robot = 'Do not calculate the bottom list exactly when a robot is visiting.';
$lang->msg_not_enough_point = 'Your point is not enough to write an article in this board.';
$lang->msg_not_enough_point = 'Your point is not enough to write a post in this board.';
$lang->write_comment = 'Write a comment';
$lang->msg_not_allow_comment = 'This article is not allowed to write comment.';
$lang->msg_not_allow_comment = 'This post is not allowed to write comment.';
$lang->no_board_instance = 'There is no board created.';
$lang->choose_board_instance = 'Please choose one or more board instance.';
$lang->comment_status = 'Comments Allowed';
@ -62,33 +63,41 @@ $lang->protect_comment = 'Protect Comment';
$lang->protect_admin_content = 'Protect Admin Content';
$lang->protect_regdate = 'Update/Delete Time Limit';
$lang->filter_specialchars = 'Block Abuse of Unicode Symbols';
$lang->document_length_limit = 'Limit Document Size';
$lang->comment_length_limit = 'Limit Comment Size';
$lang->document_length_limit = 'Limit Post Length';
$lang->comment_length_limit = 'Limit Comment Length';
$lang->inline_data_url_limit = 'Limit Data URLs';
$lang->about_document_length_limit = 'Restrict documents that are too large. This limit may be triggered by pasting content that contains a lot of unnecessary markup.<br>This setting has no effect on the administrator and board managers.';
$lang->about_document_length_limit = 'Restrict posts that are too large. This limit may be triggered by pasting content that contains a lot of unnecessary markup.<br>This setting has no effect on the administrator and board managers.';
$lang->about_comment_length_limit = 'Restrict comments that are too large.<br>This setting has no effect on the administrator and board managers.';
$lang->about_inline_data_url_limit = 'Restrict data: URLs that can be used to evade file size limits or cause processing issues.<br>This setting also applies to the administrator and board managers.';
$lang->update_order_on_comment = 'Update Document on New Comment';
$lang->about_update_order_on_comment = 'When a new comment is posted, update the update timestamp of the parent document. This is needed for forums.';
$lang->update_order_on_comment = 'Update Post on New Comment';
$lang->about_update_order_on_comment = 'When a new comment is posted, update the update timestamp of the parent post. This is needed for forums.';
$lang->about_filter_specialchars = 'Prevent use of excessive Unicode accents, RLO characters, and other symbols that hinder readability.';
$lang->document_force_to_move = 'Delete to Trash';
$lang->about_document_force_to_move = 'When a document is deleted, move to Trash instead of deleting it permamently.';
$lang->about_protect_regdate = 'Prevent updating or deleting a document or comment after a certain amount of time has passed. (Unit: day)';
$lang->about_protect_content = 'Prevent updating a document if there are comments on it.';
$lang->about_protect_admin_content = 'Prevent updating or deleting a document or comment written by the administrator, even by a user who is permitted to manage the board.';
$lang->msg_protect_delete_content = 'You cannot delete a document with comments on it.';
$lang->msg_protect_update_content = 'You cannot update a document with comments on it.';
$lang->msg_admin_document_no_modify = 'You cannot edit the administrator\'s document.';
$lang->about_protect_regdate = 'Prevent updating or deleting a post or comment after a certain amount of time has passed. (Unit: day)';
$lang->about_protect_content = 'Prevent updating a post if there are comments on it.';
$lang->about_protect_admin_content = 'Prevent updating or deleting a post or comment written by the administrator, even by a user who is permitted to manage the board.';
$lang->msg_protect_delete_content = 'You cannot delete a post with comments on it.';
$lang->msg_protect_update_content = 'You cannot update a post with comments on it.';
$lang->msg_admin_document_no_modify = 'You cannot edit the administrator\'s post.';
$lang->msg_admin_comment_no_modify = 'You cannot edit the administrator\'s comment.';
$lang->msg_board_delete_protect_comment = 'You cannot delete a comment when there are replies.';
$lang->msg_board_update_protect_comment = 'You cannot update a comment when there are replies.';
$lang->msg_protect_regdate_document = 'You cannot update or delete a document after %d days.';
$lang->msg_protect_regdate_document = 'You cannot update or delete a post after %d days.';
$lang->msg_protect_regdate_comment = 'You cannot update or delete a comment after %d days.';
$lang->msg_dont_have_update_log = 'This document has no update log.';
$lang->msg_dont_have_update_log = 'This post has no update log.';
$lang->msg_content_too_long = 'The content is too long.';
$lang->msg_data_url_restricted = 'The content has been restricted due to excessively large data URLs (such as inline images).';
$lang->original_letter = 'Original';
$lang->msg_warning_update_log = '<span class="x_label x_label-important">Warning!</span> This can massively increase the size of your database.';
$lang->reason_update = 'Reason for the update';
$lang->msg_no_update_id = 'The update ID field is mandatory.';
$lang->msg_no_update_log = 'There is no log for updates.';
$lang->cmd_modify_by_update_log = 'Modify this post with this log';
$lang->msg_admin_update_log = 'This post has been edited by the administrator. Please refer to the administrator.';
$lang->msg_update_log_revert = 'Are you sure to revert the post to this version?';
$lang->write_admin = 'Written by the administrator';
$lang->revert_reason_update = 'Revert to this version';
$lang->document_force_to_move = 'Delete to Recycle Bin';
$lang->about_document_force_to_move = 'When a post is deleted, depositing it in Recycle Bin instead of deleting it permamently.';
$lang->comment_delete_message = 'Leave Placeholder for Deleted Comment';
$lang->about_comment_delete_message = 'When a comment is deleted, leave a placeholder saying that it has been deleted.';
$lang->cmd_only_p_comment = 'Only if there are replies';
@ -96,10 +105,13 @@ $lang->cmd_all_comment_message = 'Always';
$lang->cmd_do_not_message = 'Never';
$lang->delete_placeholder = 'Delete Placeholder';
$lang->msg_document_notify_mail = '[%s] The new post : %s';
$lang->cmd_document_vote_user = 'Upvoted by';
$lang->cmd_comment_vote_user = 'Upvoted by';
$lang->msg_not_target = 'You can only see the referrers\' lists for posts and comments.';
$lang->cmd_board_combined_board = 'Combined Board';
$lang->about_board_combined_board = 'You can use this board to view documents from other boards. Press the Ctrl key and click to select multiple boards.<br /><span style="color:red">Warning: permissions for the current board will apply to all affected documents and comments.</span>';
$lang->about_board_combined_board = 'You can use this board to view posts from other boards. Press the Ctrl key and click to select multiple boards.<br /><span style="color:red">Warning: permissions for the current board will apply to all affected posts and comments.</span>';
$lang->cmd_board_include_modules = 'Include Boards';
$lang->cmd_board_include_modules_none = '(None)';
$lang->cmd_board_include_days = 'Include Duration';
$lang->about_board_include_days = 'Only combine recent documents. If this value is set to 0, all documents from selected boards will be combined.<br />Durations shorter than 1 day can be set as fractions of a day, e.g. 0.25 days = 6 hours.';
$lang->about_board_include_days = 'Only combine recent posts. If this value is set to 0, all posts from selected boards will be combined.<br />Durations shorter than 1 day can be set as fractions of a day, e.g. 0.25 days = 6 hours.';
$lang->cmd_board_include_notice = 'Include Notices';

View file

@ -22,8 +22,10 @@
{@ $_extra_vars = $oDocument->getExtraVars(); }
<dl class="xv">
<!--@foreach($_extra_vars as $key => $val)-->
<dt>{$val->name}</dt>
<dd>{$val->getValueHTML()}</dd>
<!--@if($val->hasValue())-->
<dt>{$val->name}</dt>
<dd>{$val->getValueHTML()}</dd>
<!--@end-->
<!--@end-->
</dl>
<!--@end-->

View file

@ -22,7 +22,7 @@
<!-- Extra Output -->
<div class="exOut" cond="$oDocument->isExtraVarsExists() && $oDocument->isAccessible()">
<table border="1" cellspacing="0" summary="Extra Form Output">
<tr loop="$oDocument->getExtraVars() => $key,$val">
<tr loop="$oDocument->getExtraVars() => $key,$val" cond="$val->hasValue()">
<th scope="row">{$val->name}</th>
<td>{$val->getValueHTML()}&nbsp;</td>
</tr>

View file

@ -26,7 +26,7 @@
<!-- Extra Output -->
<div class="exOut" cond="$oDocument->isExtraVarsExists() && $oDocument->isAccessible()">
<table border="1" cellspacing="0" summary="Extra Form Output">
<tr loop="$oDocument->getExtraVars() => $key,$val">
<tr loop="$oDocument->getExtraVars() => $key,$val" cond="$val->hasValue()">
<th scope="row">{$val->name}</th>
<td>{$val->getValueHTML()}&nbsp;</td>
</tr>

View file

@ -19,8 +19,13 @@
<div class="x_controls">
<select name="domain_srl" id="domain_srl">
<option value="-1" selected="selected"|cond="!isset($module_info->domain_srl) || $module_info->domain_srl == -1">{$lang->cmd_any_domain}</option>
{@ $domain_srl_list = []}
<!--@foreach(ModuleModel::getAllDomains(100)->data as $domain)-->
<option value="{$domain->domain_srl}" selected="selected"|cond="$domain->domain_srl == $module_info->domain_srl">{$domain->domain}</option>
{@ $domain_srl_list[] = $domain->domain_srl}
<!--@endif-->
<!--@if(isset($module_info->domain_srl) && $module_info->domain_srl > -1 && !in_array($module_info->domain_srl, $domain_srl_list))-->
<option value="-1" selected="selected">{$lang->deleted_domain}</option>
<!--@endif-->
</select>
<span class="baseurl">{\RX_BASEURL}<!--@if(!config('url.rewrite'))-->index.php?mid=<!--@endif--></span>

View file

@ -30,7 +30,14 @@
</block>
<block cond="$val->module_category_srl">{$module_category[$val->module_category_srl]->title}</block>
</td>
<td class="domain_prefix"><span class="domain">{$val->domain ?? ''}</span>{\RX_BASEURL}</td>
<td class="domain_prefix">
{@
if (isset($val->domain_srl) && $val->domain_srl > -1 && !isset($val->domain)):
$val->domain = lang('deleted_domain');
endif;
}
<span class="domain">{$val->domain ?? ''}</span>{\RX_BASEURL}
</td>
<td>{$val->mid}</td>
<td><a href="{getSiteUrl($val->domain,'','mid',$val->mid)}" target="_blank">{$val->browser_title}</a></td>
<td>{zdate($val->regdate,"Y-m-d")}</td>