Add configuration for thumbnail target

- 썸네일 생성 대상 설정과 썸네일 생성 방식 설정을 분리하여
  외부이미지 썸네일 생성을 방지할 수 있는 옵션 추가
- 문서 모듈과 관리 모듈에 흩어져 있는 썸네일 관련 언어파일을
  관리 모듈로 합침
This commit is contained in:
Kijin Sung 2017-09-12 14:20:05 +09:00
parent 28d5f12cf1
commit 1a6e84d9cc
22 changed files with 60 additions and 36 deletions

View file

@ -761,6 +761,7 @@ class adminAdminController extends admin
// Thumbnail settings
$oDocumentModel = getModel('document');
$document_config = $oDocumentModel->getDocumentConfig();
$document_config->thumbnail_target = $vars->thumbnail_target ?: 'all';
$document_config->thumbnail_type = $vars->thumbnail_type ?: 'crop';
$oModuleController = getController('module');
$oModuleController->insertModuleConfig('document', $document_config);

View file

@ -543,7 +543,13 @@ class adminAdminView extends admin
// Thumbnail settings
$oDocumentModel = getModel('document');
$config = $oDocumentModel->getDocumentConfig();
Context::set('thumbnail_target', $config->thumbnail_target ?: 'all');
Context::set('thumbnail_type', $config->thumbnail_type ?: 'crop');
if ($config->thumbnail_type === 'none')
{
Context::set('thumbnail_target', 'none');
Context::set('thumbnail_type', 'crop');
}
// Default and enabled languages
Context::set('supported_lang', Rhymix\Framework\Lang::getSupportedList());

View file

@ -248,7 +248,10 @@ $lang->timezone = 'Time Zone';
$lang->use_mobile_view = 'Enable Mobile View';
$lang->about_use_mobile_view = 'Show mobile page when visitors access with mobile devices.';
$lang->tablets_as_mobile = 'Treat Tablets as Mobile';
$lang->thumbnail_type = 'Select thumbnail type.';
$lang->thumbnail_target = 'Extract Thumbnail From';
$lang->thumbnail_target_all = 'All images';
$lang->thumbnail_target_attachment = 'Attached images only';
$lang->thumbnail_type = 'Thumbnail Type';
$lang->input_footer_script = 'Footer script';
$lang->detail_input_footer_script = 'Any content added here will be printed at the bottom of the page, except the admin module.';
$lang->thumbnail_crop = 'Crop';

View file

@ -40,6 +40,9 @@ $lang->about_use_ssl = 'Si l\'on choisit \'Optionnel\' , on utilise protocole SS
$lang->server_ports = 'déclarer le port de serveur';
$lang->about_server_ports = 'Si l\'on ne veut pas utiliser le port 80 pour HTTP mais un autre port, ou bien, si l\'on ne veut pas utiliser le port 443 pour HTTPS mais un autre port, on doit déclarer les ports.';
$lang->about_db_session = 'This setting will use PHP session used for authentication as DB. For the Websites which do not use web server frequently, you can uncheck this setting to improve response time. However, session DB will make it difficult to get current users, so you cannot use related functions.';
$lang->thumbnail_type = 'Type de la Vignette';
$lang->thumbnail_crop = 'Rogner';
$lang->thumbnail_ratio = 'Proportion';
$lang->trash = 'Poubelle';
$lang->timezone = 'Fuseau horaire';
$lang->about_use_sso = 'SSO will enable users to sign in just once for both default and virtual site. You will need this only if you are using virtual sites.';

View file

@ -244,6 +244,9 @@ $lang->timezone = '표준 시간대';
$lang->use_mobile_view = '모바일 뷰 사용';
$lang->about_use_mobile_view = '모바일 기기로 접속시 모바일 페이지를 보여줍니다.';
$lang->tablets_as_mobile = '태블릿도 모바일 취급';
$lang->thumbnail_target = '썸네일 생성 대상';
$lang->thumbnail_target_all = '모든 이미지 (외부 이미지 포함)';
$lang->thumbnail_target_attachment = '첨부된 이미지';
$lang->thumbnail_type = '썸네일 생성 방식';
$lang->input_footer_script = '하단(footer) 스크립트';
$lang->detail_input_footer_script = '최하단에 코드를 삽입합니다. 관리자 화면에는 적용되지 않습니다.';

