Merge branch 'develop' of github.com:rhymix/rhymix into pr/notify-block

This commit is contained in:
BJRambo 2020-02-24 16:03:34 +00:00
commit c627aa9e7c
23 changed files with 89 additions and 52 deletions

View file

@ -175,27 +175,27 @@ class DisplayHandler extends Handler
{ {
$data = Rhymix\Framework\Debug::getDebugData(); $data = Rhymix\Framework\Debug::getDebugData();
$display_content = array_fill_keys(config('debug.display_content'), true); $display_content = array_fill_keys(config('debug.display_content'), true);
if (count($display_content) && !isset($display_content['entries'])) if (!isset($display_content['entries']))
{ {
$data->entries = null; $data->entries = null;
} }
if (count($display_content) && !isset($display_content['queries'])) if (!isset($display_content['queries']))
{ {
unset($data->queries); unset($data->queries);
} }
if (count($display_content) && !isset($display_content['slow_queries'])) if (!isset($display_content['slow_queries']))
{ {
unset($data->slow_queries); unset($data->slow_queries);
} }
if (count($display_content) && !isset($display_content['slow_triggers'])) if (!isset($display_content['slow_triggers']))
{ {
unset($data->slow_triggers); unset($data->slow_triggers);
} }
if (count($display_content) && !isset($display_content['slow_widgets'])) if (!isset($display_content['slow_widgets']))
{ {
unset($data->slow_widgets); unset($data->slow_widgets);
} }
if (count($display_content) && !isset($display_content['slow_remote_requests'])) if (!isset($display_content['slow_remote_requests']))
{ {
unset($data->slow_remote_requests); unset($data->slow_remote_requests);
} }

View file

@ -117,6 +117,11 @@ else
define('RX_POST', false); define('RX_POST', false);
} }
/**
* RX_WINDOWS is true if the operating system is Windows.
*/
define('RX_WINDOWS', strncasecmp(PHP_OS, 'WIN', 3) === 0);
/** /**
* XE core compatibility constants (may be used by XE-compatible plugins and themes). * XE core compatibility constants (may be used by XE-compatible plugins and themes).
*/ */

View file