View file

@ -32,6 +32,9 @@ $lang->today = 'Сегодня';
$lang->ssl_options['none'] = 'Никогда';
$lang->ssl_options['optional'] = 'На выбор';
$lang->ssl_options['always'] = 'Всегда';
$lang->thumbnail_type = 'Тип миниатюры';
$lang->thumbnail_crop = 'Обрезать';
$lang->thumbnail_ratio = 'Соотношение';
$lang->trash = 'мусор';
$lang->timezone = 'Часовой пояс';
$lang->move = 'Перейти';

View file

@ -88,7 +88,9 @@ $lang->action = 'Yürütme';
$lang->use_rewrite = 'Kısa bir adres kullanmak istiyor musunuz?';
$lang->timezone = 'Saat Dilimi';
$lang->use_mobile_view = 'Kullanıcılar mobil aygıtları ile siteye bağlandıklarında mobil sayfaı bu kullancılara göstermek istiyor musunuz?';
$lang->thumbnail_type = 'Bir küçük resim seçiniz.';
$lang->thumbnail_type = 'Küçük Resim Türü';
$lang->thumbnail_crop = 'Kırpılmış';
$lang->thumbnail_ratio = 'Oran';
$lang->input_footer_script = 'Alt (footer) Script Eklemek';
$lang->detail_input_footer_script = 'Script alt tarafa eklenmiştir. Yönetici sayfası çalışmıyor.';
$lang->corp = 'Crop (Kesme)';

View file

@ -56,6 +56,9 @@ $lang->ftp_remove_info = 'Xóa thông tin FTP.';
$lang->msg_ftp_invalid_path = 'Không tìm thấy thông tin của thư mục bạn đã nhập trên FTP.';
$lang->msg_self_restart_cache_engine = 'Hãy thiết lập lại bộ nhớ Cache hoặc Deamon Cache.';
$lang->autoinstall = 'Cập nhật tự động';
$lang->thumbnail_type = 'Định dạng hình nhỏ';
$lang->thumbnail_crop = 'Hình cắt';
$lang->thumbnail_ratio = 'Tỉ lệ';
$lang->trash = 'Thùng rác';
$lang->timezone = 'Múi giờ';
$lang->move = 'Di chuyển';

View file

@ -83,7 +83,9 @@ $lang->action = '执行';
$lang->use_rewrite = '是否开启伪静态?';
$lang->timezone = '时区';
$lang->use_mobile_view = '当用户使用移动终端访问页面的时候是否使用移动版?';
$lang->thumbnail_type = '选择缩略图生成方式';
$lang->thumbnail_type = '缩略图生成方式';
$lang->thumbnail_crop = '裁减(按指定大小裁剪图片)';
$lang->thumbnail_ratio = '比例(按原图比例缩略处理)';
$lang->input_footer_script = '输入页脚脚本';
$lang->detail_input_footer_script = '该脚本将被插入到页面的底部. 页面管理将无效.';
$lang->corp = '裁剪';

View file

@ -54,6 +54,9 @@ $lang->msg_self_restart_cache_engine = '請重新啟動 Memcached/cache daemon
$lang->autoinstall = '自動安裝';
$lang->last_week = '上週';
$lang->this_week = '本週';
$lang->thumbnail_type = '縮圖建立方式';
$lang->thumbnail_crop = '裁切';
$lang->thumbnail_ratio = '比例';
$lang->trash = '垃圾';
$lang->timezone = '時區';
$lang->about_use_sso = '此功能可讓用戶只需登入一次即可訪問多個網站。 使用虛擬網站,這將會是很重要的功能。';

View file

@ -116,6 +116,23 @@
<p class="x_help-block">{$lang->about_use_session_ssl}</p>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label">{$lang->thumbnail_target}</label>
<div class="x_controls">
<label for="thumbnail_target_all" class="x_inline">
<input type="radio" name="thumbnail_target" id="thumbnail_target_all" value="all" checked="checked"|cond="$thumbnail_target == 'all' || !$thumbnail_target" />
{$lang->thumbnail_target_all}
</label>
<label for="thumbnail_target_attachment" class="x_inline">
<input type="radio" name="thumbnail_target" id="thumbnail_target_attachment" value="attachment" checked="checked"|cond="$thumbnail_target == 'attachment'" />
{$lang->thumbnail_target_attachment}
</label>
<label for="thumbnail_target_none" class="x_inline">
<input type="radio" name="thumbnail_target" id="thumbnail_target_none" value="none" checked="checked"|cond="$thumbnail_target == 'none'" />
{$lang->thumbnail_none}
</label>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label">{$lang->thumbnail_type}</label>
<div class="x_controls">
@ -127,10 +144,6 @@
<input type="radio" name="thumbnail_type" id="thumbnail_type_ratio" value="ratio" checked="checked"|cond="$thumbnail_type == 'ratio'" />
{$lang->thumbnail_ratio}
</label>
<label for="thumbnail_type_none" class="x_inline">
<input type="radio" name="thumbnail_type" id="thumbnail_type_none" value="none" checked="checked"|cond="$thumbnail_type == 'none'" />
{$lang->thumbnail_none}
</label>
</div>
</div>
<div class="x_control-group">

View file

@ -627,11 +627,11 @@ class commentItem extends Object
{
$config = $GLOBALS['__document_config__'] = getModel('document')->getDocumentConfig();
}
if ($config->thumbnail_type === 'none')
if ($config->thumbnail_target === 'none' || $config->thumbnail_type === 'none')
{
return;
}
if(!in_array($thumbnail_type, array('crop', 'ratio', 'none')))
if(!in_array($thumbnail_type, array('crop', 'ratio')))
{
$thumbnail_type = $config->thumbnail_type ?: 'crop';
}
@ -713,7 +713,7 @@ class commentItem extends Object
}
// get an image file from the doc content if no file attached.
if(!$source_file)
if(!$source_file && $config->thumbnail_target !== 'attachment')
{
preg_match_all("!<img\s[^>]*?src=(\"|')([^\"' ]*?)(\"|')!is", $this->get('content'), $matches, PREG_SET_ORDER);
foreach($matches as $match)
@ -762,7 +762,10 @@ class commentItem extends Object
}
}
$output = FileHandler::createImageFile($source_file, $thumbnail_file, $width, $height, 'jpg', $thumbnail_type);
if($source_file)
{
$output = FileHandler::createImageFile($source_file, $thumbnail_file, $width, $height, 'jpg', $thumbnail_type);
}
// Remove source file if it was temporary
if($is_tmp_file)

View file