@ -88,13 +88,13 @@ return array(
), ),
'debug' => array( 'debug' => array(
'enabled' => true, 'enabled' => true,
'log_slow_queries' => 0, 'log_slow_queries' => 0.25,
'log_slow_triggers' => 0, 'log_slow_triggers' => 0.25,
'log_slow_widgets' => 0, 'log_slow_widgets' => 0.25,
'log_slow_remote_requests' => 0, 'log_slow_remote_requests' => 1.25,
'log_filename' => null, 'log_filename' => null,
'display_type' => array('comment'), 'display_type' => array('comment'),
'display_content' => array(), 'display_content' => array('request_info', 'entries', 'errors', 'queries'),
'display_to' => 'admin', 'display_to' => 'admin',
'write_error_log' => 'fatal', 'write_error_log' => 'fatal',
'allow' => array(), 'allow' => array(),

View file

@ -198,20 +198,19 @@ class Security
// Use other good sources of entropy if random_bytes() is not available. // Use other good sources of entropy if random_bytes() is not available.
if ($entropy === false) if ($entropy === false)
{ {
$is_windows = (defined('\PHP_OS') && strtoupper(substr(\PHP_OS, 0, 3)) === 'WIN');
if(function_exists('openssl_random_pseudo_bytes')) if(function_exists('openssl_random_pseudo_bytes'))
{ {
$entropy = openssl_random_pseudo_bytes($entropy_capped_bytes); $entropy = openssl_random_pseudo_bytes($entropy_capped_bytes);
} }
elseif(function_exists('mcrypt_create_iv') && !$is_windows) elseif(function_exists('mcrypt_create_iv') && !\RX_WINDOWS)
{ {
$entropy = mcrypt_create_iv($entropy_capped_bytes, \MCRYPT_DEV_URANDOM); $entropy = mcrypt_create_iv($entropy_capped_bytes, \MCRYPT_DEV_URANDOM);
} }
elseif(function_exists('mcrypt_create_iv') && $is_windows) elseif(function_exists('mcrypt_create_iv') && \RX_WINDOWS)
{ {
$entropy = mcrypt_create_iv($entropy_capped_bytes, \MCRYPT_RAND); $entropy = mcrypt_create_iv($entropy_capped_bytes, \MCRYPT_RAND);
} }
elseif(!$is_windows && @is_readable('/dev/urandom')) elseif(!\RX_WINDOWS && @is_readable('/dev/urandom'))
{ {
$fp = fopen('/dev/urandom', 'rb'); $fp = fopen('/dev/urandom', 'rb');
if (function_exists('stream_set_read_buffer')) // This function does not exist in HHVM. if (function_exists('stream_set_read_buffer')) // This function does not exist in HHVM.

View file

@ -152,7 +152,7 @@ class Storage
public static function isExecutable($path) public static function isExecutable($path)
{ {
$path = rtrim($path, '/\\'); $path = rtrim($path, '/\\');
if (function_exists('exec')) if (function_exists('exec') && !\RX_WINDOWS)
{ {
@exec('/bin/ls -l ' . escapeshellarg($path), $output, $return_var); @exec('/bin/ls -l ' . escapeshellarg($path), $output, $return_var);
if ($return_var === 0) if ($return_var === 0)
@ -880,7 +880,7 @@ class Storage
public static function recommendUmask() public static function recommendUmask()
{ {
// On Windows, set the umask to 0000. // On Windows, set the umask to 0000.
if (strncasecmp(\PHP_OS, 'Win', 3) === 0) if (\RX_WINDOWS)
{ {
return '0000'; return '0000';
} }

View file

@ -1309,7 +1309,7 @@ function closePopupScript()
function reload($isOpener = FALSE) function reload($isOpener = FALSE)
{ {
$reloadScript = $isOpener ? 'window.opener.location.reload();' : 'window.location.reload();'; $reloadScript = $isOpener ? 'window.opener.location.reload();' : 'window.location.reload();';
echo sprintf('<script> %s </script>', $raloadScript); echo sprintf('<script> %s </script>', $reloadScript);
} }
/* End of file func.inc.php */ /* End of file func.inc.php */

View file

@ -2,7 +2,7 @@
<?php echo '[' . $data->timestamp . ']' . "\n"; ?> <?php echo '[' . $data->timestamp . ']' . "\n"; ?>
<?php if (!count($display_content) || isset($display_content['request_info'])): ?> <?php if (isset($display_content['request_info'])): ?>
Request / Response Request / Response
================== ==================
Request URL: <?php echo $data->url . "\n"; ?> Request URL: <?php echo $data->url . "\n"; ?>
@ -30,7 +30,7 @@ Peak Memory Usage: <?php echo sprintf('%0.1f MB', memory_get_peak_usage(true) /
Included Files: <?php echo count(get_included_files()) . "\n"; ?> Included Files: <?php echo count(get_included_files()) . "\n"; ?>
<?php endif; ?> <?php endif; ?>
<?php if (!count($display_content) || isset($display_content['entries'])): ?> <?php if (isset($display_content['entries'])): ?>
Debug Entries Debug Entries
============= =============
<?php <?php
@ -58,7 +58,7 @@ Debug Entries
?> ?>
<?php endif; ?> <?php endif; ?>
<?php if (!count($display_content) || isset($display_content['errors'])): ?> <?php if (isset($display_content['errors'])): ?>
PHP Errors and Warnings PHP Errors and Warnings
======================= =======================
<?php <?php
@ -78,7 +78,7 @@ PHP Errors and Warnings
?> ?>
<?php endif; ?> <?php endif; ?>
<?php if (!count($display_content) || isset($display_content['queries'])): ?> <?php if (isset($display_content['queries'])): ?>
Database Queries Database Queries
================ ================
<?php <?php
@ -101,7 +101,7 @@ Database Queries
?> ?>
<?php endif; ?> <?php endif; ?>
<?php if (!count($display_content) || isset($display_content['slow_queries'])): ?> <?php if (isset($display_content['slow_queries'])): ?>
Slow Queries Slow Queries
============ ============
<?php <?php
@ -124,7 +124,7 @@ Slow Queries
?> ?>
<?php endif; ?> <?php endif; ?>
<?php if (!count($display_content) || isset($display_content['slow_triggers'])): ?> <?php if (isset($display_content['slow_triggers'])): ?>
Slow Triggers Slow Triggers
============= =============
<?php <?php
@ -142,7 +142,7 @@ Slow Triggers
?> ?>
<?php endif; ?> <?php endif; ?>
<?php if (!count($display_content) || isset($display_content['slow_widgets'])): ?> <?php if (isset($display_content['slow_widgets'])): ?>
Slow Widgets Slow Widgets
============ ============
<?php <?php
@ -159,7 +159,7 @@ Slow Widgets
?> ?>
<?php endif; ?> <?php endif; ?>
<?php if (!count($display_content) || isset($display_content['slow_remote_requests'])): ?> <?php if (isset($display_content['slow_remote_requests'])): ?>
Slow Remote Requests Slow Remote Requests
==================== ====================
<?php <?php

View file

@ -832,7 +832,7 @@ class adminAdminController extends admin
Rhymix\Framework\Config::set('debug.write_error_log', strval($vars->debug_write_error_log) ?: 'fatal'); Rhymix\Framework\Config::set('debug.write_error_log', strval($vars->debug_write_error_log) ?: 'fatal');
// Debug content // Debug content
$debug_content = array_values($vars->debug_display_content); $debug_content = array_values($vars->debug_display_content ?: array());
Rhymix\Framework\Config::set('debug.display_content', $debug_content); Rhymix\Framework\Config::set('debug.display_content', $debug_content);
// Log filename // Log filename

View file

@ -325,8 +325,11 @@ class adminAdminView extends admin
} }
// Get need update from easy install // Get need update from easy install
$oAutoinstallAdminModel = getAdminModel('autoinstall'); //$oAutoinstallAdminModel = getAdminModel('autoinstall');
$needUpdateList = $oAutoinstallAdminModel->getNeedUpdateList(); //$needUpdateList = $oAutoinstallAdminModel->getNeedUpdateList();
$needUpdateList = array();
// Check counter addon
$site_module_info = Context::get('site_module_info'); $site_module_info = Context::get('site_module_info');
$oAddonAdminModel = getAdminModel('addon'); $oAddonAdminModel = getAdminModel('addon');
$counterAddonActivated = $oAddonAdminModel->isActivatedAddon('counter', $site_module_info->site_srl ); $counterAddonActivated = $oAddonAdminModel->isActivatedAddon('counter', $site_module_info->site_srl );

View file

@ -56,14 +56,14 @@
<div class="x_control-group"> <div class="x_control-group">
<label class="x_control-label" for="debug_log_slow_widgets">{$lang->debug_display_content}</label> <label class="x_control-label" for="debug_log_slow_widgets">{$lang->debug_display_content}</label>
<div class="x_controls"> <div class="x_controls">
<label for="debug_display_content_request_info" class="x_inline"><input type="checkbox" name="debug_display_content[]" id="debug_display_content_request_info" value="request_info" checked="checked"|cond="!count($debug_display_content) || in_array('request_info', $debug_display_content)" /> {$lang->debug_display_content_request_info}</label> <label for="debug_display_content_request_info" class="x_inline"><input type="checkbox" name="debug_display_content[]" id="debug_display_content_request_info" value="request_info" checked="checked"|cond="in_array('request_info', $debug_display_content)" /> {$lang->debug_display_content_request_info}</label>
<label for="debug_display_content_entries" class="x_inline"><input type="checkbox" name="debug_display_content[]" id="debug_display_content_entries" value="entries" checked="checked"|cond="!count($debug_display_content) || in_array('entries', $debug_display_content)" /> {$lang->debug_display_content_entries}</label> <label for="debug_display_content_entries" class="x_inline"><input type="checkbox" name="debug_display_content[]" id="debug_display_content_entries" value="entries" checked="checked"|cond="in_array('entries', $debug_display_content)" /> {$lang->debug_display_content_entries}</label>
<label for="debug_display_content_errors" class="x_inline"><input type="checkbox" name="debug_display_content[]" id="debug_display_content_errors" value="errors" checked="checked"|cond="!count($debug_display_content) || in_array('errors', $debug_display_content)" /> {$lang->debug_display_content_errors}</label> <label for="debug_display_content_errors" class="x_inline"><input type="checkbox" name="debug_display_content[]" id="debug_display_content_errors" value="errors" checked="checked"|cond="in_array('errors', $debug_display_content)" /> {$lang->debug_display_content_errors}</label>
<label for="debug_display_content_queries" class="x_inline"><input type="checkbox" name="debug_display_content[]" id="debug_display_content_queries" value="queries" checked="checked"|cond="!count($debug_display_content) || in_array('queries', $debug_display_content)" /> {$lang->debug_display_content_queries}</label> <label for="debug_display_content_queries" class="x_inline"><input type="checkbox" name="debug_display_content[]" id="debug_display_content_queries" value="queries" checked="checked"|cond="in_array('queries', $debug_display_content)" /> {$lang->debug_display_content_queries}</label>
<label for="debug_display_content_slow_queries" class="x_inline"><input type="checkbox" name="debug_display_content[]" id="debug_display_content_slow_queries" value="slow_queries" checked="checked"|cond="!count($debug_display_content) || in_array('slow_queries', $debug_display_content)" /> {$lang->debug_display_content_slow_queries}</label> <label for="debug_display_content_slow_queries" class="x_inline"><input type="checkbox" name="debug_display_content[]" id="debug_display_content_slow_queries" value="slow_queries" checked="checked"|cond="in_array('slow_queries', $debug_display_content)" /> {$lang->debug_display_content_slow_queries}</label>
<label for="debug_display_content_slow_triggers" class="x_inline"><input type="checkbox" name="debug_display_content[]" id="debug_display_content_slow_triggers" value="slow_triggers" checked="checked"|cond="!count($debug_display_content) || in_array('slow_triggers', $debug_display_content)" /> {$lang->debug_display_content_slow_triggers}</label> <label for="debug_display_content_slow_triggers" class="x_inline"><input type="checkbox" name="debug_display_content[]" id="debug_display_content_slow_triggers" value="slow_triggers" checked="checked"|cond="in_array('slow_triggers', $debug_display_content)" /> {$lang->debug_display_content_slow_triggers}</label>
<label for="debug_display_content_slow_widgets" class="x_inline"><input type="checkbox" name="debug_display_content[]" id="debug_display_content_slow_widgets" value="slow_widgets" checked="checked"|cond="!count($debug_display_content) || in_array('slow_widgets', $debug_display_content)" /> {$lang->debug_display_content_slow_widgets}</label> <label for="debug_display_content_slow_widgets" class="x_inline"><input type="checkbox" name="debug_display_content[]" id="debug_display_content_slow_widgets" value="slow_widgets" checked="checked"|cond="in_array('slow_widgets', $debug_display_content)" /> {$lang->debug_display_content_slow_widgets}</label>
<label for="debug_display_content_slow_remote_requests" class="x_inline"><input type="checkbox" name="debug_display_content[]" id="debug_display_content_slow_remote_requests" value="slow_remote_requests" checked="checked"|cond="!count($debug_display_content) || in_array('slow_remote_requests', $debug_display_content)" /> {$lang->debug_display_content_slow_remote_requests}</label> <label for="debug_display_content_slow_remote_requests" class="x_inline"><input type="checkbox" name="debug_display_content[]" id="debug_display_content_slow_remote_requests" value="slow_remote_requests" checked="checked"|cond="in_array('slow_remote_requests', $debug_display_content)" /> {$lang->debug_display_content_slow_remote_requests}</label>
</div> </div>
</div> </div>
<div class="x_control-group"> <div class="x_control-group">

View file

@ -1425,6 +1425,7 @@ jQuery(function($){
// Details toggle in admin table // Details toggle in admin table
var simpleBtn = $('.x .dsTg .__simple'); var simpleBtn = $('.x .dsTg .__simple');
var detailBtn = $('.x .dsTg .__detail'); var detailBtn = $('.x .dsTg .__detail');
var tableContainer = $('.x .dsTg');
var tdTitle = $('.x .dsTg td.title'); var tdTitle = $('.x .dsTg td.title');
tdTitle.each(function(){ tdTitle.each(function(){
var $t = $(this); var $t = $(this);
@ -1439,12 +1440,14 @@ jQuery(function($){
simples.show(); simples.show();
detailBtn.removeClass('x_active'); detailBtn.removeClass('x_active');
simpleBtn.addClass('x_active'); simpleBtn.addClass('x_active');
tableContainer.addClass('__simpleView');
}; };
var detailBtnFn = function(){ var detailBtnFn = function(){
details.show(); details.show();
simples.hide(); simples.hide();
detailBtn.addClass('x_active'); detailBtn.addClass('x_active');
simpleBtn.removeClass('x_active'); simpleBtn.removeClass('x_active');
tableContainer.removeClass('__simpleView');
}; };
simpleBtn.click(simpleBtnFn); simpleBtn.click(simpleBtnFn);
detailBtn.click(detailBtnFn); detailBtn.click(detailBtnFn);

View file

@ -201,6 +201,12 @@ class autoinstallAdminController extends autoinstall
foreach($packages as $package_srl) foreach($packages as $package_srl)
{ {
$package = $oModel->getPackage($package_srl); $package = $oModel->getPackage($package_srl);
$package->type = $oModel->getTypeFromPath($package->path);
if ($package->type === 'core')
{
continue;
}
if($oAdminModel->checkUseDirectModuleInstall($package)->toBool()) if($oAdminModel->checkUseDirectModuleInstall($package)->toBool())
{ {
$oModuleInstaller = new DirectModuleInstaller($package); $oModuleInstaller = new DirectModuleInstaller($package);

View file

@ -215,7 +215,6 @@ class autoinstallAdminModel extends autoinstall
if($packageInfo->type == 'core') if($packageInfo->type == 'core')
{ {
//$title = 'XpressEngine';
continue; continue;
} }
else else

View file

@ -216,7 +216,7 @@ class autoinstallAdminView extends autoinstall
if($v->type == "core") if($v->type == "core")
{ {
$v->avail_remove = FALSE; continue;
} }
else if($v->type == "module") else if($v->type == "module")
{ {

View file

@ -7,7 +7,7 @@
<div loop="$categories => $category" cond="$category->depth == 0"> <div loop="$categories => $category" cond="$category->depth == 0">
<h2>{$category->title}</h2> <h2>{$category->title}</h2>
<ul> <ul>
<li loop="$category->children => $children" class="active"|cond="$children->category_srl == $category_srl"> <li loop="$category->children => $children" class="active"|cond="$children->category_srl == $category_srl" cond="$children->category_srl != 18322907">
<a href="{getUrl('','module','admin','act','dispAutoinstallAdminIndex','category_srl',$children->category_srl,'childrenList','')}">{$children->title}({$children->nPackages})</a> <a href="{getUrl('','module','admin','act','dispAutoinstallAdminIndex','category_srl',$children->category_srl,'childrenList','')}">{$children->title}({$children->nPackages})</a>
</li> </li>
</ul> </ul>

View file

@ -17,10 +17,6 @@
</ul> </ul>
</div> </div>
<div cond="$contain_core" class="x_alert x_alert-block">
<h4>{$lang->msg_update_core_title}</h4>
<p>{$lang->msg_update_core}</p>
</div>
<div cond="$package->installed" class="x_well"> <div cond="$package->installed" class="x_well">
<p>{$lang->current_version}: {$package->cur_version} <block cond="$package->need_update">({$lang->require_update})</block></p> <p>{$lang->current_version}: {$package->cur_version} <block cond="$package->need_update">({$lang->require_update})</block></p>
</div> </div>

View file

@ -720,7 +720,10 @@ class commentController extends comment
$oMail->setSubject($mail_title); $oMail->setSubject($mail_title);
$oMail->setBody($mail_content); $oMail->setBody($mail_content);
$oMail->setFrom(config('mail.default_from') ?: $member_info->email_address, $member_info->nick_name); $oMail->setFrom(config('mail.default_from') ?: $member_info->email_address, $member_info->nick_name);
$oMail->setReplyTo($member_info->email_address); if($member_info->email_address)
{
$oMail->setReplyTo($member_info->email_address);
}
foreach (array_map('trim', explode(',', $module_info->admin_mail)) as $email_address) foreach (array_map('trim', explode(',', $module_info->admin_mail)) as $email_address)
{ {
if ($email_address && $email_address !== $author_email_address) if ($email_address && $email_address !== $author_email_address)

View file

@ -77,8 +77,16 @@ class fileAdminController extends file
$config->image_remove_exif_data = Context::get('image_remove_exif_data') === 'Y' ? true : false; $config->image_remove_exif_data = Context::get('image_remove_exif_data') === 'Y' ? true : false;
$config->video_thumbnail = Context::get('video_thumbnail') === 'Y' ? true : false; $config->video_thumbnail = Context::get('video_thumbnail') === 'Y' ? true : false;
$config->video_mp4_gif_time = intval(Context::get('video_mp4_gif_time')); $config->video_mp4_gif_time = intval(Context::get('video_mp4_gif_time'));
$config->ffmpeg_command = escape(utf8_trim(Context::get('ffmpeg_command'))) ?: '/usr/bin/ffmpeg'; if (RX_WINDOWS)
$config->ffprobe_command = escape(utf8_trim(Context::get('ffprobe_command'))) ?: '/usr/bin/ffprobe'; {
$config->ffmpeg_command = escape(Context::get('ffmpeg_command')) ?: 'C:\Program Files\ffmpeg\bin\ffmpeg.exe';
$config->ffprobe_command = escape(Context::get('ffprobe_command')) ?: 'C:\Program Files\ffmpeg\bin\ffprobe.exe';
}
else
{
$config->ffmpeg_command = escape(utf8_trim(Context::get('ffmpeg_command'))) ?: '/usr/bin/ffmpeg';
$config->ffprobe_command = escape(utf8_trim(Context::get('ffprobe_command'))) ?: '/usr/bin/ffprobe';
}
// Check maximum file size // Check maximum file size
if (PHP_INT_SIZE < 8) if (PHP_INT_SIZE < 8)

View file

@ -1178,8 +1178,15 @@ class fileController extends file
$adjusted['height'] -= $adjusted['height'] % 2; $adjusted['height'] -= $adjusted['height'] % 2;
// Convert using ffmpeg // Convert using ffmpeg
$command = $config->ffmpeg_command; if (RX_WINDOWS)
$command .= ' -i ' . escapeshellarg($file_info['tmp_name']); {
$command = escapeshellarg($config->ffmpeg_command);
}
else
{
$command = $config->ffmpeg_command;
}
$command .= ' -nostdin -i ' . escapeshellarg($file_info['tmp_name']);
$command .= ' -movflags +faststart -pix_fmt yuv420p -c:v libx264 -crf 23'; $command .= ' -movflags +faststart -pix_fmt yuv420p -c:v libx264 -crf 23';
$command .= sprintf(' -vf "scale=%d:%d"', $adjusted['width'], $adjusted['height']); $command .= sprintf(' -vf "scale=%d:%d"', $adjusted['width'], $adjusted['height']);
$command .= ' ' . escapeshellarg($output_name); $command .= ' ' . escapeshellarg($output_name);

View file

@ -3,6 +3,9 @@
<div class="hx h2"> <div class="hx h2">
<h2>{$system_message}</h2> <h2>{$system_message}</h2>
</div> </div>
<div class="message" cond="$system_message_detail">
{$system_message_detail}
</div>
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/message/m.skin/default/system_message/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}"> <div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/message/m.skin/default/system_message/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p> <p>{$XE_VALIDATOR_MESSAGE}</p>
</div> </div>
@ -62,4 +65,4 @@ jQuery(function($){
} }
}); });
}); });
</script> </script>

View file

@ -736,6 +736,7 @@ class moduleModel extends module
$module_info->homepage = $xml_obj->link->body; $module_info->homepage = $xml_obj->link->body;
$module_info->category = $xml_obj->category->body; $module_info->category = $xml_obj->category->body;
if(!$module_info->category) $module_info->category = 'service'; if(!$module_info->category) $module_info->category = 'service';
$date_obj = (object)array('y' => 0, 'm' => 0, 'd' => 0);
sscanf($xml_obj->date->body, '%d-%d-%d', $date_obj->y, $date_obj->m, $date_obj->d); sscanf($xml_obj->date->body, '%d-%d-%d', $date_obj->y, $date_obj->m, $date_obj->d);
$module_info->date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d); $module_info->date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d);
$module_info->license = $xml_obj->license->body; $module_info->license = $xml_obj->license->body;
@ -761,6 +762,7 @@ class moduleModel extends module
$module_info->version = $xml_obj->attrs->version; $module_info->version = $xml_obj->attrs->version;
$module_info->category = $xml_obj->attrs->category; $module_info->category = $xml_obj->attrs->category;
if(!$module_info->category) $module_info->category = 'service'; if(!$module_info->category) $module_info->category = 'service';
$date_obj = (object)array('y' => 0, 'm' => 0, 'd' => 0);
sscanf($xml_obj->author->attrs->date, '%d. %d. %d', $date_obj->y, $date_obj->m, $date_obj->d); sscanf($xml_obj->author->attrs->date, '%d. %d. %d', $date_obj->y, $date_obj->m, $date_obj->d);
$module_info->date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d); $module_info->date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d);
$author_obj = new stdClass(); $author_obj = new stdClass();

View file

@ -13,6 +13,9 @@
top: -1px; top: -1px;
} }
} }
.__simpleView .fvOff,.__simpleView .fvOn{
top:0;
}
.fvOff{ .fvOff{
background-image: data-uri('images/star-empty.svg'); background-image: data-uri('images/star-empty.svg');
} }

View file

@ -319,7 +319,7 @@ class pageAdminController extends page
$oDocument = $oDocumentModel->getDocument($obj->document_srl); $oDocument = $oDocumentModel->getDocument($obj->document_srl);
$bAnonymous = false; $bAnonymous = false;
$target = ($obj->ismobile == 'Y') ? 'mdocument_srl' : 'document_srl'; $target = ($obj->isMobile == 'Y') ? 'mdocument_srl' : 'document_srl';
// 이미 존재하는 경우 수정 // 이미 존재하는 경우 수정
if($oDocument->isExists() && $oDocument->document_srl == $obj->document_srl) if($oDocument->isExists() && $oDocument->document_srl == $obj->document_srl)
@ -348,7 +348,7 @@ class pageAdminController extends page
// 결과를 리턴 // 결과를 리턴
$this->add('mid', Context::get('mid')); $this->add('mid', Context::get('mid'));
$this->add('document_srl', $output->get('document_srl')); $this->add('document_srl', $output->get('document_srl'));
$this->add('is_mobile', $obj->ismobile); $this->add('is_mobile', $obj->isMobile);
// 성공 메세지 등록 // 성공 메세지 등록
$this->setMessage($msg_code); $this->setMessage($msg_code);