@ -954,11 +954,11 @@ class documentItem extends Object
{
$config = $GLOBALS['__document_config__'] = getModel('document')->getDocumentConfig();
}
if ($config->thumbnail_type === 'none')
if ($config->thumbnail_target === 'none' || $config->thumbnail_type === 'none')
{
return;
}
if(!in_array($thumbnail_type, array('crop', 'ratio', 'none')))
if(!in_array($thumbnail_type, array('crop', 'ratio')))
{
$thumbnail_type = $config->thumbnail_type ?: 'crop';
}
@ -974,7 +974,7 @@ class documentItem extends Object
{
$content = $this->get('content');
}
else
elseif($config->thumbnail_target !== 'attachment')
{
$args = new stdClass();
$args->document_srl = $this->document_srl;
@ -1045,7 +1045,7 @@ class documentItem extends Object
}
// If not exists, file an image file from the content
if(!$source_file)
if(!$source_file && $config->thumbnail_target !== 'attachment')
{
preg_match_all("!<img\s[^>]*?src=(\"|')([^\"' ]*?)(\"|')!is", $content, $matches, PREG_SET_ORDER);
foreach($matches as $match)

View file

@ -1,6 +1,5 @@
<?php
$lang->document_list = 'Documents List';
$lang->thumbnail_type = 'Thumbnail Type';
$lang->cmd_delete_all_thumbnail = 'Delete all thumbnails';
$lang->title_bold = 'Bold';
$lang->title_color = 'Color';

View file

@ -1,8 +1,5 @@
<?php
$lang->document_list = 'Liste des Documents';
$lang->thumbnail_type = 'Type de la Vignette';
$lang->thumbnail_crop = 'Rogner';
$lang->thumbnail_ratio = 'Proportion';
$lang->cmd_delete_all_thumbnail = 'Supprimer toutes les vignettes';
$lang->title_bold = 'Gras';
$lang->title_color = 'Couleur';

View file

@ -1,6 +1,5 @@
<?php
$lang->document_list = 'ドキュメントリスト';
$lang->thumbnail_type = 'サムネールタイプ';
$lang->cmd_delete_all_thumbnail = 'すべてのサムネール削除';
$lang->title_bold = 'タイトル太字';
$lang->title_color = 'タイトルの色';

View file

@ -1,6 +1,5 @@
<?php
$lang->document_list = '문서 목록';
$lang->thumbnail_type = '섬네일 생성 방법';
$lang->view_count_option = '조회수 설정';
$lang->view_count_option_all = '모두 계산';
$lang->view_count_option_some = '일부 계산';

View file

@ -1,8 +1,5 @@
<?php
$lang->document_list = 'Список документов';
$lang->thumbnail_type = 'Тип миниатюры';
$lang->thumbnail_crop = 'Обрезать';
$lang->thumbnail_ratio = 'Соотношение';
$lang->cmd_delete_all_thumbnail = 'Удалить все миниарюры';
$lang->title_bold = 'Жирное название';
$lang->title_color = 'Цвет названия';

View file

@ -1,8 +1,5 @@
<?php
$lang->document_list = 'Belge Listesi';
$lang->thumbnail_type = 'Küçük Resim Türü';
$lang->thumbnail_crop = 'Kırpılmış';
$lang->thumbnail_ratio = 'Oran';
$lang->cmd_delete_all_thumbnail = 'Tüm küçük resimleri sil';
$lang->title_bold = 'Kalın';
$lang->title_color = 'Renk';

View file

@ -1,8 +1,5 @@
<?php
$lang->document_list = 'Danh sách bài viết';
$lang->thumbnail_type = 'Định dạng hình nhỏ';
$lang->thumbnail_crop = 'Hình cắt';
$lang->thumbnail_ratio = 'Tỉ lệ';
$lang->cmd_delete_all_thumbnail = 'Xóa tất cả hình nhỏ';
$lang->title_bold = 'Chữ đậm';
$lang->title_color = 'Màu';

View file

@ -1,8 +1,5 @@
<?php
$lang->document_list = '主题列表';
$lang->thumbnail_type = '缩略图生成方式';
$lang->thumbnail_crop = '裁减(按指定大小裁剪图片)';
$lang->thumbnail_ratio = '比例(按原图比例缩略处理)';
$lang->cmd_delete_all_thumbnail = '删除全部缩略图';
$lang->title_bold = '粗标题';
$lang->title_color = '标题颜色';

View file

@ -1,8 +1,5 @@
<?php
$lang->document_list = '文章列表';
$lang->thumbnail_type = '縮圖建立方式';
$lang->thumbnail_crop = '裁切';
$lang->thumbnail_ratio = '比例';
$lang->cmd_delete_all_thumbnail = '刪除全部縮圖';
$lang->title_bold = '粗體';
$lang->title_color = '標題顏色';