diff --git a/CHANGELOG.md b/CHANGELOG.md index bb4883ab..47f02e75 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,8 @@ v3.4.2 (27/03/2019) - Fix lỗi không cài đặt được ở 1 số máy ✓ - Fix lỗi không hiện công thức toán khi làm bài ✓ - Rewrite URL ✓ - - Tối ưu lại một số code ✗ + - Thêm upload ảnh trong nội dung câu hỏi ✓ + - Tối ưu lại một số code ✓ - Thêm comment cho các hàm phục vụ cho việc bảo trì, nâng cấp ✗ v3.4.1 (17/03/2019) diff --git a/GUIDE.md b/GUIDE.md index 34423b6a..4e6d96bb 100755 --- a/GUIDE.md +++ b/GUIDE.md @@ -9,6 +9,7 @@ Nếu đã kiểm tra lại và vẫn lỗi, bạn có thể mở file config/connect.php sửa trực tiếp kết nối trong đó, hoặc liên hệ báo lỗi tới email: dzu6996@gmail.com +- Sửa URL trang web trong config/config.php - Sửa tài khoản gửi email quên mật khẩu tại /controllers/controller_login.php dòng 127, 128 - Tài khoản mặc định: diff --git a/resource/config/config.php b/resource/config/config.php index 7ec20549..2c7b894a 100755 --- a/resource/config/config.php +++ b/resource/config/config.php @@ -16,4 +16,5 @@ class Config const EMAIL = "dzu6996@gmail.com"; const RELEASE = "27/03/2019"; const TIMEZONE = "Asia/Bangkok"; + const APP_URL = "http://localhost/"; } diff --git a/resource/controllers/controller_admin.php b/resource/controllers/controller_admin.php index 9dda62fc..76d2a818 100755 --- a/resource/controllers/controller_admin.php +++ b/resource/controllers/controller_admin.php @@ -6,6 +6,8 @@ * Mail: dzu6996@gmail.com **/ +require_once('core/Base.php'); +require_once('config/config.php'); require_once('models/model_admin.php'); require_once('views/view_admin.php'); //load thư viện PhpSpreadSheet @@ -1001,13 +1003,29 @@ public function submit_update_avatar() $duoi = explode('.', $_FILES['file']['name']); $duoi = $duoi[(count($duoi)-1)]; if ($duoi === 'jpg' || $duoi === 'png') { - if (move_uploaded_file($_FILES['file']['tmp_name'], 'res/img/avatar/'.$this->info['username'].'_' . $_FILES['file']['name'])) { + if (move_uploaded_file($_FILES['file']['tmp_name'], 'upload/avatar/'.$this->info['username'].'_' . $_FILES['file']['name'])) { $avatar = $this->info['username'] .'_' . $_FILES['file']['name']; $update = $this->update_avatar($avatar, $this->info['username']); } } } } + public function uploadImage() + { + if (isset($_FILES['file'])) { + $base = new Base(); + $res = array(); + $path = 'upload/question_images/'; + $upload = $base->uploadImage($_FILES['file'],$path); + if($upload != false) { + $res['url'] = Config::APP_URL . $path . $upload; + $res['stt'] = true; + } + else + $res['stt'] = false; + echo json_encode($res); + } + } public function delete_check_students() { $result = array(); diff --git a/resource/controllers/controller_student.php b/resource/controllers/controller_student.php index c764212d..0b85f131 100755 --- a/resource/controllers/controller_student.php +++ b/resource/controllers/controller_student.php @@ -119,7 +119,7 @@ public function submit_update_avatar() $duoi = explode('.', $_FILES['file']['name']); $duoi = $duoi[(count($duoi)-1)]; if ($duoi === 'jpg' || $duoi === 'png') { - if (move_uploaded_file($_FILES['file']['tmp_name'], 'res/img/avatar/'.$this->info['username'].'_' . $_FILES['file']['name'])) { + if (move_uploaded_file($_FILES['file']['tmp_name'], 'upload/avatar/'.$this->info['username'].'_' . $_FILES['file']['name'])) { $avatar = $this->info['username'] .'_' . $_FILES['file']['name']; $update = $this->update_avatar($avatar, $this->info['username']); } diff --git a/resource/controllers/controller_teacher.php b/resource/controllers/controller_teacher.php index c477602a..0e181bbf 100755 --- a/resource/controllers/controller_teacher.php +++ b/resource/controllers/controller_teacher.php @@ -68,7 +68,7 @@ public function submit_update_avatar() $duoi = explode('.', $_FILES['file']['name']); $duoi = $duoi[(count($duoi)-1)]; if ($duoi === 'jpg' || $duoi === 'png') { - if (move_uploaded_file($_FILES['file']['tmp_name'], 'res/img/avatar/'.$this->info['username'].'_' . $_FILES['file']['name'])) { + if (move_uploaded_file($_FILES['file']['tmp_name'], 'upload/avatar/'.$this->info['username'].'_' . $_FILES['file']['name'])) { $avatar = $this->info['username'] .'_' . $_FILES['file']['name']; $update = $this->update_avatar($avatar, $this->info['username']); } diff --git a/resource/core/Base.php b/resource/core/Base.php new file mode 100644 index 00000000..5663eef2 --- /dev/null +++ b/resource/core/Base.php @@ -0,0 +1,46 @@ +convertString($expl[0]); + $hash = md5(time()); + if ($ext === 'jpg' || $ext === 'png' || $ext === 'jpeg') { + $new_name = $hash .'_' . $name . '.' . $ext; + if (move_uploaded_file($file['tmp_name'], $path . $new_name)) { + return $new_name; + } else { + return false; + } + } + + } + public function convertString($str) { + $str = trim(mb_strtolower($str)); + $str = preg_replace('/(à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ)/', 'a', $str); + $str = preg_replace('/(è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ)/', 'e', $str); + $str = preg_replace('/(ì|í|ị|ỉ|ĩ)/', 'i', $str); + $str = preg_replace('/(ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ)/', 'o', $str); + $str = preg_replace('/(ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ)/', 'u', $str); + $str = preg_replace('/(ỳ|ý|ỵ|ỷ|ỹ)/', 'y', $str); + $str = preg_replace('/(đ)/', 'd', $str); + $str = preg_replace('/[^a-z0-9-\s]/', '', $str); + $str = preg_replace('/([\s]+)/', '-', $str); + return $str; + } +} + +?> \ No newline at end of file diff --git a/resource/install.php b/resource/install.php index 89432c68..691cee83 100755 --- a/resource/install.php +++ b/resource/install.php @@ -161,6 +161,7 @@ function step_error() echo "Tài khoản mặc định: admin
"; echo "Mật khẩu: 123456
"; echo "Vui lòng đăng nhập và đổi mật khẩu ngay sau khi đăng nhập.
"; + echo "Sửa URL trang web trong config/config.php
"; echo 'Mọi thông tin chi tiết, hỗ trợ, góp ý, báo lỗi,
'; echo"vui lòng liên hệ dzu6996@gmail.com hoặc trực tiếp trang chính thức sản phẩm TẠI ĐÂY

"; diff --git a/resource/res/img/image_btn.png b/resource/res/img/image_btn.png new file mode 100644 index 00000000..8ea97259 Binary files /dev/null and b/resource/res/img/image_btn.png differ diff --git a/resource/res/js/add_question.js b/resource/res/js/add_question.js index 38439205..c0ccf0de 100644 --- a/resource/res/js/add_question.js +++ b/resource/res/js/add_question.js @@ -30,6 +30,47 @@ $(function() { }); }); +function upload_image() { + $('#uploading').removeClass('hidden'); + var file_data = $('#file').prop('files')[0]; + var type = file_data.type; + var size = file_data.size; + var match = ["image/png", "image/jpg", "image/jpeg"]; + if ((type == match[0] && size < 2048000) || (type == match[1] && size < 2048000) || (type == match[2] && size < 2048000)) { + var form_data = new FormData(); + form_data.append('file', file_data); + $.ajax({ + url: 'index.php?action=uploadImage', + dataType: 'text', + cache: false, + contentType: false, + processData: false, + data: form_data, + type: 'post', + success: function(result) { + var json_data = jQuery.parseJSON(result); + if(json_data.stt) { + $('#div-url').removeClass('hidden'); + $('.help').css('color', 'green').text("Thành công"); + $('#file').val(''); + $('#url').val(json_data.url); + $('#uploading').addClass('hidden'); + } else { + $('#div-url').addClass('hidden'); + $('.help').css('color', 'red').text("Thất bại"); + $('#file').val(''); + $('#url').val(''); + $('#uploading').addClass('hidden'); + } + } + }); + } else { + $('.help').css('color', 'red').text('Chỉ được upload file JPG, PNG nhỏ hơn 2mb'); + $('#file').val(''); + $('#uploading').addClass('hidden'); + } +} + function submit_add_question(data) { data[0]['value'] = CKEDITOR.instances.question_detail.getData(); data[1]['value'] = CKEDITOR.instances.answer_a.getData(); diff --git a/resource/res/js/admins_panel.js b/resource/res/js/admins_panel.js index a7d621c3..0e47b354 100755 --- a/resource/res/js/admins_panel.js +++ b/resource/res/js/admins_panel.js @@ -89,7 +89,7 @@ function show_list_admins(data) { var tr = $(''); tr.append('

'); tr.append('' + data[i].admin_id + ''); - tr.append('avatar'); + tr.append('avatar'); tr.append('' + data[i].name + ''); tr.append('' + data[i].username + ''); tr.append('' + data[i].email + ''); diff --git a/resource/res/js/edit_question.js b/resource/res/js/edit_question.js index 8fbbcf11..5240647c 100755 --- a/resource/res/js/edit_question.js +++ b/resource/res/js/edit_question.js @@ -24,4 +24,45 @@ function submit_edit_question(data) { $('#preload').addClass('hidden'); }; $.post(url, data, success); +} + +function upload_image() { + $('#uploading').removeClass('hidden'); + var file_data = $('#file').prop('files')[0]; + var type = file_data.type; + var size = file_data.size; + var match = ["image/png", "image/jpg", "image/jpeg"]; + if ((type == match[0] && size < 2048000) || (type == match[1] && size < 2048000) || (type == match[2] && size < 2048000)) { + var form_data = new FormData(); + form_data.append('file', file_data); + $.ajax({ + url: 'index.php?action=uploadImage', + dataType: 'text', + cache: false, + contentType: false, + processData: false, + data: form_data, + type: 'post', + success: function(result) { + var json_data = jQuery.parseJSON(result); + if(json_data.stt) { + $('#div-url').removeClass('hidden'); + $('.help').css('color', 'green').text("Thành công"); + $('#file').val(''); + $('#url').val(json_data.url); + $('#uploading').addClass('hidden'); + } else { + $('#div-url').addClass('hidden'); + $('.help').css('color', 'red').text("Thất bại"); + $('#file').val(''); + $('#url').val(''); + $('#uploading').addClass('hidden'); + } + } + }); + } else { + $('.help').css('color', 'red').text('Chỉ được upload file JPG, PNG nhỏ hơn 2mb'); + $('#file').val(''); + $('#uploading').addClass('hidden'); + } } \ No newline at end of file diff --git a/resource/res/js/questions_panel.js b/resource/res/js/questions_panel.js index 61c0f2fb..d2a9f4b8 100644 --- a/resource/res/js/questions_panel.js +++ b/resource/res/js/questions_panel.js @@ -20,6 +20,9 @@ $(function() { var instance = M.Modal.getInstance(elem); instance.open(); }); + $("form").on('submit', function(event) { + event.preventDefault(); + }); }); function check_box() { @@ -167,6 +170,9 @@ function get_list_questions() { $('.modal').modal(); $('select').select(); $('body').attr('style', 'overflow: auto;'); + $("form").on('submit', function(event) { + event.preventDefault(); + }); } function question_edit_button(data) { @@ -196,4 +202,4 @@ function submit_del_question(data) { $('#preload').addClass('hidden'); }; $.post(url, data, success); -} \ No newline at end of file +} diff --git a/resource/res/js/students_panel.js b/resource/res/js/students_panel.js index 555ab1a4..9c878ca2 100755 --- a/resource/res/js/students_panel.js +++ b/resource/res/js/students_panel.js @@ -36,6 +36,9 @@ $(function() { var instance = M.Modal.getInstance(elem); instance.open(); }); + $("form").on('submit', function(event) { + event.preventDefault(); + }); }); function check_box() { @@ -142,7 +145,7 @@ function get_list_students() { "targets":2, "render": function(data) { - return 'avatar'; + return 'avatar'; } }, { @@ -204,6 +207,9 @@ function get_list_students() { $('.modal').modal(); $('select').select(); $('body').attr('style', 'overflow: auto;'); + $("form").on('submit', function(event) { + event.preventDefault(); + }); } function student_edit_button(data) { diff --git a/resource/res/js/teachers_panel.js b/resource/res/js/teachers_panel.js index e7a8e310..1e0d8912 100755 --- a/resource/res/js/teachers_panel.js +++ b/resource/res/js/teachers_panel.js @@ -89,7 +89,7 @@ function show_list_teachers(data) { var tr = $(''); tr.append('

'); tr.append('' + data[i].teacher_id + ''); - tr.append('avatar'); + tr.append('avatar'); tr.append('' + data[i].name + ''); tr.append('' + data[i].username + ''); tr.append('' + data[i].email + ''); diff --git a/resource/res/libs/ckeditor/config.js b/resource/res/libs/ckeditor/config.js index 89db121a..929bcb37 100644 --- a/resource/res/libs/ckeditor/config.js +++ b/resource/res/libs/ckeditor/config.js @@ -57,7 +57,7 @@ CKEDITOR.editorConfig = function(config) { // The default plugins included in the basic setup define some buttons that // are not needed in a basic editor. They are removed here. - config.removeButtons = 'Cut,Copy,Paste,Undo,Redo,Anchor,Underline,Strike,Subscript,Superscript'; + config.removeButtons = 'Anchor,Link,Unlink'; // Dialog windows are also simplified. config.removeDialogTabs = 'link:advanced'; @@ -74,6 +74,7 @@ CKEDITOR.editorConfig = function(config) { config.extraPlugins = 'floatpanel'; config.extraPlugins = 'panel'; config.extraPlugins = 'listblock'; + config.extraPlugins = 'image'; config.entities_latin = false; config.basicEntities = false; config.entities = false; diff --git a/resource/res/libs/ckeditor/plugins/image/dialogs/image.js b/resource/res/libs/ckeditor/plugins/image/dialogs/image.js new file mode 100644 index 00000000..8ee58c6c --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/dialogs/image.js @@ -0,0 +1,1257 @@ +/** + * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license + */ + +( function() { + var imageDialog = function( editor, dialogType ) { + // Load image preview. + var IMAGE = 1, + LINK = 2, + PREVIEW = 4, + CLEANUP = 8, + regexGetSize = /^\s*(\d+)((px)|\%)?\s*$/i, + regexGetSizeOrEmpty = /(^\s*(\d+)((px)|\%)?\s*$)|^$/i, + pxLengthRegex = /^\d+px$/; + + var onSizeChange = function() { + var value = this.getValue(), + // This = input element. + dialog = this.getDialog(), + aMatch = value.match( regexGetSize ); // Check value + if ( aMatch ) { + if ( aMatch[ 2 ] == '%' ) // % is allowed - > unlock ratio. + switchLockRatio( dialog, false ); // Unlock. + value = aMatch[ 1 ]; + } + + // Only if ratio is locked + if ( dialog.lockRatio ) { + var oImageOriginal = dialog.originalElement; + if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' ) { + if ( this.id == 'txtHeight' ) { + if ( value && value != '0' ) + value = Math.round( oImageOriginal.$.width * ( value / oImageOriginal.$.height ) ); + if ( !isNaN( value ) ) + dialog.setValueOf( 'info', 'txtWidth', value ); + } + // this.id = txtWidth. + else { + if ( value && value != '0' ) + value = Math.round( oImageOriginal.$.height * ( value / oImageOriginal.$.width ) ); + if ( !isNaN( value ) ) + dialog.setValueOf( 'info', 'txtHeight', value ); + } + } + } + updatePreview( dialog ); + }; + + var updatePreview = function( dialog ) { + //Don't load before onShow. + if ( !dialog.originalElement || !dialog.preview ) + return 1; + + // Read attributes and update imagePreview; + dialog.commitContent( PREVIEW, dialog.preview ); + return 0; + }; + + // Custom commit dialog logic, where we're intended to give inline style + // field (txtdlgGenStyle) higher priority to avoid overwriting styles contribute + // by other fields. + function commitContent() { + var args = arguments; + var inlineStyleField = this.getContentElement( 'advanced', 'txtdlgGenStyle' ); + inlineStyleField && inlineStyleField.commit.apply( inlineStyleField, args ); + + this.foreach( function( widget ) { + if ( widget.commit && widget.id != 'txtdlgGenStyle' ) + widget.commit.apply( widget, args ); + } ); + } + + // Avoid recursions. + var incommit; + + // Synchronous field values to other impacted fields is required, e.g. border + // size change should alter inline-style text as well. + function commitInternally( targetFields ) { + if ( incommit ) + return; + + incommit = 1; + + var dialog = this.getDialog(), + element = dialog.imageElement; + if ( element ) { + // Commit this field and broadcast to target fields. + this.commit( IMAGE, element ); + + targetFields = [].concat( targetFields ); + var length = targetFields.length, + field; + for ( var i = 0; i < length; i++ ) { + field = dialog.getContentElement.apply( dialog, targetFields[ i ].split( ':' ) ); + // May cause recursion. + field && field.setup( IMAGE, element ); + } + } + + incommit = 0; + } + + var switchLockRatio = function( dialog, value ) { + if ( !dialog.getContentElement( 'info', 'ratioLock' ) ) + return null; + + var oImageOriginal = dialog.originalElement; + + // Dialog may already closed. (https://dev.ckeditor.com/ticket/5505) + if ( !oImageOriginal ) + return null; + + // Check image ratio and original image ratio, but respecting user's preference. + if ( value == 'check' ) { + if ( !dialog.userlockRatio && oImageOriginal.getCustomData( 'isReady' ) == 'true' ) { + var width = dialog.getValueOf( 'info', 'txtWidth' ), + height = dialog.getValueOf( 'info', 'txtHeight' ), + originalRatio = oImageOriginal.$.width / oImageOriginal.$.height, + thisRatio = width / height; + + dialog.lockRatio = false; // Default: unlock ratio + + if ( !width && !height ) { + dialog.lockRatio = true; + } else { + // Round ratio to two decimal places so ratio locking will be less precise (#2254). + var ratioComparison = Math.round( ( originalRatio / thisRatio ) * 100 ) / 100; + + if ( ratioComparison == 1 ) { + dialog.lockRatio = true; + } + } + } + } else if ( value !== undefined ) { + dialog.lockRatio = value; + } else { + dialog.userlockRatio = 1; + dialog.lockRatio = !dialog.lockRatio; + } + + var ratioButton = CKEDITOR.document.getById( btnLockSizesId ); + if ( dialog.lockRatio ) + ratioButton.removeClass( 'cke_btn_unlocked' ); + else + ratioButton.addClass( 'cke_btn_unlocked' ); + + ratioButton.setAttribute( 'aria-checked', dialog.lockRatio ); + + // Ratio button hc presentation - WHITE SQUARE / BLACK SQUARE + if ( CKEDITOR.env.hc ) { + var icon = ratioButton.getChild( 0 ); + icon.setHtml( dialog.lockRatio ? CKEDITOR.env.ie ? '\u25A0' : '\u25A3' : CKEDITOR.env.ie ? '\u25A1' : '\u25A2' ); + } + + return dialog.lockRatio; + }; + + var resetSize = function( dialog, emptyValues ) { + var oImageOriginal = dialog.originalElement, + ready = oImageOriginal.getCustomData( 'isReady' ) == 'true'; + + if ( ready ) { + var widthField = dialog.getContentElement( 'info', 'txtWidth' ), + heightField = dialog.getContentElement( 'info', 'txtHeight' ), + widthValue, heightValue; + + if ( emptyValues ) { + widthValue = 0; + heightValue = 0; + } else { + widthValue = oImageOriginal.$.width; + heightValue = oImageOriginal.$.height; + } + + widthField && widthField.setValue( widthValue ); + heightField && heightField.setValue( heightValue ); + } + updatePreview( dialog ); + }; + + var setupDimension = function( type, element ) { + if ( type != IMAGE ) + return; + + function checkDimension( size, defaultValue ) { + var aMatch = size.match( regexGetSize ); + if ( aMatch ) { + // % is allowed. + if ( aMatch[ 2 ] == '%' ) { + aMatch[ 1 ] += '%'; + switchLockRatio( dialog, false ); // Unlock ratio + } + return aMatch[ 1 ]; + } + return defaultValue; + } + + var dialog = this.getDialog(), + value = '', + dimension = this.id == 'txtWidth' ? 'width' : 'height', + size = element.getAttribute( dimension ); + + if ( size ) + value = checkDimension( size, value ); + value = checkDimension( element.getStyle( dimension ), value ); + + this.setValue( value ); + }; + + var previewPreloader; + + var onImgLoadEvent = function() { + // Image is ready. + var original = this.originalElement, + loader = CKEDITOR.document.getById( imagePreviewLoaderId ); + + original.setCustomData( 'isReady', 'true' ); + original.removeListener( 'load', onImgLoadEvent ); + original.removeListener( 'error', onImgLoadErrorEvent ); + original.removeListener( 'abort', onImgLoadErrorEvent ); + + // Hide loader. + if ( loader ) + loader.setStyle( 'display', 'none' ); + + // New image -> new dimensions + if ( !this.dontResetSize ) { + resetSize( this, editor.config.image_prefillDimensions === false ); + } + + if ( this.firstLoad ) { + CKEDITOR.tools.setTimeout( function() { + switchLockRatio( this, 'check' ); + }, 0, this ); + } + + this.firstLoad = false; + this.dontResetSize = false; + + // Possible fix for https://dev.ckeditor.com/ticket/12818. + updatePreview( this ); + }; + + var onImgLoadErrorEvent = function() { + // Error. Image is not loaded. + var original = this.originalElement, + loader = CKEDITOR.document.getById( imagePreviewLoaderId ); + + original.removeListener( 'load', onImgLoadEvent ); + original.removeListener( 'error', onImgLoadErrorEvent ); + original.removeListener( 'abort', onImgLoadErrorEvent ); + + // Set Error image. + var noimage = CKEDITOR.getUrl( CKEDITOR.plugins.get( 'image' ).path + 'images/noimage.png' ); + + if ( this.preview ) + this.preview.setAttribute( 'src', noimage ); + + // Hide loader. + if ( loader ) + loader.setStyle( 'display', 'none' ); + + switchLockRatio( this, false ); // Unlock. + }; + + var numbering = function( id ) { + return CKEDITOR.tools.getNextId() + '_' + id; + }, + btnLockSizesId = numbering( 'btnLockSizes' ), + btnResetSizeId = numbering( 'btnResetSize' ), + imagePreviewLoaderId = numbering( 'ImagePreviewLoader' ), + previewLinkId = numbering( 'previewLink' ), + previewImageId = numbering( 'previewImage' ); + + return { + title: editor.lang.image[ dialogType == 'image' ? 'title' : 'titleButton' ], + minWidth: ( CKEDITOR.skinName || editor.config.skin ) == 'moono-lisa' ? 500 : 420, + minHeight: 360, + onShow: function() { + this.imageElement = false; + this.linkElement = false; + + // Default: create a new element. + this.imageEditMode = false; + this.linkEditMode = false; + + this.lockRatio = true; + this.userlockRatio = 0; + this.dontResetSize = false; + this.firstLoad = true; + this.addLink = false; + + var editor = this.getParentEditor(), + sel = editor.getSelection(), + element = sel && sel.getSelectedElement(), + link = element && editor.elementPath( element ).contains( 'a', 1 ), + loader = CKEDITOR.document.getById( imagePreviewLoaderId ); + + // Hide loader. + if ( loader ) + loader.setStyle( 'display', 'none' ); + + // Create the preview before setup the dialog contents. + previewPreloader = new CKEDITOR.dom.element( 'img', editor.document ); + this.preview = CKEDITOR.document.getById( previewImageId ); + + // Copy of the image + this.originalElement = editor.document.createElement( 'img' ); + this.originalElement.setAttribute( 'alt', '' ); + this.originalElement.setCustomData( 'isReady', 'false' ); + + if ( link ) { + this.linkElement = link; + this.linkEditMode = true; + + // If there is an existing link, by default keep it (true). + // It will be removed if certain conditions are met and Link tab is enabled. (https://dev.ckeditor.com/ticket/13351) + this.addLink = true; + + // Look for Image element. + var linkChildren = link.getChildren(); + if ( linkChildren.count() == 1 ) { + var childTag = linkChildren.getItem( 0 ); + + if ( childTag.type == CKEDITOR.NODE_ELEMENT ) { + if ( childTag.is( 'img' ) || childTag.is( 'input' ) ) { + this.imageElement = linkChildren.getItem( 0 ); + if ( this.imageElement.is( 'img' ) ) + this.imageEditMode = 'img'; + else if ( this.imageElement.is( 'input' ) ) + this.imageEditMode = 'input'; + } + } + } + // Fill out all fields. + if ( dialogType == 'image' ) + this.setupContent( LINK, link ); + } + + // Edit given image element instead the one from selection. + if ( this.customImageElement ) { + this.imageEditMode = 'img'; + this.imageElement = this.customImageElement; + delete this.customImageElement; + } + else if ( element && element.getName() == 'img' && !element.data( 'cke-realelement' ) || + element && element.getName() == 'input' && element.getAttribute( 'type' ) == 'image' ) { + this.imageEditMode = element.getName(); + this.imageElement = element; + } + + if ( this.imageEditMode ) { + // Use the original element as a buffer from since we don't want + // temporary changes to be committed, e.g. if the dialog is canceled. + this.cleanImageElement = this.imageElement; + this.imageElement = this.cleanImageElement.clone( true, true ); + + // Fill out all fields. + this.setupContent( IMAGE, this.imageElement ); + } + + // Refresh LockRatio button + switchLockRatio( this, true ); + + // Dont show preview if no URL given. + if ( !CKEDITOR.tools.trim( this.getValueOf( 'info', 'txtUrl' ) ) ) { + this.preview.removeAttribute( 'src' ); + this.preview.setStyle( 'display', 'none' ); + } + }, + onOk: function() { + // Edit existing Image. + if ( this.imageEditMode ) { + var imgTagName = this.imageEditMode; + + // Image dialog and Input element. + if ( dialogType == 'image' && imgTagName == 'input' && confirm( editor.lang.image.button2Img ) ) { // jshint ignore:line + // Replace INPUT-> IMG + imgTagName = 'img'; + this.imageElement = editor.document.createElement( 'img' ); + this.imageElement.setAttribute( 'alt', '' ); + editor.insertElement( this.imageElement ); + } + // ImageButton dialog and Image element. + else if ( dialogType != 'image' && imgTagName == 'img' && confirm( editor.lang.image.img2Button ) ) { // jshint ignore:line + // Replace IMG -> INPUT + imgTagName = 'input'; + this.imageElement = editor.document.createElement( 'input' ); + this.imageElement.setAttributes( { + type: 'image', + alt: '' + } ); + editor.insertElement( this.imageElement ); + } else { + // Restore the original element before all commits. + this.imageElement = this.cleanImageElement; + delete this.cleanImageElement; + } + } + // Create a new image. + else { + // Image dialog -> create IMG element. + if ( dialogType == 'image' ) + this.imageElement = editor.document.createElement( 'img' ); + else { + this.imageElement = editor.document.createElement( 'input' ); + this.imageElement.setAttribute( 'type', 'image' ); + } + this.imageElement.setAttribute( 'alt', '' ); + } + + // Create a new link. + if ( !this.linkEditMode ) + this.linkElement = editor.document.createElement( 'a' ); + + // Set attributes. + this.commitContent( IMAGE, this.imageElement ); + this.commitContent( LINK, this.linkElement ); + + // Remove empty style attribute. + if ( !this.imageElement.getAttribute( 'style' ) ) + this.imageElement.removeAttribute( 'style' ); + + // Insert a new Image. + if ( !this.imageEditMode ) { + if ( this.addLink ) { + if ( !this.linkEditMode ) { + // Insert a new link. + editor.insertElement( this.linkElement ); + this.linkElement.append( this.imageElement, false ); + } else { + // We already have a link in editor. + if ( this.linkElement.equals( editor.getSelection().getSelectedElement() ) ) { + // If the link is selected outside, replace it's content rather than the link itself. ([foo]) + this.linkElement.setHtml( '' ); + this.linkElement.append( this.imageElement, false ); + } else { + // Only inside of the link is selected, so replace it with image. ([foo], [f]oo) + editor.insertElement( this.imageElement ); + } + } + } else { + editor.insertElement( this.imageElement ); + } + } + // Image already exists. + else { + // Add a new link element. + if ( !this.linkEditMode && this.addLink ) { + editor.insertElement( this.linkElement ); + this.imageElement.appendTo( this.linkElement ); + } + // Remove Link, Image exists. + else if ( this.linkEditMode && !this.addLink ) { + editor.getSelection().selectElement( this.linkElement ); + editor.insertElement( this.imageElement ); + } + } + }, + onLoad: function() { + if ( dialogType != 'image' ) + this.hidePage( 'Link' ); //Hide Link tab. + var doc = this._.element.getDocument(); + + if ( this.getContentElement( 'info', 'ratioLock' ) ) { + this.addFocusable( doc.getById( btnResetSizeId ), 5 ); + this.addFocusable( doc.getById( btnLockSizesId ), 5 ); + } + + this.commitContent = commitContent; + }, + onHide: function() { + if ( this.preview ) + this.commitContent( CLEANUP, this.preview ); + + if ( this.originalElement ) { + this.originalElement.removeListener( 'load', onImgLoadEvent ); + this.originalElement.removeListener( 'error', onImgLoadErrorEvent ); + this.originalElement.removeListener( 'abort', onImgLoadErrorEvent ); + this.originalElement.remove(); + this.originalElement = false; // Dialog is closed. + } + + delete this.imageElement; + }, + contents: [ { + id: 'info', + label: editor.lang.image.infoTab, + accessKey: 'I', + elements: [ { + type: 'vbox', + padding: 0, + children: [ { + type: 'hbox', + widths: [ '280px', '110px' ], + align: 'right', + className: 'cke_dialog_image_url', + children: [ { + id: 'txtUrl', + type: 'text', + label: editor.lang.common.url, + required: true, + onChange: function() { + var dialog = this.getDialog(), + newUrl = this.getValue(); + + // Update original image. + // Prevent from load before onShow. + if ( newUrl.length > 0 ) { + dialog = this.getDialog(); + var original = dialog.originalElement; + + if ( dialog.preview ) { + dialog.preview.removeStyle( 'display' ); + } + + original.setCustomData( 'isReady', 'false' ); + // Show loader. + var loader = CKEDITOR.document.getById( imagePreviewLoaderId ); + if ( loader ) + loader.setStyle( 'display', '' ); + + original.on( 'load', onImgLoadEvent, dialog ); + original.on( 'error', onImgLoadErrorEvent, dialog ); + original.on( 'abort', onImgLoadErrorEvent, dialog ); + original.setAttribute( 'src', newUrl ); + + if ( dialog.preview ) { + // Query the preloader to figure out the url impacted by based href. + previewPreloader.setAttribute( 'src', newUrl ); + dialog.preview.setAttribute( 'src', previewPreloader.$.src ); + updatePreview( dialog ); + } + } + // Dont show preview if no URL given. + else if ( dialog.preview ) { + dialog.preview.removeAttribute( 'src' ); + dialog.preview.setStyle( 'display', 'none' ); + } + }, + setup: function( type, element ) { + if ( type == IMAGE ) { + var url = element.data( 'cke-saved-src' ) || element.getAttribute( 'src' ); + var field = this; + + this.getDialog().dontResetSize = true; + + field.setValue( url ); // And call this.onChange() + // Manually set the initial value.(https://dev.ckeditor.com/ticket/4191) + field.setInitValue(); + } + }, + commit: function( type, element ) { + if ( type == IMAGE && ( this.getValue() || this.isChanged() ) ) { + element.data( 'cke-saved-src', this.getValue() ); + element.setAttribute( 'src', this.getValue() ); + } else if ( type == CLEANUP ) { + element.setAttribute( 'src', '' ); // If removeAttribute doesn't work. + element.removeAttribute( 'src' ); + } + }, + validate: CKEDITOR.dialog.validate.notEmpty( editor.lang.image.urlMissing ) + }, + { + type: 'button', + id: 'browse', + // v-align with the 'txtUrl' field. + // TODO: We need something better than a fixed size here. + style: 'display:inline-block;margin-top:14px;', + align: 'center', + label: editor.lang.common.browseServer, + hidden: true, + filebrowser: 'info:txtUrl' + } ] + } ] + }, + { + id: 'txtAlt', + type: 'text', + label: editor.lang.image.alt, + accessKey: 'T', + 'default': '', + onChange: function() { + updatePreview( this.getDialog() ); + }, + setup: function( type, element ) { + if ( type == IMAGE ) + this.setValue( element.getAttribute( 'alt' ) ); + }, + commit: function( type, element ) { + if ( type == IMAGE ) { + if ( this.getValue() || this.isChanged() ) + element.setAttribute( 'alt', this.getValue() ); + } else if ( type == PREVIEW ) + element.setAttribute( 'alt', this.getValue() ); + else if ( type == CLEANUP ) { + element.removeAttribute( 'alt' ); + } + + } + }, + { + type: 'hbox', + children: [ { + id: 'basic', + type: 'vbox', + children: [ { + type: 'hbox', + requiredContent: 'img{width,height}', + widths: [ '50%', '50%' ], + children: [ { + type: 'vbox', + padding: 1, + children: [ { + type: 'text', + width: '45px', + id: 'txtWidth', + label: editor.lang.common.width, + onKeyUp: onSizeChange, + onChange: function() { + commitInternally.call( this, 'advanced:txtdlgGenStyle' ); + }, + validate: function() { + var aMatch = this.getValue().match( regexGetSizeOrEmpty ), + isValid = !!( aMatch && parseInt( aMatch[ 1 ], 10 ) !== 0 ); + if ( !isValid ) + alert( editor.lang.common.invalidLength.replace( '%1', editor.lang.common.width ).replace( '%2', 'px, %' ) ); // jshint ignore:line + return isValid; + }, + setup: setupDimension, + commit: function( type, element ) { + var value = this.getValue(); + if ( type == IMAGE ) { + if ( value && editor.activeFilter.check( 'img{width,height}' ) ) + element.setStyle( 'width', CKEDITOR.tools.cssLength( value ) ); + else + element.removeStyle( 'width' ); + + element.removeAttribute( 'width' ); + } else if ( type == PREVIEW ) { + var aMatch = value.match( regexGetSize ); + if ( !aMatch ) { + var oImageOriginal = this.getDialog().originalElement; + if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' ) + element.setStyle( 'width', oImageOriginal.$.width + 'px' ); + } else { + element.setStyle( 'width', CKEDITOR.tools.cssLength( value ) ); + } + } else if ( type == CLEANUP ) { + element.removeAttribute( 'width' ); + element.removeStyle( 'width' ); + } + } + }, + { + type: 'text', + id: 'txtHeight', + width: '45px', + label: editor.lang.common.height, + onKeyUp: onSizeChange, + onChange: function() { + commitInternally.call( this, 'advanced:txtdlgGenStyle' ); + }, + validate: function() { + var aMatch = this.getValue().match( regexGetSizeOrEmpty ), + isValid = !!( aMatch && parseInt( aMatch[ 1 ], 10 ) !== 0 ); + if ( !isValid ) + alert( editor.lang.common.invalidLength.replace( '%1', editor.lang.common.height ).replace( '%2', 'px, %' ) ); // jshint ignore:line + return isValid; + }, + setup: setupDimension, + commit: function( type, element ) { + var value = this.getValue(); + if ( type == IMAGE ) { + if ( value && editor.activeFilter.check( 'img{width,height}' ) ) + element.setStyle( 'height', CKEDITOR.tools.cssLength( value ) ); + else + element.removeStyle( 'height' ); + + element.removeAttribute( 'height' ); + } else if ( type == PREVIEW ) { + var aMatch = value.match( regexGetSize ); + if ( !aMatch ) { + var oImageOriginal = this.getDialog().originalElement; + if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' ) + element.setStyle( 'height', oImageOriginal.$.height + 'px' ); + } else { + element.setStyle( 'height', CKEDITOR.tools.cssLength( value ) ); + } + } else if ( type == CLEANUP ) { + element.removeAttribute( 'height' ); + element.removeStyle( 'height' ); + } + } + } ] + }, + { + id: 'ratioLock', + type: 'html', + className: 'cke_dialog_image_ratiolock', + style: 'margin-top:30px;width:40px;height:40px;', + onLoad: function() { + // Activate Reset button + var resetButton = CKEDITOR.document.getById( btnResetSizeId ), + ratioButton = CKEDITOR.document.getById( btnLockSizesId ); + if ( resetButton ) { + resetButton.on( 'click', function( evt ) { + resetSize( this ); + evt.data && evt.data.preventDefault(); + }, this.getDialog() ); + resetButton.on( 'mouseover', function() { + this.addClass( 'cke_btn_over' ); + }, resetButton ); + resetButton.on( 'mouseout', function() { + this.removeClass( 'cke_btn_over' ); + }, resetButton ); + } + // Activate (Un)LockRatio button + if ( ratioButton ) { + ratioButton.on( 'click', function( evt ) { + switchLockRatio( this ); + + var oImageOriginal = this.originalElement, + width = this.getValueOf( 'info', 'txtWidth' ); + + if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' && width ) { + var height = oImageOriginal.$.height / oImageOriginal.$.width * width; + if ( !isNaN( height ) ) { + this.setValueOf( 'info', 'txtHeight', Math.round( height ) ); + updatePreview( this ); + } + } + evt.data && evt.data.preventDefault(); + }, this.getDialog() ); + ratioButton.on( 'mouseover', function() { + this.addClass( 'cke_btn_over' ); + }, ratioButton ); + ratioButton.on( 'mouseout', function() { + this.removeClass( 'cke_btn_over' ); + }, ratioButton ); + } + }, + html: '
' + + '' + editor.lang.image.lockRatio + '' + + '' + editor.lang.image.resetSize + '' + + '
' + } ] + }, + { + type: 'vbox', + padding: 1, + children: [ { + type: 'text', + id: 'txtBorder', + requiredContent: 'img{border-width}', + width: '60px', + label: editor.lang.image.border, + 'default': '', + onKeyUp: function() { + updatePreview( this.getDialog() ); + }, + onChange: function() { + commitInternally.call( this, 'advanced:txtdlgGenStyle' ); + }, + validate: CKEDITOR.dialog.validate.integer( editor.lang.image.validateBorder ), + setup: function( type, element ) { + if ( type == IMAGE ) { + var value, + borderStyle = element.getStyle( 'border-width' ); + borderStyle = borderStyle && borderStyle.match( /^(\d+px)(?: \1 \1 \1)?$/ ); + value = borderStyle && parseInt( borderStyle[ 1 ], 10 ); + isNaN( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'border' ) ); + this.setValue( value ); + } + }, + commit: function( type, element ) { + var value = parseInt( this.getValue(), 10 ); + if ( type == IMAGE || type == PREVIEW ) { + if ( !isNaN( value ) ) { + element.setStyle( 'border-width', CKEDITOR.tools.cssLength( value ) ); + element.setStyle( 'border-style', 'solid' ); + } else if ( !value && this.isChanged() ) { + element.removeStyle( 'border' ); + } + + if ( type == IMAGE ) + element.removeAttribute( 'border' ); + } else if ( type == CLEANUP ) { + element.removeAttribute( 'border' ); + element.removeStyle( 'border-width' ); + element.removeStyle( 'border-style' ); + element.removeStyle( 'border-color' ); + } + } + }, + { + type: 'text', + id: 'txtHSpace', + requiredContent: 'img{margin-left,margin-right}', + width: '60px', + label: editor.lang.image.hSpace, + 'default': '', + onKeyUp: function() { + updatePreview( this.getDialog() ); + }, + onChange: function() { + commitInternally.call( this, 'advanced:txtdlgGenStyle' ); + }, + validate: CKEDITOR.dialog.validate.integer( editor.lang.image.validateHSpace ), + setup: function( type, element ) { + if ( type == IMAGE ) { + var value, marginLeftPx, marginRightPx, + marginLeftStyle = element.getStyle( 'margin-left' ), + marginRightStyle = element.getStyle( 'margin-right' ); + + marginLeftStyle = marginLeftStyle && marginLeftStyle.match( pxLengthRegex ); + marginRightStyle = marginRightStyle && marginRightStyle.match( pxLengthRegex ); + marginLeftPx = parseInt( marginLeftStyle, 10 ); + marginRightPx = parseInt( marginRightStyle, 10 ); + + value = ( marginLeftPx == marginRightPx ) && marginLeftPx; + isNaN( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'hspace' ) ); + + this.setValue( value ); + } + }, + commit: function( type, element ) { + var value = parseInt( this.getValue(), 10 ); + if ( type == IMAGE || type == PREVIEW ) { + if ( !isNaN( value ) ) { + element.setStyle( 'margin-left', CKEDITOR.tools.cssLength( value ) ); + element.setStyle( 'margin-right', CKEDITOR.tools.cssLength( value ) ); + } else if ( !value && this.isChanged() ) { + element.removeStyle( 'margin-left' ); + element.removeStyle( 'margin-right' ); + } + + if ( type == IMAGE ) + element.removeAttribute( 'hspace' ); + } else if ( type == CLEANUP ) { + element.removeAttribute( 'hspace' ); + element.removeStyle( 'margin-left' ); + element.removeStyle( 'margin-right' ); + } + } + }, + { + type: 'text', + id: 'txtVSpace', + requiredContent: 'img{margin-top,margin-bottom}', + width: '60px', + label: editor.lang.image.vSpace, + 'default': '', + onKeyUp: function() { + updatePreview( this.getDialog() ); + }, + onChange: function() { + commitInternally.call( this, 'advanced:txtdlgGenStyle' ); + }, + validate: CKEDITOR.dialog.validate.integer( editor.lang.image.validateVSpace ), + setup: function( type, element ) { + if ( type == IMAGE ) { + var value, marginTopPx, marginBottomPx, + marginTopStyle = element.getStyle( 'margin-top' ), + marginBottomStyle = element.getStyle( 'margin-bottom' ); + + marginTopStyle = marginTopStyle && marginTopStyle.match( pxLengthRegex ); + marginBottomStyle = marginBottomStyle && marginBottomStyle.match( pxLengthRegex ); + marginTopPx = parseInt( marginTopStyle, 10 ); + marginBottomPx = parseInt( marginBottomStyle, 10 ); + + value = ( marginTopPx == marginBottomPx ) && marginTopPx; + isNaN( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'vspace' ) ); + this.setValue( value ); + } + }, + commit: function( type, element ) { + var value = parseInt( this.getValue(), 10 ); + if ( type == IMAGE || type == PREVIEW ) { + if ( !isNaN( value ) ) { + element.setStyle( 'margin-top', CKEDITOR.tools.cssLength( value ) ); + element.setStyle( 'margin-bottom', CKEDITOR.tools.cssLength( value ) ); + } else if ( !value && this.isChanged() ) { + element.removeStyle( 'margin-top' ); + element.removeStyle( 'margin-bottom' ); + } + + if ( type == IMAGE ) + element.removeAttribute( 'vspace' ); + } else if ( type == CLEANUP ) { + element.removeAttribute( 'vspace' ); + element.removeStyle( 'margin-top' ); + element.removeStyle( 'margin-bottom' ); + } + } + }, + { + id: 'cmbAlign', + requiredContent: 'img{float}', + type: 'select', + widths: [ '35%', '65%' ], + style: 'width:90px', + label: editor.lang.common.align, + 'default': '', + items: [ + [ editor.lang.common.notSet, '' ], + [ editor.lang.common.left, 'left' ], + [ editor.lang.common.right, 'right' ] + // Backward compatible with v2 on setup when specified as attribute value, + // while these values are no more available as select options. + // [ editor.lang.image.alignAbsBottom , 'absBottom'], + // [ editor.lang.image.alignAbsMiddle , 'absMiddle'], + // [ editor.lang.image.alignBaseline , 'baseline'], + // [ editor.lang.image.alignTextTop , 'text-top'], + // [ editor.lang.image.alignBottom , 'bottom'], + // [ editor.lang.image.alignMiddle , 'middle'], + // [ editor.lang.image.alignTop , 'top'] + ], + onChange: function() { + updatePreview( this.getDialog() ); + commitInternally.call( this, 'advanced:txtdlgGenStyle' ); + }, + setup: function( type, element ) { + if ( type == IMAGE ) { + var value = element.getStyle( 'float' ); + switch ( value ) { + // Ignore those unrelated values. + case 'inherit': + case 'none': + value = ''; + } + + !value && ( value = ( element.getAttribute( 'align' ) || '' ).toLowerCase() ); + this.setValue( value ); + } + }, + commit: function( type, element ) { + var value = this.getValue(); + if ( type == IMAGE || type == PREVIEW ) { + if ( value ) + element.setStyle( 'float', value ); + else + element.removeStyle( 'float' ); + + if ( type == IMAGE ) { + value = ( element.getAttribute( 'align' ) || '' ).toLowerCase(); + switch ( value ) { + // we should remove it only if it matches "left" or "right", + // otherwise leave it intact. + case 'left': + case 'right': + element.removeAttribute( 'align' ); + } + } + } else if ( type == CLEANUP ) { + element.removeStyle( 'float' ); + } + } + } ] + } ] + }, + { + type: 'vbox', + height: '250px', + children: [ { + type: 'html', + id: 'htmlPreview', + style: 'width:95%;', + html: '
' + CKEDITOR.tools.htmlEncode( editor.lang.common.preview ) + '
' + + '' + + '
' + + '' + + '' + + // jscs:disable maximumLineLength + ( editor.config.image_previewText || '' ) + + // jscs:enable maximumLineLength + '
' + } ] + } ] + } ] + }, + { + id: 'Link', + requiredContent: 'a[href]', + label: editor.lang.image.linkTab, + padding: 0, + elements: [ { + id: 'txtUrl', + type: 'text', + label: editor.lang.common.url, + style: 'width: 100%', + 'default': '', + setup: function( type, element ) { + if ( type == LINK ) { + var href = element.data( 'cke-saved-href' ); + if ( !href ) + href = element.getAttribute( 'href' ); + this.setValue( href ); + } + }, + commit: function( type, element ) { + if ( type == LINK ) { + if ( this.getValue() || this.isChanged() ) { + var url = this.getValue(); + element.data( 'cke-saved-href', url ); + element.setAttribute( 'href', url ); + + if ( this.getValue() || !editor.config.image_removeLinkByEmptyURL ) + this.getDialog().addLink = true; + else + this.getDialog().addLink = false; + } + } + } + }, + { + type: 'button', + id: 'browse', + className: 'cke_dialog_image_browse', + filebrowser: { + action: 'Browse', + target: 'Link:txtUrl', + url: editor.config.filebrowserImageBrowseLinkUrl + }, + style: 'float:right', + hidden: true, + label: editor.lang.common.browseServer + }, + { + id: 'cmbTarget', + type: 'select', + requiredContent: 'a[target]', + label: editor.lang.common.target, + 'default': '', + items: [ + [ editor.lang.common.notSet, '' ], + [ editor.lang.common.targetNew, '_blank' ], + [ editor.lang.common.targetTop, '_top' ], + [ editor.lang.common.targetSelf, '_self' ], + [ editor.lang.common.targetParent, '_parent' ] + ], + setup: function( type, element ) { + if ( type == LINK ) + this.setValue( element.getAttribute( 'target' ) || '' ); + }, + commit: function( type, element ) { + if ( type == LINK ) { + if ( this.getValue() || this.isChanged() ) + element.setAttribute( 'target', this.getValue() ); + } + } + } ] + }, + { + id: 'Upload', + hidden: true, + filebrowser: 'uploadButton', + label: editor.lang.image.upload, + elements: [ { + type: 'file', + id: 'upload', + label: editor.lang.image.btnUpload, + style: 'height:40px', + size: 38 + }, + { + type: 'fileButton', + id: 'uploadButton', + filebrowser: 'info:txtUrl', + label: editor.lang.image.btnUpload, + 'for': [ 'Upload', 'upload' ] + } ] + }, + { + id: 'advanced', + label: editor.lang.common.advancedTab, + elements: [ { + type: 'hbox', + widths: [ '50%', '25%', '25%' ], + children: [ { + type: 'text', + id: 'linkId', + requiredContent: 'img[id]', + label: editor.lang.common.id, + setup: function( type, element ) { + if ( type == IMAGE ) + this.setValue( element.getAttribute( 'id' ) ); + }, + commit: function( type, element ) { + if ( type == IMAGE ) { + if ( this.getValue() || this.isChanged() ) + element.setAttribute( 'id', this.getValue() ); + } + } + }, + { + id: 'cmbLangDir', + type: 'select', + requiredContent: 'img[dir]', + style: 'width : 100px;', + label: editor.lang.common.langDir, + 'default': '', + items: [ + [ editor.lang.common.notSet, '' ], + [ editor.lang.common.langDirLtr, 'ltr' ], + [ editor.lang.common.langDirRtl, 'rtl' ] + ], + setup: function( type, element ) { + if ( type == IMAGE ) + this.setValue( element.getAttribute( 'dir' ) ); + }, + commit: function( type, element ) { + if ( type == IMAGE ) { + if ( this.getValue() || this.isChanged() ) + element.setAttribute( 'dir', this.getValue() ); + } + } + }, + { + type: 'text', + id: 'txtLangCode', + requiredContent: 'img[lang]', + label: editor.lang.common.langCode, + 'default': '', + setup: function( type, element ) { + if ( type == IMAGE ) + this.setValue( element.getAttribute( 'lang' ) ); + }, + commit: function( type, element ) { + if ( type == IMAGE ) { + if ( this.getValue() || this.isChanged() ) + element.setAttribute( 'lang', this.getValue() ); + } + } + } ] + }, + { + type: 'text', + id: 'txtGenLongDescr', + requiredContent: 'img[longdesc]', + label: editor.lang.common.longDescr, + setup: function( type, element ) { + if ( type == IMAGE ) + this.setValue( element.getAttribute( 'longDesc' ) ); + }, + commit: function( type, element ) { + if ( type == IMAGE ) { + if ( this.getValue() || this.isChanged() ) + element.setAttribute( 'longDesc', this.getValue() ); + } + } + }, + { + type: 'hbox', + widths: [ '50%', '50%' ], + children: [ { + type: 'text', + id: 'txtGenClass', + requiredContent: 'img(cke-xyz)', // Random text like 'xyz' will check if all are allowed. + label: editor.lang.common.cssClass, + 'default': '', + setup: function( type, element ) { + if ( type == IMAGE ) + this.setValue( element.getAttribute( 'class' ) ); + }, + commit: function( type, element ) { + if ( type == IMAGE ) { + if ( this.getValue() || this.isChanged() ) + element.setAttribute( 'class', this.getValue() ); + } + } + }, + { + type: 'text', + id: 'txtGenTitle', + requiredContent: 'img[title]', + label: editor.lang.common.advisoryTitle, + 'default': '', + onChange: function() { + updatePreview( this.getDialog() ); + }, + setup: function( type, element ) { + if ( type == IMAGE ) + this.setValue( element.getAttribute( 'title' ) ); + }, + commit: function( type, element ) { + if ( type == IMAGE ) { + if ( this.getValue() || this.isChanged() ) + element.setAttribute( 'title', this.getValue() ); + } else if ( type == PREVIEW ) + element.setAttribute( 'title', this.getValue() ); + else if ( type == CLEANUP ) { + element.removeAttribute( 'title' ); + } + } + } ] + }, + { + type: 'text', + id: 'txtdlgGenStyle', + requiredContent: 'img{cke-xyz}', // Random text like 'xyz' will check if all are allowed. + label: editor.lang.common.cssStyle, + validate: CKEDITOR.dialog.validate.inlineStyle( editor.lang.common.invalidInlineStyle ), + 'default': '', + setup: function( type, element ) { + if ( type == IMAGE ) { + var genStyle = element.getAttribute( 'style' ); + if ( !genStyle && element.$.style.cssText ) + genStyle = element.$.style.cssText; + this.setValue( genStyle ); + + var height = element.$.style.height, + width = element.$.style.width, + aMatchH = ( height ? height : '' ).match( regexGetSize ), + aMatchW = ( width ? width : '' ).match( regexGetSize ); + + this.attributesInStyle = { + height: !!aMatchH, + width: !!aMatchW + }; + } + }, + onChange: function() { + commitInternally.call( + this, [ + 'info:cmbFloat', + 'info:cmbAlign', + 'info:txtVSpace', + 'info:txtHSpace', + 'info:txtBorder', + 'info:txtWidth', + 'info:txtHeight' + ] + ); + updatePreview( this ); + }, + commit: function( type, element ) { + if ( type == IMAGE && ( this.getValue() || this.isChanged() ) ) + element.setAttribute( 'style', this.getValue() ); + + } + } ] + } ] + }; + }; + + CKEDITOR.dialog.add( 'image', function( editor ) { + return imageDialog( editor, 'image' ); + } ); + + CKEDITOR.dialog.add( 'imagebutton', function( editor ) { + return imageDialog( editor, 'imagebutton' ); + } ); +} )(); diff --git a/resource/res/libs/ckeditor/plugins/image/icons/hidpi/image.png b/resource/res/libs/ckeditor/plugins/image/icons/hidpi/image.png new file mode 100644 index 00000000..d0f21aee Binary files /dev/null and b/resource/res/libs/ckeditor/plugins/image/icons/hidpi/image.png differ diff --git a/resource/res/libs/ckeditor/plugins/image/icons/image.png b/resource/res/libs/ckeditor/plugins/image/icons/image.png new file mode 100644 index 00000000..8ea97259 Binary files /dev/null and b/resource/res/libs/ckeditor/plugins/image/icons/image.png differ diff --git a/resource/res/libs/ckeditor/plugins/image/images/noimage.png b/resource/res/libs/ckeditor/plugins/image/images/noimage.png new file mode 100644 index 00000000..74c6ee92 Binary files /dev/null and b/resource/res/libs/ckeditor/plugins/image/images/noimage.png differ diff --git a/resource/res/libs/ckeditor/plugins/image/lang/af.js b/resource/res/libs/ckeditor/plugins/image/lang/af.js new file mode 100644 index 00000000..9fcef752 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/af.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'af', { + alt: 'Alternatiewe teks', + border: 'Rand', + btnUpload: 'Stuur na bediener', + button2Img: 'Wil u die geselekteerde afbeeldingsknop vervang met \'n eenvoudige afbeelding?', + hSpace: 'HSpasie', + img2Button: 'Wil u die geselekteerde afbeelding vervang met \'n afbeeldingsknop?', + infoTab: 'Afbeelding informasie', + linkTab: 'Skakel', + lockRatio: 'Vaste proporsie', + menu: 'Afbeelding eienskappe', + resetSize: 'Herstel grootte', + title: 'Afbeelding eienskappe', + titleButton: 'Afbeeldingsknop eienskappe', + upload: 'Oplaai', + urlMissing: 'Die URL na die afbeelding ontbreek.', + vSpace: 'VSpasie', + validateBorder: 'Rand moet \'n heelgetal wees.', + validateHSpace: 'HSpasie moet \'n heelgetal wees.', + validateVSpace: 'VSpasie moet \'n heelgetal wees.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/ar.js b/resource/res/libs/ckeditor/plugins/image/lang/ar.js new file mode 100644 index 00000000..4fd571cf --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/ar.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'ar', { + alt: 'عنوان الصورة', + border: 'سمك الحدود', + btnUpload: 'أرسلها للخادم', + button2Img: 'هل تريد تحويل زر الصورة المختار إلى صورة بسيطة؟', + hSpace: 'تباعد أفقي', + img2Button: 'هل تريد تحويل الصورة المختارة إلى زر صورة؟', + infoTab: 'معلومات الصورة', + linkTab: 'الرابط', + lockRatio: 'تناسق الحجم', + menu: 'خصائص الصورة', + resetSize: 'إستعادة الحجم الأصلي', + title: 'خصائص الصورة', + titleButton: 'خصائص زر الصورة', + upload: 'رفع', + urlMissing: 'عنوان مصدر الصورة مفقود', + vSpace: 'تباعد عمودي', + validateBorder: 'الإطار يجب أن يكون عددا', + validateHSpace: 'HSpace يجب أن يكون عدداً.', + validateVSpace: 'VSpace يجب أن يكون عدداً.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/az.js b/resource/res/libs/ckeditor/plugins/image/lang/az.js new file mode 100644 index 00000000..adea9d81 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/az.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'az', { + alt: 'Alternativ mətn', + border: 'Sərhəd', + btnUpload: 'Serverə yüklə', + button2Img: 'Şəkil tipli düyməni şəklə çevirmək istədiyinizə əminsinizmi?', + hSpace: 'Üfüqi boşluq', + img2Button: 'Şəkli şəkil tipli düyməyə çevirmək istədiyinizə əminsinizmi?', + infoTab: 'Şəkil haqqında məlumat', + linkTab: 'Link', + lockRatio: 'Ölçülərin uyğunluğu saxla', + menu: 'Şəklin seçimləri', + resetSize: 'Ölçüləri qaytar', + title: 'Şəklin seçimləri', + titleButton: 'Şəkil tipli düyməsinin seçimləri', + upload: 'Serverə yüklə', + urlMissing: 'Şəklin ünvanı yanlışdır.', + vSpace: 'Şaquli boşluq', + validateBorder: 'Sərhədin eni rəqəm olmalıdır.', + validateHSpace: 'Üfüqi boşluq rəqəm olmalıdır.', + validateVSpace: 'Şaquli boşluq rəqəm olmalıdır.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/bg.js b/resource/res/libs/ckeditor/plugins/image/lang/bg.js new file mode 100644 index 00000000..59160d4f --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/bg.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'bg', { + alt: 'Алтернативен текст', + border: 'Рамка', + btnUpload: 'Изпрати на сървъра', + button2Img: 'Искате ли да превърнете избрания бутон за изображение в просто изображение?', + hSpace: 'Хоризонтален отстъп', + img2Button: 'Искате ли да превърнете избраното изображение в бутон за изображение?', + infoTab: 'Изображение', + linkTab: 'Връзка', + lockRatio: 'Заключване на съотношението', + menu: 'Настройки на изображение', + resetSize: 'Нулиране на размер', + title: 'Настройки на изображение', + titleButton: 'Настройки на бутон за изображение', + upload: 'Качване', + urlMissing: 'URL адресът на изображението липсва.', + vSpace: 'Вертикален отстъп', + validateBorder: 'Рамката трябва да е цяло число.', + validateHSpace: 'Хоризонтален отстъп трябва да е цяло число.', + validateVSpace: 'Вертикален отстъп трябва да е цяло число.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/bn.js b/resource/res/libs/ckeditor/plugins/image/lang/bn.js new file mode 100644 index 00000000..6be47a4e --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/bn.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'bn', { + alt: 'বিকল্প টেক্সট', + border: 'বর্ডার', + btnUpload: 'ইহাকে সার্ভারে প্রেরন কর', + button2Img: 'Do you want to transform the selected image button on a simple image?', // MISSING + hSpace: 'হরাইজন্টাল স্পেস', + img2Button: 'Do you want to transform the selected image on a image button?', // MISSING + infoTab: 'ছবির তথ্য', + linkTab: 'লিংক', + lockRatio: 'অনুপাত লক কর', + menu: 'ছবির প্রোপার্টি', + resetSize: 'সাইজ পূর্বাবস্থায় ফিরিয়ে দাও', + title: 'ছবির প্রোপার্টি', + titleButton: 'ছবির বাটন সম্বন্ধীয়', + upload: 'আপলোড', + urlMissing: 'Image source URL is missing.', // MISSING + vSpace: 'ভার্টিকেল স্পেস', + validateBorder: 'Border must be a whole number.', // MISSING + validateHSpace: 'HSpace must be a whole number.', // MISSING + validateVSpace: 'VSpace must be a whole number.' // MISSING +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/bs.js b/resource/res/libs/ckeditor/plugins/image/lang/bs.js new file mode 100644 index 00000000..2cc32d02 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/bs.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'bs', { + alt: 'Tekst na slici', + border: 'Okvir', + btnUpload: 'Šalji na server', + button2Img: 'Do you want to transform the selected image button on a simple image?', // MISSING + hSpace: 'HSpace', + img2Button: 'Do you want to transform the selected image on a image button?', // MISSING + infoTab: 'Info slike', + linkTab: 'Link', + lockRatio: 'Zakljuèaj odnos', + menu: 'Svojstva slike', + resetSize: 'Resetuj dimenzije', + title: 'Svojstva slike', + titleButton: 'Image Button Properties', // MISSING + upload: 'Šalji', + urlMissing: 'Image source URL is missing.', // MISSING + vSpace: 'VSpace', + validateBorder: 'Border must be a whole number.', // MISSING + validateHSpace: 'HSpace must be a whole number.', // MISSING + validateVSpace: 'VSpace must be a whole number.' // MISSING +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/ca.js b/resource/res/libs/ckeditor/plugins/image/lang/ca.js new file mode 100644 index 00000000..9ba0df29 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/ca.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'ca', { + alt: 'Text alternatiu', + border: 'Vora', + btnUpload: 'Envia-la al servidor', + button2Img: 'Voleu transformar el botó d\'imatge seleccionat en una simple imatge?', + hSpace: 'Espaiat horit.', + img2Button: 'Voleu transformar la imatge seleccionada en un botó d\'imatge?', + infoTab: 'Informació de la imatge', + linkTab: 'Enllaç', + lockRatio: 'Bloqueja les proporcions', + menu: 'Propietats de la imatge', + resetSize: 'Restaura la mida', + title: 'Propietats de la imatge', + titleButton: 'Propietats del botó d\'imatge', + upload: 'Puja', + urlMissing: 'Falta la URL de la imatge.', + vSpace: 'Espaiat vert.', + validateBorder: 'La vora ha de ser un nombre enter.', + validateHSpace: 'HSpace ha de ser un nombre enter.', + validateVSpace: 'VSpace ha de ser un nombre enter.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/cs.js b/resource/res/libs/ckeditor/plugins/image/lang/cs.js new file mode 100644 index 00000000..f4215b11 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/cs.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'cs', { + alt: 'Alternativní text', + border: 'Okraje', + btnUpload: 'Odeslat na server', + button2Img: 'Skutečně chcete převést zvolené obrázkové tlačítko na obyčejný obrázek?', + hSpace: 'Horizontální mezera', + img2Button: 'Skutečně chcete převést zvolený obrázek na obrázkové tlačítko?', + infoTab: 'Informace o obrázku', + linkTab: 'Odkaz', + lockRatio: 'Zámek', + menu: 'Vlastnosti obrázku', + resetSize: 'Původní velikost', + title: 'Vlastnosti obrázku', + titleButton: 'Vlastností obrázkového tlačítka', + upload: 'Odeslat', + urlMissing: 'Zadané URL zdroje obrázku nebylo nalezeno.', + vSpace: 'Vertikální mezera', + validateBorder: 'Okraj musí být nastaven v celých číslech.', + validateHSpace: 'Horizontální mezera musí být nastavena v celých číslech.', + validateVSpace: 'Vertikální mezera musí být nastavena v celých číslech.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/cy.js b/resource/res/libs/ckeditor/plugins/image/lang/cy.js new file mode 100644 index 00000000..84f0a49c --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/cy.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'cy', { + alt: 'Testun Amgen', + border: 'Ymyl', + btnUpload: 'Anfon i\'r Gweinydd', + button2Img: 'Ydych am drawsffurfio\'r botwm ddelwedd hwn ar ddelwedd syml?', + hSpace: 'BwlchLl', + img2Button: 'Ydych am drawsffurfio\'r ddelwedd hon ar fotwm delwedd?', + infoTab: 'Gwyb Delwedd', + linkTab: 'Dolen', + lockRatio: 'Cloi Cymhareb', + menu: 'Priodweddau Delwedd', + resetSize: 'Ailosod Maint', + title: 'Priodweddau Delwedd', + titleButton: 'Priodweddau Botwm Delwedd', + upload: 'Lanlwytho', + urlMissing: 'URL gwreiddiol y ddelwedd ar goll.', + vSpace: 'BwlchF', + validateBorder: 'Rhaid i\'r ymyl fod yn gyfanrif.', + validateHSpace: 'Rhaid i\'r HSpace fod yn gyfanrif.', + validateVSpace: 'Rhaid i\'r VSpace fod yn gyfanrif.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/da.js b/resource/res/libs/ckeditor/plugins/image/lang/da.js new file mode 100644 index 00000000..2e8193e5 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/da.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'da', { + alt: 'Alternativ tekst', + border: 'Ramme', + btnUpload: 'Upload fil til serveren', + button2Img: 'Vil du lave billedknappen om til et almindeligt billede?', + hSpace: 'Vandret margen', + img2Button: 'Vil du lave billedet om til en billedknap?', + infoTab: 'Generelt', + linkTab: 'Hyperlink', + lockRatio: 'Lås størrelsesforhold', + menu: 'Egenskaber for billede', + resetSize: 'Nulstil størrelse', + title: 'Egenskaber for billede', + titleButton: 'Egenskaber for billedknap', + upload: 'Upload', + urlMissing: 'Kilde på billed-URL mangler', + vSpace: 'Lodret margen', + validateBorder: 'Kant skal være et helt nummer.', + validateHSpace: 'HSpace skal være et helt nummer.', + validateVSpace: 'VSpace skal være et helt nummer.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/de-ch.js b/resource/res/libs/ckeditor/plugins/image/lang/de-ch.js new file mode 100644 index 00000000..34bfd99c --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/de-ch.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'de-ch', { + alt: 'Alternativer Text', + border: 'Rahmen', + btnUpload: 'Zum Server senden', + button2Img: 'Möchten Sie die ausgewählte Bildschaltfläche in ein einfaches Bild umwandeln?', + hSpace: 'Horizontal-Abstand', + img2Button: 'Möchten Sie das ausgewählte Bild in eine Bildschaltfläche umwandeln?', + infoTab: 'Bildinfo', + linkTab: 'Link', + lockRatio: 'Grössenverhältnis beibehalten', + menu: 'Bildeigenschaften', + resetSize: 'Grösse zurücksetzen', + title: 'Bildeigenschaften', + titleButton: 'Bildschaltflächeneigenschaften', + upload: 'Hochladen', + urlMissing: 'Bildquellen-URL fehlt.', + vSpace: 'Vertikal-Abstand', + validateBorder: 'Rahmen muss eine ganze Zahl sein.', + validateHSpace: 'Horizontal-Abstand muss eine ganze Zahl sein.', + validateVSpace: 'Vertikal-Abstand muss eine ganze Zahl sein.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/de.js b/resource/res/libs/ckeditor/plugins/image/lang/de.js new file mode 100644 index 00000000..16596757 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/de.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'de', { + alt: 'Alternativer Text', + border: 'Rahmen', + btnUpload: 'Zum Server senden', + button2Img: 'Möchten Sie die ausgewählte Bildschaltfläche in ein einfaches Bild umwandeln?', + hSpace: 'Horizontal-Abstand', + img2Button: 'Möchten Sie das ausgewählte Bild in eine Bildschaltfläche umwandeln?', + infoTab: 'Bildinfo', + linkTab: 'Link', + lockRatio: 'Größenverhältnis beibehalten', + menu: 'Bildeigenschaften', + resetSize: 'Größe zurücksetzen', + title: 'Bildeigenschaften', + titleButton: 'Bildschaltflächeneigenschaften', + upload: 'Hochladen', + urlMissing: 'Bildquellen-URL fehlt.', + vSpace: 'Vertikal-Abstand', + validateBorder: 'Rahmen muss eine ganze Zahl sein.', + validateHSpace: 'Horizontal-Abstand muss eine ganze Zahl sein.', + validateVSpace: 'Vertikal-Abstand muss eine ganze Zahl sein.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/el.js b/resource/res/libs/ckeditor/plugins/image/lang/el.js new file mode 100644 index 00000000..be2e8e97 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/el.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'el', { + alt: 'Εναλλακτικό Κείμενο', + border: 'Περίγραμμα', + btnUpload: 'Αποστολή στον Διακομιστή', + button2Img: 'Θέλετε να μετατρέψετε το επιλεγμένο κουμπί εικόνας σε απλή εικόνα;', + hSpace: 'HSpace', + img2Button: 'Θέλετε να μεταμορφώσετε την επιλεγμένη εικόνα που είναι πάνω σε ένα κουμπί;', + infoTab: 'Πληροφορίες Εικόνας', + linkTab: 'Σύνδεσμος', + lockRatio: 'Κλείδωμα Αναλογίας', + menu: 'Ιδιότητες Εικόνας', + resetSize: 'Επαναφορά Αρχικού Μεγέθους', + title: 'Ιδιότητες Εικόνας', + titleButton: 'Ιδιότητες Κουμπιού Εικόνας', + upload: 'Αποστολή', + urlMissing: 'Το URL πηγής για την εικόνα λείπει.', + vSpace: 'VSpace', + validateBorder: 'Το περίγραμμα πρέπει να είναι ένας ακέραιος αριθμός.', + validateHSpace: 'Το HSpace πρέπει να είναι ένας ακέραιος αριθμός.', + validateVSpace: 'Το VSpace πρέπει να είναι ένας ακέραιος αριθμός.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/en-au.js b/resource/res/libs/ckeditor/plugins/image/lang/en-au.js new file mode 100644 index 00000000..3b66f6b4 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/en-au.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'en-au', { + alt: 'Alternative Text', + border: 'Border', + btnUpload: 'Send it to the Server', + button2Img: 'Do you want to transform the selected image button on a simple image?', + hSpace: 'HSpace', + img2Button: 'Do you want to transform the selected image on a image button?', + infoTab: 'Image Info', + linkTab: 'Link', + lockRatio: 'Lock Ratio', + menu: 'Image Properties', + resetSize: 'Reset Size', + title: 'Image Properties', + titleButton: 'Image Button Properties', + upload: 'Upload', + urlMissing: 'Image source URL is missing.', + vSpace: 'VSpace', + validateBorder: 'Border must be a whole number.', + validateHSpace: 'HSpace must be a whole number.', + validateVSpace: 'VSpace must be a whole number.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/en-ca.js b/resource/res/libs/ckeditor/plugins/image/lang/en-ca.js new file mode 100644 index 00000000..468431e5 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/en-ca.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'en-ca', { + alt: 'Alternative Text', + border: 'Border', + btnUpload: 'Send it to the Server', + button2Img: 'Do you want to transform the selected image button on a simple image?', + hSpace: 'HSpace', + img2Button: 'Do you want to transform the selected image on a image button?', + infoTab: 'Image Info', + linkTab: 'Link', + lockRatio: 'Lock Ratio', + menu: 'Image Properties', + resetSize: 'Reset Size', + title: 'Image Properties', + titleButton: 'Image Button Properties', + upload: 'Upload', + urlMissing: 'Image source URL is missing.', // MISSING + vSpace: 'VSpace', + validateBorder: 'Border must be a whole number.', // MISSING + validateHSpace: 'HSpace must be a whole number.', // MISSING + validateVSpace: 'VSpace must be a whole number.' // MISSING +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/en-gb.js b/resource/res/libs/ckeditor/plugins/image/lang/en-gb.js new file mode 100644 index 00000000..1a7ce70a --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/en-gb.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'en-gb', { + alt: 'Alternative Text', + border: 'Border', + btnUpload: 'Send it to the Server', + button2Img: 'Do you want to transform the selected image button on a simple image?', + hSpace: 'HSpace', + img2Button: 'Do you want to transform the selected image on a image button?', + infoTab: 'Image Info', + linkTab: 'Link', + lockRatio: 'Lock Ratio', + menu: 'Image Properties', + resetSize: 'Reset Size', + title: 'Image Properties', + titleButton: 'Image Button Properties', + upload: 'Upload', + urlMissing: 'Image source URL is missing.', + vSpace: 'VSpace', + validateBorder: 'Border must be a whole number.', + validateHSpace: 'HSpace must be a whole number.', + validateVSpace: 'VSpace must be a whole number.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/en.js b/resource/res/libs/ckeditor/plugins/image/lang/en.js new file mode 100644 index 00000000..05720556 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/en.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'en', { + alt: 'Alternative Text', + border: 'Border', + btnUpload: 'Send it to the Server', + button2Img: 'Do you want to transform the selected image button on a simple image?', + hSpace: 'HSpace', + img2Button: 'Do you want to transform the selected image on a image button?', + infoTab: 'Image Info', + linkTab: 'Link', + lockRatio: 'Lock Ratio', + menu: 'Image Properties', + resetSize: 'Reset Size', + title: 'Image Properties', + titleButton: 'Image Button Properties', + upload: 'Upload', + urlMissing: 'Image source URL is missing.', + vSpace: 'VSpace', + validateBorder: 'Border must be a whole number.', + validateHSpace: 'HSpace must be a whole number.', + validateVSpace: 'VSpace must be a whole number.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/eo.js b/resource/res/libs/ckeditor/plugins/image/lang/eo.js new file mode 100644 index 00000000..184507c6 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/eo.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'eo', { + alt: 'Anstataŭiga Teksto', + border: 'Bordero', + btnUpload: 'Sendu al Servilo', + button2Img: 'Ĉu vi volas transformi la selektitan bildbutonon en simplan bildon?', + hSpace: 'Horizontala Spaco', + img2Button: 'Ĉu vi volas transformi la selektitan bildon en bildbutonon?', + infoTab: 'Informoj pri Bildo', + linkTab: 'Ligilo', + lockRatio: 'Konservi Proporcion', + menu: 'Atributoj de Bildo', + resetSize: 'Origina Grando', + title: 'Atributoj de Bildo', + titleButton: 'Bildbutonaj Atributoj', + upload: 'Alŝuti', + urlMissing: 'La fontretadreso de la bildo mankas.', + vSpace: 'Vertikala Spaco', + validateBorder: 'La bordero devas esti entjera nombro.', + validateHSpace: 'La horizontala spaco devas esti entjera nombro.', + validateVSpace: 'La vertikala spaco devas esti entjera nombro.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/es-mx.js b/resource/res/libs/ckeditor/plugins/image/lang/es-mx.js new file mode 100644 index 00000000..5348fb48 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/es-mx.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'es-mx', { + alt: 'Texto alternativo', + border: 'Borde', + btnUpload: 'Enviar al servidor', + button2Img: '¿Desea transformar el botón de imagen seleccionado en una imagen simple?', + hSpace: 'Espacio horizontal', + img2Button: '¿Desea transformar la imagen seleccionada en un botón de imagen?', + infoTab: 'Información de imagen', + linkTab: 'Enlace', + lockRatio: 'Bloquear aspecto', + menu: 'Propiedades de la imagen', + resetSize: 'Reiniciar tamaño', + title: 'Propiedades de la imagen', + titleButton: 'Propiedades del botón de imagen', + upload: 'Cargar', + urlMissing: 'Falta la URL de origen de la imagen.', + vSpace: 'Espacio vertical', + validateBorder: 'El borde debe ser un número entero.', + validateHSpace: 'El espacio horizontal debe ser un número entero.', + validateVSpace: 'El espacio vertical debe ser un número entero.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/es.js b/resource/res/libs/ckeditor/plugins/image/lang/es.js new file mode 100644 index 00000000..85a15e21 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/es.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'es', { + alt: 'Texto Alternativo', + border: 'Borde', + btnUpload: 'Enviar al Servidor', + button2Img: '¿Desea convertir el botón de imagen en una simple imagen?', + hSpace: 'Esp.Horiz', + img2Button: '¿Desea convertir la imagen en un botón de imagen?', + infoTab: 'Información de Imagen', + linkTab: 'Vínculo', + lockRatio: 'Proporcional', + menu: 'Propiedades de Imagen', + resetSize: 'Tamaño Original', + title: 'Propiedades de Imagen', + titleButton: 'Propiedades de Botón de Imagen', + upload: 'Cargar', + urlMissing: 'Debe indicar la URL de la imagen.', + vSpace: 'Esp.Vert', + validateBorder: 'El borde debe ser un número.', + validateHSpace: 'El espaciado horizontal debe ser un número.', + validateVSpace: 'El espaciado vertical debe ser un número.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/et.js b/resource/res/libs/ckeditor/plugins/image/lang/et.js new file mode 100644 index 00000000..e234cf8d --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/et.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'et', { + alt: 'Alternatiivne tekst', + border: 'Joon', + btnUpload: 'Saada serverisse', + button2Img: 'Kas tahad teisendada valitud pildiga nupu tavaliseks pildiks?', + hSpace: 'H. vaheruum', + img2Button: 'Kas tahad teisendada valitud tavalise pildi pildiga nupuks?', + infoTab: 'Pildi info', + linkTab: 'Link', + lockRatio: 'Lukusta kuvasuhe', + menu: 'Pildi omadused', + resetSize: 'Lähtesta suurus', + title: 'Pildi omadused', + titleButton: 'Piltnupu omadused', + upload: 'Lae üles', + urlMissing: 'Pildi lähte-URL on puudu.', + vSpace: 'V. vaheruum', + validateBorder: 'Äärise laius peab olema täisarv.', + validateHSpace: 'Horisontaalne vaheruum peab olema täisarv.', + validateVSpace: 'Vertikaalne vaheruum peab olema täisarv.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/eu.js b/resource/res/libs/ckeditor/plugins/image/lang/eu.js new file mode 100644 index 00000000..99c5130c --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/eu.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'eu', { + alt: 'Ordezko testua', + border: 'Ertza', + btnUpload: 'Bidali zerbitzarira', + button2Img: 'Hautatutako irudi-botoia irudi arrunt bihurtu nahi duzu?', + hSpace: 'HSpace', + img2Button: 'Hautatutako irudia irudi-botoi bihurtu nahi duzu?', + infoTab: 'Irudiaren informazioa', + linkTab: 'Esteka', + lockRatio: 'Blokeatu erlazioa', + menu: 'Irudiaren propietateak', + resetSize: 'Berrezarri tamaina', + title: 'Irudiaren propietateak', + titleButton: 'Irudi-botoiaren propietateak', + upload: 'Kargatu', + urlMissing: 'Irudiaren iturburuaren URLa falta da.', + vSpace: 'VSpace', + validateBorder: 'Ertza zenbaki oso bat izan behar da.', + validateHSpace: 'HSpace zenbaki oso bat izan behar da.', + validateVSpace: 'VSpace zenbaki oso bat izan behar da.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/fa.js b/resource/res/libs/ckeditor/plugins/image/lang/fa.js new file mode 100644 index 00000000..53b60dfc --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/fa.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'fa', { + alt: 'متن جایگزین', + border: 'لبه', + btnUpload: 'به سرور بفرست', + button2Img: 'آیا مایلید از یک تصویر ساده روی دکمه تصویری انتخاب شده استفاده کنید؟', + hSpace: 'فاصلهٴ افقی', + img2Button: 'آیا مایلید از یک دکمه تصویری روی تصویر انتخاب شده استفاده کنید؟', + infoTab: 'اطلاعات تصویر', + linkTab: 'پیوند', + lockRatio: 'قفل کردن نسبت', + menu: 'ویژگی​های تصویر', + resetSize: 'بازنشانی اندازه', + title: 'ویژگی​های تصویر', + titleButton: 'ویژگی​های دکمهٴ تصویری', + upload: 'انتقال به سرور', + urlMissing: 'آدرس URL اصلی تصویر یافت نشد.', + vSpace: 'فاصلهٴ عمودی', + validateBorder: 'مقدار خطوط باید یک عدد باشد.', + validateHSpace: 'مقدار فاصله گذاری افقی باید یک عدد باشد.', + validateVSpace: 'مقدار فاصله گذاری عمودی باید یک عدد باشد.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/fi.js b/resource/res/libs/ckeditor/plugins/image/lang/fi.js new file mode 100644 index 00000000..09a4a824 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/fi.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'fi', { + alt: 'Vaihtoehtoinen teksti', + border: 'Kehys', + btnUpload: 'Lähetä palvelimelle', + button2Img: 'Haluatko muuntaa valitun kuvanäppäimen kuvaksi?', + hSpace: 'Vaakatila', + img2Button: 'Haluatko muuntaa valitun kuvan kuvanäppäimeksi?', + infoTab: 'Kuvan tiedot', + linkTab: 'Linkki', + lockRatio: 'Lukitse suhteet', + menu: 'Kuvan ominaisuudet', + resetSize: 'Alkuperäinen koko', + title: 'Kuvan ominaisuudet', + titleButton: 'Kuvapainikkeen ominaisuudet', + upload: 'Lisää kuva', + urlMissing: 'Kuvan lähdeosoite puuttuu.', + vSpace: 'Pystytila', + validateBorder: 'Kehyksen täytyy olla kokonaisluku.', + validateHSpace: 'HSpace-määrityksen täytyy olla kokonaisluku.', + validateVSpace: 'VSpace-määrityksen täytyy olla kokonaisluku.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/fo.js b/resource/res/libs/ckeditor/plugins/image/lang/fo.js new file mode 100644 index 00000000..68cf7771 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/fo.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'fo', { + alt: 'Alternativur tekstur', + border: 'Bordi', + btnUpload: 'Send til ambætaran', + button2Img: 'Skal valdi myndaknøttur gerast til vanliga mynd?', + hSpace: 'Høgri breddi', + img2Button: 'Skal valda mynd gerast til myndaknøtt?', + infoTab: 'Myndaupplýsingar', + linkTab: 'Tilknýti', + lockRatio: 'Læs lutfallið', + menu: 'Myndaeginleikar', + resetSize: 'Upprunastødd', + title: 'Myndaeginleikar', + titleButton: 'Eginleikar fyri myndaknøtt', + upload: 'Send', + urlMissing: 'URL til mynd manglar.', + vSpace: 'Vinstri breddi', + validateBorder: 'Bordi má vera eitt heiltal.', + validateHSpace: 'HSpace má vera eitt heiltal.', + validateVSpace: 'VSpace má vera eitt heiltal.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/fr-ca.js b/resource/res/libs/ckeditor/plugins/image/lang/fr-ca.js new file mode 100644 index 00000000..a6968962 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/fr-ca.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'fr-ca', { + alt: 'Texte alternatif', + border: 'Bordure', + btnUpload: 'Envoyer sur le serveur', + button2Img: 'Désirez-vous transformer l\'image sélectionnée en image simple?', + hSpace: 'Espacement horizontal', + img2Button: 'Désirez-vous transformer l\'image sélectionnée en bouton image?', + infoTab: 'Informations sur l\'image', + linkTab: 'Lien', + lockRatio: 'Verrouiller les proportions', + menu: 'Propriétés de l\'image', + resetSize: 'Taille originale', + title: 'Propriétés de l\'image', + titleButton: 'Propriétés du bouton image', + upload: 'Téléverser', + urlMissing: 'L\'URL de la source de l\'image est manquant.', + vSpace: 'Espacement vertical', + validateBorder: 'La bordure doit être un entier.', + validateHSpace: 'L\'espacement horizontal doit être un entier.', + validateVSpace: 'L\'espacement vertical doit être un entier.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/fr.js b/resource/res/libs/ckeditor/plugins/image/lang/fr.js new file mode 100644 index 00000000..028cb1f7 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/fr.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'fr', { + alt: 'Texte alternatif', + border: 'Bordure', + btnUpload: 'Envoyer sur le serveur', + button2Img: 'Voulez-vous transformer le bouton avec image sélectionné en simple image ?', + hSpace: 'Espacement horizontal', + img2Button: 'Voulez-vous transformer l\'image sélectionnée en bouton avec image ?', + infoTab: 'Informations sur l\'image', + linkTab: 'Lien', + lockRatio: 'Conserver les proportions', + menu: 'Propriétés de l\'image', + resetSize: 'Réinitialiser la taille', + title: 'Propriétés de l\'image', + titleButton: 'Propriétés du bouton avec image', + upload: 'Téléverser', + urlMissing: 'L\'URL source de l\'image est manquante.', + vSpace: 'Espacement vertical', + validateBorder: 'La bordure doit être un nombre entier.', + validateHSpace: 'L\'espacement horizontal doit être un nombre entier.', + validateVSpace: 'L\'espacement vertical doit être un nombre entier.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/gl.js b/resource/res/libs/ckeditor/plugins/image/lang/gl.js new file mode 100644 index 00000000..1c1e20e9 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/gl.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'gl', { + alt: 'Texto alternativo', + border: 'Bordo', + btnUpload: 'Enviar ao servidor', + button2Img: 'Quere converter o botón da imaxe seleccionada nunha imaxe sinxela?', + hSpace: 'Esp.Horiz.', + img2Button: 'Quere converter a imaxe seleccionada nun botón de imaxe?', + infoTab: 'Información da imaxe', + linkTab: 'Ligazón', + lockRatio: 'Proporcional', + menu: 'Propiedades da imaxe', + resetSize: 'Tamaño orixinal', + title: 'Propiedades da imaxe', + titleButton: 'Propiedades do botón de imaxe', + upload: 'Cargar', + urlMissing: 'Non se atopa o URL da imaxe.', + vSpace: 'Esp.Vert.', + validateBorder: 'O bordo debe ser un número.', + validateHSpace: 'O espazado horizontal debe ser un número.', + validateVSpace: 'O espazado vertical debe ser un número.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/gu.js b/resource/res/libs/ckeditor/plugins/image/lang/gu.js new file mode 100644 index 00000000..f5561939 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/gu.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'gu', { + alt: 'ઑલ્ટર્નટ ટેક્સ્ટ', + border: 'બોર્ડર', + btnUpload: 'આ સર્વરને મોકલવું', + button2Img: 'તમારે ઈમેજ બટનને સાદી ઈમેજમાં બદલવું છે.', + hSpace: 'સમસ્તરીય જગ્યા', + img2Button: 'તમારે સાદી ઈમેજને ઈમેજ બટનમાં બદલવું છે.', + infoTab: 'ચિત્ર ની જાણકારી', + linkTab: 'લિંક', + lockRatio: 'લૉક ગુણોત્તર', + menu: 'ચિત્રના ગુણ', + resetSize: 'રીસેટ સાઇઝ', + title: 'ચિત્રના ગુણ', + titleButton: 'ચિત્ર બટનના ગુણ', + upload: 'અપલોડ', + urlMissing: 'ઈમેજની મૂળ URL છે નહી.', + vSpace: 'લંબરૂપ જગ્યા', + validateBorder: 'બોર્ડેર આંકડો હોવો જોઈએ.', + validateHSpace: 'HSpaceઆંકડો હોવો જોઈએ.', + validateVSpace: 'VSpace આંકડો હોવો જોઈએ. ' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/he.js b/resource/res/libs/ckeditor/plugins/image/lang/he.js new file mode 100644 index 00000000..ec3fbcab --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/he.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'he', { + alt: 'טקסט חלופי', + border: 'מסגרת', + btnUpload: 'שליחה לשרת', + button2Img: 'האם להפוך את תמונת הכפתור לתמונה פשוטה?', + hSpace: 'מרווח אופקי', + img2Button: 'האם להפוך את התמונה לכפתור תמונה?', + infoTab: 'מידע על התמונה', + linkTab: 'קישור', + lockRatio: 'נעילת היחס', + menu: 'תכונות התמונה', + resetSize: 'איפוס הגודל', + title: 'מאפייני התמונה', + titleButton: 'מאפיני כפתור תמונה', + upload: 'העלאה', + urlMissing: 'כתובת התמונה חסרה.', + vSpace: 'מרווח אנכי', + validateBorder: 'שדה המסגרת חייב להיות מספר שלם.', + validateHSpace: 'שדה המרווח האופקי חייב להיות מספר שלם.', + validateVSpace: 'שדה המרווח האנכי חייב להיות מספר שלם.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/hi.js b/resource/res/libs/ckeditor/plugins/image/lang/hi.js new file mode 100644 index 00000000..de28d392 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/hi.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'hi', { + alt: 'वैकल्पिक टेक्स्ट', + border: 'बॉर्डर', + btnUpload: 'इसे सर्वर को भेजें', + button2Img: 'Do you want to transform the selected image button on a simple image?', // MISSING + hSpace: 'हॉरिज़ॉन्टल स्पेस', + img2Button: 'Do you want to transform the selected image on a image button?', // MISSING + infoTab: 'तस्वीर की जानकारी', + linkTab: 'लिंक', + lockRatio: 'लॉक अनुपात', + menu: 'तस्वीर प्रॉपर्टीज़', + resetSize: 'रीसॅट साइज़', + title: 'तस्वीर प्रॉपर्टीज़', + titleButton: 'तस्वीर बटन प्रॉपर्टीज़', + upload: 'अपलोड', + urlMissing: 'Image source URL is missing.', // MISSING + vSpace: 'वर्टिकल स्पेस', + validateBorder: 'Border must be a whole number.', // MISSING + validateHSpace: 'HSpace must be a whole number.', // MISSING + validateVSpace: 'VSpace must be a whole number.' // MISSING +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/hr.js b/resource/res/libs/ckeditor/plugins/image/lang/hr.js new file mode 100644 index 00000000..03f6c949 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/hr.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'hr', { + alt: 'Alternativni tekst', + border: 'Okvir', + btnUpload: 'Pošalji na server', + button2Img: 'Želite li promijeniti odabrani gumb u jednostavnu sliku?', + hSpace: 'HSpace', + img2Button: 'Želite li promijeniti odabranu sliku u gumb?', + infoTab: 'Info slike', + linkTab: 'Veza', + lockRatio: 'Zaključaj odnos', + menu: 'Svojstva slika', + resetSize: 'Obriši veličinu', + title: 'Svojstva slika', + titleButton: 'Image Button svojstva', + upload: 'Pošalji', + urlMissing: 'Nedostaje URL slike.', + vSpace: 'VSpace', + validateBorder: 'Okvir mora biti cijeli broj.', + validateHSpace: 'HSpace mora biti cijeli broj', + validateVSpace: 'VSpace mora biti cijeli broj.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/hu.js b/resource/res/libs/ckeditor/plugins/image/lang/hu.js new file mode 100644 index 00000000..a5da03c3 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/hu.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'hu', { + alt: 'Alternatív szöveg', + border: 'Keret', + btnUpload: 'Küldés a szerverre', + button2Img: 'Szeretne a kiválasztott képgombból sima képet csinálni?', + hSpace: 'Vízsz. táv', + img2Button: 'Szeretne a kiválasztott képből képgombot csinálni?', + infoTab: 'Alaptulajdonságok', + linkTab: 'Hivatkozás', + lockRatio: 'Arány megtartása', + menu: 'Kép tulajdonságai', + resetSize: 'Eredeti méret', + title: 'Kép tulajdonságai', + titleButton: 'Képgomb tulajdonságai', + upload: 'Feltöltés', + urlMissing: 'Hiányzik a kép URL-je.', + vSpace: 'Függ. táv', + validateBorder: 'A keret méretének egész számot kell beírni!', + validateHSpace: 'Vízszintes távolságnak egész számot kell beírni!', + validateVSpace: 'Függőleges távolságnak egész számot kell beírni!' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/id.js b/resource/res/libs/ckeditor/plugins/image/lang/id.js new file mode 100644 index 00000000..fa0d2a8c --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/id.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'id', { + alt: 'Teks alternatif', + border: 'Batas', + btnUpload: 'Kirim ke Server', + button2Img: 'Do you want to transform the selected image button on a simple image?', // MISSING + hSpace: 'HSpace', // MISSING + img2Button: 'Apakah anda ingin mengubah gambar yang dipilih pada tombol gambar?', + infoTab: 'Info Gambar', + linkTab: 'Tautan', + lockRatio: 'Lock Ratio', // MISSING + menu: 'Image Properties', // MISSING + resetSize: 'Atur Ulang Ukuran', + title: 'Image Properties', // MISSING + titleButton: 'Image Button Properties', // MISSING + upload: 'Unggah', + urlMissing: 'Image source URL is missing.', // MISSING + vSpace: 'VSpace', + validateBorder: 'Border harus berupa angka', + validateHSpace: 'HSpace harus berupa angka', + validateVSpace: 'VSpace must be a whole number.' // MISSING +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/is.js b/resource/res/libs/ckeditor/plugins/image/lang/is.js new file mode 100644 index 00000000..508fafbc --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/is.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'is', { + alt: 'Baklægur texti', + border: 'Rammi', + btnUpload: 'Hlaða upp', + button2Img: 'Do you want to transform the selected image button on a simple image?', // MISSING + hSpace: 'Vinstri bil', + img2Button: 'Do you want to transform the selected image on a image button?', // MISSING + infoTab: 'Almennt', + linkTab: 'Stikla', + lockRatio: 'Festa stærðarhlutfall', + menu: 'Eigindi myndar', + resetSize: 'Reikna stærð', + title: 'Eigindi myndar', + titleButton: 'Eigindi myndahnapps', + upload: 'Hlaða upp', + urlMissing: 'Image source URL is missing.', // MISSING + vSpace: 'Hægri bil', + validateBorder: 'Border must be a whole number.', // MISSING + validateHSpace: 'HSpace must be a whole number.', // MISSING + validateVSpace: 'VSpace must be a whole number.' // MISSING +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/it.js b/resource/res/libs/ckeditor/plugins/image/lang/it.js new file mode 100644 index 00000000..86e3b494 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/it.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'it', { + alt: 'Testo alternativo', + border: 'Bordo', + btnUpload: 'Invia al server', + button2Img: 'Vuoi trasformare il bottone immagine selezionato in un\'immagine semplice?', + hSpace: 'HSpace', + img2Button: 'Vuoi trasferomare l\'immagine selezionata in un bottone immagine?', + infoTab: 'Informazioni immagine', + linkTab: 'Collegamento', + lockRatio: 'Blocca rapporto', + menu: 'Proprietà immagine', + resetSize: 'Reimposta dimensione', + title: 'Proprietà immagine', + titleButton: 'Proprietà bottone immagine', + upload: 'Carica', + urlMissing: 'Manca l\'URL dell\'immagine.', + vSpace: 'VSpace', + validateBorder: 'Il campo Bordo deve essere un numero intero.', + validateHSpace: 'Il campo HSpace deve essere un numero intero.', + validateVSpace: 'Il campo VSpace deve essere un numero intero.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/ja.js b/resource/res/libs/ckeditor/plugins/image/lang/ja.js new file mode 100644 index 00000000..7cfbf66e --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/ja.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'ja', { + alt: '代替テキスト', + border: '枠線の幅', + btnUpload: 'サーバーに送信', + button2Img: '選択した画像ボタンを画像に変換しますか?', + hSpace: '水平間隔', + img2Button: '選択した画像を画像ボタンに変換しますか?', + infoTab: '画像情報', + linkTab: 'リンク', + lockRatio: '比率を固定', + menu: '画像のプロパティ', + resetSize: 'サイズをリセット', + title: '画像のプロパティ', + titleButton: '画像ボタンのプロパティ', + upload: 'アップロード', + urlMissing: '画像のURLを入力してください。', + vSpace: '垂直間隔', + validateBorder: '枠線の幅は数値で入力してください。', + validateHSpace: '水平間隔は数値で入力してください。', + validateVSpace: '垂直間隔は数値で入力してください。' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/ka.js b/resource/res/libs/ckeditor/plugins/image/lang/ka.js new file mode 100644 index 00000000..a19b47b4 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/ka.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'ka', { + alt: 'სანაცვლო ტექსტი', + border: 'ჩარჩო', + btnUpload: 'სერვერისთვის გაგზავნა', + button2Img: 'გსურთ არჩეული სურათიანი ღილაკის გადაქცევა ჩვეულებრივ ღილაკად?', + hSpace: 'ჰორიზონტალური სივრცე', + img2Button: 'გსურთ არჩეული ჩვეულებრივი ღილაკის გადაქცევა სურათიან ღილაკად?', + infoTab: 'სურათის ინფორმცია', + linkTab: 'ბმული', + lockRatio: 'პროპორციის შენარჩუნება', + menu: 'სურათის პარამეტრები', + resetSize: 'ზომის დაბრუნება', + title: 'სურათის პარამეტრები', + titleButton: 'სურათიანი ღილაკის პარამეტრები', + upload: 'ატვირთვა', + urlMissing: 'სურათის URL არაა შევსებული.', + vSpace: 'ვერტიკალური სივრცე', + validateBorder: 'ჩარჩო მთელი რიცხვი უნდა იყოს.', + validateHSpace: 'ჰორიზონტალური სივრცე მთელი რიცხვი უნდა იყოს.', + validateVSpace: 'ვერტიკალური სივრცე მთელი რიცხვი უნდა იყოს.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/km.js b/resource/res/libs/ckeditor/plugins/image/lang/km.js new file mode 100644 index 00000000..42036817 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/km.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'km', { + alt: 'អត្ថបទជំនួស', + border: 'ស៊ុម', + btnUpload: 'ផ្ញើ​ទៅ​ម៉ាស៊ីន​បម្រើ', + button2Img: 'តើ​អ្នក​ចង់​ផ្លាស់​ប្ដូរ​ប៊ូតុង​រូបភាព​ដែល​បាន​ជ្រើស នៅ​លើ​រូបភាព​ធម្មតា​មួយ​មែនទេ?', + hSpace: 'គម្លាត​ផ្ដេក', + img2Button: 'តើ​អ្នក​ចង់​ផ្លាស់​ប្ដូរ​រូបភាព​ដែល​បាន​ជ្រើស នៅ​លើ​ប៊ូតុង​រូបភាព​មែនទេ?', + infoTab: 'ពត៌មានអំពីរូបភាព', + linkTab: 'តំណ', + lockRatio: 'ចាក់​សោ​ផល​ធៀប', + menu: 'លក្ខណៈ​រូបភាព', + resetSize: 'កំណត់ទំហំឡើងវិញ', + title: 'លក្ខណៈ​រូបភាព', + titleButton: 'លក្ខណៈ​ប៊ូតុង​រូបភាព', + upload: 'ផ្ទុកឡើង', + urlMissing: 'ខ្វះ URL ប្រភព​រូប​ភាព។', + vSpace: 'គម្លាត​បញ្ឈរ', + validateBorder: 'ស៊ុម​ត្រូវ​តែ​ជា​លេខ។', + validateHSpace: 'គម្លាត​ផ្ដេក​ត្រូវ​តែ​ជា​លេខ។', + validateVSpace: 'គម្លាត​បញ្ឈរ​ត្រូវ​តែ​ជា​លេខ។' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/ko.js b/resource/res/libs/ckeditor/plugins/image/lang/ko.js new file mode 100644 index 00000000..5f937c2e --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/ko.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'ko', { + alt: '대체 문자열', + border: '테두리', + btnUpload: '서버로 전송', + button2Img: '단순 이미지에서 선택한 이미지 버튼을 변환하시겠습니까?', + hSpace: '가로 여백', + img2Button: '이미지 버튼에 선택한 이미지를 변환하시겠습니까?', + infoTab: '이미지 정보', + linkTab: '링크', + lockRatio: '비율 유지', + menu: '이미지 속성', + resetSize: '원래 크기로', + title: '이미지 속성', + titleButton: '이미지 버튼 속성', + upload: '업로드', + urlMissing: '이미지 원본 주소(URL)가 없습니다.', + vSpace: '세로 여백', + validateBorder: '테두리 두께는 정수여야 합니다.', + validateHSpace: '가로 길이는 정수여야 합니다.', + validateVSpace: '세로 길이는 정수여야 합니다.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/ku.js b/resource/res/libs/ckeditor/plugins/image/lang/ku.js new file mode 100644 index 00000000..1d2c099d --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/ku.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'ku', { + alt: 'جێگرەوەی دەق', + border: 'پەراوێز', + btnUpload: 'ناردنی بۆ ڕاژه', + button2Img: 'تۆ دەتەوێت دوگمەی وێنەی دیاریکراو بگۆڕیت بۆ وێنەیەکی ئاسایی؟', + hSpace: 'بۆشایی ئاسۆیی', + img2Button: 'تۆ دەتەوێت وێنەی دیاریکراو بگۆڕیت بۆ دوگمەی وێنه؟', + infoTab: 'زانیاری وێنه', + linkTab: 'بەستەر', + lockRatio: 'داخستنی ڕێژه', + menu: 'خاسیەتی وێنه', + resetSize: 'ڕێکخستنەوەی قەباره', + title: 'خاسیەتی وێنه', + titleButton: 'خاسیەتی دوگمەی وێنه', + upload: 'بارکردن', + urlMissing: 'سەرچاوەی بەستەری وێنه بزره', + vSpace: 'بۆشایی ئەستونی', + validateBorder: 'پەراوێز دەبێت بەتەواوی تەنها ژماره بێت.', + validateHSpace: 'بۆشایی ئاسۆیی دەبێت بەتەواوی تەنها ژمارە بێت.', + validateVSpace: 'بۆشایی ئەستونی دەبێت بەتەواوی تەنها ژماره بێت.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/lt.js b/resource/res/libs/ckeditor/plugins/image/lang/lt.js new file mode 100644 index 00000000..d7d8f304 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/lt.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'lt', { + alt: 'Alternatyvus Tekstas', + border: 'Rėmelis', + btnUpload: 'Siųsti į serverį', + button2Img: 'Ar norite mygtuką paversti paprastu paveiksliuku?', + hSpace: 'Hor.Erdvė', + img2Button: 'Ar norite paveiksliuką paversti mygtuku?', + infoTab: 'Vaizdo informacija', + linkTab: 'Nuoroda', + lockRatio: 'Išlaikyti proporciją', + menu: 'Vaizdo savybės', + resetSize: 'Atstatyti dydį', + title: 'Vaizdo savybės', + titleButton: 'Vaizdinio mygtuko savybės', + upload: 'Nusiųsti', + urlMissing: 'Paveiksliuko nuorodos nėra.', + vSpace: 'Vert.Erdvė', + validateBorder: 'Reikšmė turi būti sveikas skaičius.', + validateHSpace: 'Reikšmė turi būti sveikas skaičius.', + validateVSpace: 'Reikšmė turi būti sveikas skaičius.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/lv.js b/resource/res/libs/ckeditor/plugins/image/lang/lv.js new file mode 100644 index 00000000..77fd6f5a --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/lv.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'lv', { + alt: 'Alternatīvais teksts', + border: 'Rāmis', + btnUpload: 'Nosūtīt serverim', + button2Img: 'Vai vēlaties pārveidot izvēlēto attēla pogu uz attēla?', + hSpace: 'Horizontālā telpa', + img2Button: 'Vai vēlaties pārveidot izvēlēto attēlu uz attēla pogas?', + infoTab: 'Informācija par attēlu', + linkTab: 'Hipersaite', + lockRatio: 'Nemainīga Augstuma/Platuma attiecība', + menu: 'Attēla īpašības', + resetSize: 'Atjaunot sākotnējo izmēru', + title: 'Attēla īpašības', + titleButton: 'Attēlpogas īpašības', + upload: 'Augšupielādēt', + urlMissing: 'Trūkst attēla atrašanās adrese.', + vSpace: 'Vertikālā telpa', + validateBorder: 'Apmalei jābūt veselam skaitlim', + validateHSpace: 'HSpace jābūt veselam skaitlim', + validateVSpace: 'VSpace jābūt veselam skaitlim' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/mk.js b/resource/res/libs/ckeditor/plugins/image/lang/mk.js new file mode 100644 index 00000000..ebafb5bd --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/mk.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'mk', { + alt: 'Алтернативен текст', + border: 'Раб', + btnUpload: 'Прикачи на сервер', + button2Img: 'Дали сакате да направите сликата-копче да биде само слика?', + hSpace: 'Хоризонтален простор', + img2Button: 'Дали сакате да ја претворите сликата во слика-копче?', + infoTab: 'Информации за сликата', + linkTab: 'Врска', + lockRatio: 'Зачувај пропорција', + menu: 'Својства на сликата', + resetSize: 'Ресетирај големина', + title: 'Својства на сликата', + titleButton: 'Својства на копче-сликата', + upload: 'Прикачи', + urlMissing: 'Недостасува URL-то на сликата.', + vSpace: 'Вертикален простор', + validateBorder: 'Работ мора да биде цел број.', + validateHSpace: 'Хор. простор мора да биде цел број.', + validateVSpace: 'Верт. простор мора да биде цел број.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/mn.js b/resource/res/libs/ckeditor/plugins/image/lang/mn.js new file mode 100644 index 00000000..6122b1f6 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/mn.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'mn', { + alt: 'Зургийг орлох бичвэр', + border: 'Хүрээ', + btnUpload: 'Үүнийг сервэррүү илгээ', + button2Img: 'Do you want to transform the selected image button on a simple image?', // MISSING + hSpace: 'Хөндлөн зай', + img2Button: 'Do you want to transform the selected image on a image button?', // MISSING + infoTab: 'Зурагны мэдээлэл', + linkTab: 'Холбоос', + lockRatio: 'Радио түгжих', + menu: 'Зураг', + resetSize: 'хэмжээ дахин оноох', + title: 'Зураг', + titleButton: 'Зурган товчны шинж чанар', + upload: 'Хуулах', + urlMissing: 'Зургийн эх сурвалжийн хаяг (URL) байхгүй байна.', + vSpace: 'Босоо зай', + validateBorder: 'Border must be a whole number.', // MISSING + validateHSpace: 'HSpace must be a whole number.', // MISSING + validateVSpace: 'VSpace must be a whole number.' // MISSING +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/ms.js b/resource/res/libs/ckeditor/plugins/image/lang/ms.js new file mode 100644 index 00000000..fcf3e29e --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/ms.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'ms', { + alt: 'Text Alternatif', + border: 'Border', + btnUpload: 'Hantar ke Server', + button2Img: 'Do you want to transform the selected image button on a simple image?', // MISSING + hSpace: 'Ruang Melintang', + img2Button: 'Do you want to transform the selected image on a image button?', // MISSING + infoTab: 'Info Imej', + linkTab: 'Sambungan', + lockRatio: 'Tetapkan Nisbah', + menu: 'Ciri-ciri Imej', + resetSize: 'Saiz Set Semula', + title: 'Ciri-ciri Imej', + titleButton: 'Ciri-ciri Butang Bergambar', + upload: 'Muat Naik', + urlMissing: 'Image source URL is missing.', // MISSING + vSpace: 'Ruang Menegak', + validateBorder: 'Border must be a whole number.', // MISSING + validateHSpace: 'HSpace must be a whole number.', // MISSING + validateVSpace: 'VSpace must be a whole number.' // MISSING +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/nb.js b/resource/res/libs/ckeditor/plugins/image/lang/nb.js new file mode 100644 index 00000000..48b0d26c --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/nb.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'nb', { + alt: 'Alternativ tekst', + border: 'Ramme', + btnUpload: 'Send det til serveren', + button2Img: 'Vil du endre den valgte bildeknappen til et vanlig bilde?', + hSpace: 'HMarg', + img2Button: 'Vil du endre det valgte bildet til en bildeknapp?', + infoTab: 'Bildeinformasjon', + linkTab: 'Lenke', + lockRatio: 'Lås forhold', + menu: 'Bildeegenskaper', + resetSize: 'Tilbakestill størrelse', + title: 'Bildeegenskaper', + titleButton: 'Egenskaper for bildeknapp', + upload: 'Last opp', + urlMissing: 'Bildets adresse mangler.', + vSpace: 'VMarg', + validateBorder: 'Ramme må være et heltall.', + validateHSpace: 'HMarg må være et heltall.', + validateVSpace: 'VMarg må være et heltall.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/nl.js b/resource/res/libs/ckeditor/plugins/image/lang/nl.js new file mode 100644 index 00000000..734f7c9d --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/nl.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'nl', { + alt: 'Alternatieve tekst', + border: 'Rand', + btnUpload: 'Naar server verzenden', + button2Img: 'Wilt u de geselecteerde afbeeldingsknop vervangen door een eenvoudige afbeelding?', + hSpace: 'HSpace', + img2Button: 'Wilt u de geselecteerde afbeelding vervangen door een afbeeldingsknop?', + infoTab: 'Informatie afbeelding', + linkTab: 'Link', + lockRatio: 'Afmetingen vergrendelen', + menu: 'Eigenschappen afbeelding', + resetSize: 'Afmetingen resetten', + title: 'Eigenschappen afbeelding', + titleButton: 'Eigenschappen afbeeldingsknop', + upload: 'Upload', + urlMissing: 'De URL naar de afbeelding ontbreekt.', + vSpace: 'VSpace', + validateBorder: 'Rand moet een heel nummer zijn.', + validateHSpace: 'HSpace moet een heel nummer zijn.', + validateVSpace: 'VSpace moet een heel nummer zijn.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/no.js b/resource/res/libs/ckeditor/plugins/image/lang/no.js new file mode 100644 index 00000000..637d7bcb --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/no.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'no', { + alt: 'Alternativ tekst', + border: 'Ramme', + btnUpload: 'Send det til serveren', + button2Img: 'Vil du endre den valgte bildeknappen til et vanlig bilde?', + hSpace: 'HMarg', + img2Button: 'Vil du endre det valgte bildet til en bildeknapp?', + infoTab: 'Bildeinformasjon', + linkTab: 'Lenke', + lockRatio: 'Lås forhold', + menu: 'Bildeegenskaper', + resetSize: 'Tilbakestill størrelse', + title: 'Bildeegenskaper', + titleButton: 'Egenskaper for bildeknapp', + upload: 'Last opp', + urlMissing: 'Bildets adresse mangler.', + vSpace: 'VMarg', + validateBorder: 'Ramme må være et heltall.', + validateHSpace: 'HMarg må være et heltall.', + validateVSpace: 'VMarg må være et heltall.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/oc.js b/resource/res/libs/ckeditor/plugins/image/lang/oc.js new file mode 100644 index 00000000..1eca232c --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/oc.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'oc', { + alt: 'Tèxte alternatiu', + border: 'Bordadura', + btnUpload: 'Mandar sul servidor', + button2Img: 'Volètz transformar lo boton amb imatge seleccionat en imatge simple ?', + hSpace: 'Espaçament orizontal', + img2Button: 'Volètz transformar l\'imatge seleccionat en boton amb imatge ?', + infoTab: 'Informacions sus l\'imatge', + linkTab: 'Ligam', + lockRatio: 'Conservar las proporcions', + menu: 'Proprietats de l\'imatge', + resetSize: 'Reïnicializar la talha', + title: 'Proprietats de l\'imatge', + titleButton: 'Proprietats del boton amb imatge', + upload: 'Mandar', + urlMissing: 'L\'URL font de l\'imatge es mancanta.', + vSpace: 'Espaçament vertical', + validateBorder: 'La bordadura deu èsser un nombre entièr.', + validateHSpace: 'L\'espaçament orizontal deu èsser un nombre entièr.', + validateVSpace: 'L\'espaçament vertical deu èsser un nombre entièr.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/pl.js b/resource/res/libs/ckeditor/plugins/image/lang/pl.js new file mode 100644 index 00000000..4fbaaef4 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/pl.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'pl', { + alt: 'Tekst zastępczy', + border: 'Obramowanie', + btnUpload: 'Wyślij', + button2Img: 'Czy chcesz przekonwertować zaznaczony przycisk graficzny do zwykłego obrazka?', + hSpace: 'Odstęp poziomy', + img2Button: 'Czy chcesz przekonwertować zaznaczony obrazek do przycisku graficznego?', + infoTab: 'Informacje o obrazku', + linkTab: 'Hiperłącze', + lockRatio: 'Zablokuj proporcje', + menu: 'Właściwości obrazka', + resetSize: 'Przywróć rozmiar', + title: 'Właściwości obrazka', + titleButton: 'Właściwości przycisku graficznego', + upload: 'Wyślij', + urlMissing: 'Podaj adres URL obrazka.', + vSpace: 'Odstęp pionowy', + validateBorder: 'Wartość obramowania musi być liczbą całkowitą.', + validateHSpace: 'Wartość odstępu poziomego musi być liczbą całkowitą.', + validateVSpace: 'Wartość odstępu pionowego musi być liczbą całkowitą.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/pt-br.js b/resource/res/libs/ckeditor/plugins/image/lang/pt-br.js new file mode 100644 index 00000000..021d8c9c --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/pt-br.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'pt-br', { + alt: 'Texto Alternativo', + border: 'Borda', + btnUpload: 'Enviar para o Servidor', + button2Img: 'Deseja transformar o botão de imagem em uma imagem comum?', + hSpace: 'HSpace', + img2Button: 'Deseja transformar a imagem em um botão de imagem?', + infoTab: 'Informações da Imagem', + linkTab: 'Link', + lockRatio: 'Travar Proporções', + menu: 'Formatar Imagem', + resetSize: 'Redefinir para o Tamanho Original', + title: 'Formatar Imagem', + titleButton: 'Formatar Botão de Imagem', + upload: 'Enviar', + urlMissing: 'URL da imagem está faltando.', + vSpace: 'VSpace', + validateBorder: 'A borda deve ser um número inteiro.', + validateHSpace: 'O HSpace deve ser um número inteiro.', + validateVSpace: 'O VSpace deve ser um número inteiro.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/pt.js b/resource/res/libs/ckeditor/plugins/image/lang/pt.js new file mode 100644 index 00000000..d564ccf0 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/pt.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'pt', { + alt: 'Texto alternativo', + border: 'Limite', + btnUpload: 'Enviar para o servidor', + button2Img: 'Deseja transformar o botão com imagem selecionado numa imagem simples?', + hSpace: 'Esp. Horiz', + img2Button: 'Deseja transformar a imagem selecionada num botão com imagem?', + infoTab: 'Informação da imagem', + linkTab: 'Hiperligação', + lockRatio: 'Proporcional', + menu: 'Propriedades da Imagem', + resetSize: 'Tamanho original', + title: 'Propriedades da imagem', + titleButton: 'Propriedades do botão de imagem', + upload: 'Carregar', + urlMissing: 'O URL de origem da imagem está em falta.', + vSpace: 'Esp. Vert', + validateBorder: 'A borda tem de ser um número inteiro.', + validateHSpace: 'HSpace tem de ser um numero.', + validateVSpace: 'VSpace tem de ser um numero.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/ro.js b/resource/res/libs/ckeditor/plugins/image/lang/ro.js new file mode 100644 index 00000000..72e569b2 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/ro.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'ro', { + alt: 'Text alternativ', + border: 'Margine', + btnUpload: 'Trimite la server', + button2Img: 'Buton imagine în imagine normală', + hSpace: 'HSpace', + img2Button: 'Imagine în buton imagine', + infoTab: 'Informaţii despre imagine', + linkTab: 'Link (Legătură web)', + lockRatio: 'Păstrează proporţiile', + menu: 'Proprietăţile imaginii', + resetSize: 'Resetează mărimea', + title: 'Proprietăţile imaginii', + titleButton: 'Proprietăţi buton imagine (Image Button)', + upload: 'Încarcă', + urlMissing: 'Sursa URL a imaginii lipsește.', + vSpace: 'VSpace', + validateBorder: 'Bordura trebuie să fie număr întreg.', + validateHSpace: 'Hspace trebuie să fie număr întreg.', + validateVSpace: 'Vspace trebuie să fie număr întreg.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/ru.js b/resource/res/libs/ckeditor/plugins/image/lang/ru.js new file mode 100644 index 00000000..5904b882 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/ru.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'ru', { + alt: 'Альтернативный текст', + border: 'Граница', + btnUpload: 'Загрузить на сервер', + button2Img: 'Вы желаете преобразовать это изображение-кнопку в обычное изображение?', + hSpace: 'Гориз. отступ', + img2Button: 'Вы желаете преобразовать это обычное изображение в изображение-кнопку?', + infoTab: 'Данные об изображении', + linkTab: 'Ссылка', + lockRatio: 'Сохранять пропорции', + menu: 'Свойства изображения', + resetSize: 'Вернуть обычные размеры', + title: 'Свойства изображения', + titleButton: 'Свойства изображения-кнопки', + upload: 'Загрузить', + urlMissing: 'Не указана ссылка на изображение.', + vSpace: 'Вертик. отступ', + validateBorder: 'Размер границ должен быть задан числом.', + validateHSpace: 'Горизонтальный отступ должен быть задан числом.', + validateVSpace: 'Вертикальный отступ должен быть задан числом.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/si.js b/resource/res/libs/ckeditor/plugins/image/lang/si.js new file mode 100644 index 00000000..9763fb95 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/si.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'si', { + alt: 'විකල්ප ', + border: 'සීමාවවල ', + btnUpload: 'සේවාදායකය වෙත යොමුකිරිම', + button2Img: 'ඔබට තෝරන ලද රුපය පරිවර්තනය කිරීමට අවශ්‍යද?', + hSpace: 'HSpace', + img2Button: 'ඔබට තෝරන ලද රුපය පරිවර්තනය කිරීමට අවශ්‍යද?', + infoTab: 'රුපයේ තොරතුරු', + linkTab: 'සබැඳිය', + lockRatio: 'නවතන අනුපාතය ', + menu: 'රුපයේ ගුණ', + resetSize: 'නැවතත් විශාලත්වය වෙනස් කිරීම', + title: 'රුපයේ ', + titleButton: 'රුප බොත්තමේ ගුණ', + upload: 'උඩුගතකිරීම', + urlMissing: 'රුප මුලාශ්‍ර URL නැත.', + vSpace: 'VSpace', + validateBorder: 'මාඉම් සම්පුර්ණ සංක්‍යාවක් විය යුතුය.', + validateHSpace: 'HSpace සම්පුර්ණ සංක්‍යාවක් විය යුතුය', + validateVSpace: 'VSpace සම්පුර්ණ සංක්‍යාවක් විය යුතුය.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/sk.js b/resource/res/libs/ckeditor/plugins/image/lang/sk.js new file mode 100644 index 00000000..62bdada9 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/sk.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'sk', { + alt: 'Alternatívny text', + border: 'Rám (border)', + btnUpload: 'Odoslať to na server', + button2Img: 'Chcete zmeniť vybrané obrázkové tlačidlo na jednoduchý obrázok?', + hSpace: 'H-medzera', + img2Button: 'Chcete zmeniť vybraný obrázok na obrázkové tlačidlo?', + infoTab: 'Informácie o obrázku', + linkTab: 'Odkaz', + lockRatio: 'Pomer zámky', + menu: 'Vlastnosti obrázka', + resetSize: 'Pôvodná veľkosť', + title: 'Vlastnosti obrázka', + titleButton: 'Vlastnosti obrázkového tlačidla', + upload: 'Nahrať', + urlMissing: 'Chýba URL zdroja obrázka.', + vSpace: 'V-medzera', + validateBorder: 'Rám (border) musí byť celé číslo.', + validateHSpace: 'H-medzera musí byť celé číslo.', + validateVSpace: 'V-medzera musí byť celé číslo.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/sl.js b/resource/res/libs/ckeditor/plugins/image/lang/sl.js new file mode 100644 index 00000000..98800334 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/sl.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'sl', { + alt: 'Nadomestno besedilo', + border: 'Obroba', + btnUpload: 'Pošlji na strežnik', + button2Img: 'Želite pretvoriti izbrani gumb s sliko v preprosto sliko?', + hSpace: 'Vodoravni odmik', + img2Button: 'Želite pretvoriti izbrano sliko v gumb s sliko?', + infoTab: 'Podatki o sliki', + linkTab: 'Povezava', + lockRatio: 'Zakleni razmerje', + menu: 'Lastnosti slike', + resetSize: 'Ponastavi velikost', + title: 'Lastnosti slike', + titleButton: 'Lastnosti gumba s sliko', + upload: 'Naloži', + urlMissing: 'Manjka URL vira slike.', + vSpace: 'Navpični odmik', + validateBorder: 'Meja mora biti celo število.', + validateHSpace: 'Vodoravni odmik mora biti celo število.', + validateVSpace: 'VSpace mora biti celo število.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/sq.js b/resource/res/libs/ckeditor/plugins/image/lang/sq.js new file mode 100644 index 00000000..c15757b6 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/sq.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'sq', { + alt: 'Tekst Alternativ', + border: 'Korniza', + btnUpload: 'Dërgo në server', + button2Img: 'Dëshironi të e ndërroni pullën e fotos së selektuar në një foto të thjeshtë?', + hSpace: 'HSpace', + img2Button: 'Dëshironi të ndryshoni foton e përzgjedhur në pullë?', + infoTab: 'Informacione mbi Fotografinë', + linkTab: 'Nyja', + lockRatio: 'Mbyll Racionin', + menu: 'Karakteristikat e Fotografisë', + resetSize: 'Rikthe Madhësinë', + title: 'Karakteristikat e Fotografisë', + titleButton: 'Karakteristikat e Pullës së Fotografisë', + upload: 'Ngarko', + urlMissing: 'Mungon URL e burimit të fotografisë.', + vSpace: 'Hapësira Vertikale', + validateBorder: 'Korniza duhet të jetë numër i plotë.', + validateHSpace: 'Hapësira horizontale duhet të jetë numër i plotë.', + validateVSpace: 'Hapësira vertikale duhet të jetë numër i plotë.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/sr-latn.js b/resource/res/libs/ckeditor/plugins/image/lang/sr-latn.js new file mode 100644 index 00000000..d0fad85e --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/sr-latn.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'sr-latn', { + alt: 'Alternativni tekst', + border: 'Okvir', + btnUpload: 'Pošalji na server', + button2Img: 'Do you want to transform the selected image button on a simple image?', // MISSING + hSpace: 'HSpace', + img2Button: 'Do you want to transform the selected image on a image button?', // MISSING + infoTab: 'Info slike', + linkTab: 'Link', + lockRatio: 'Zaključaj odnos', + menu: 'Osobine slika', + resetSize: 'Resetuj veličinu', + title: 'Osobine slika', + titleButton: 'Osobine dugmeta sa slikom', + upload: 'Pošalji', + urlMissing: 'Image source URL is missing.', // MISSING + vSpace: 'VSpace', + validateBorder: 'Border must be a whole number.', // MISSING + validateHSpace: 'HSpace must be a whole number.', // MISSING + validateVSpace: 'VSpace must be a whole number.' // MISSING +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/sr.js b/resource/res/libs/ckeditor/plugins/image/lang/sr.js new file mode 100644 index 00000000..defda932 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/sr.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'sr', { + alt: 'Алтернативни текст', + border: 'Оквир', + btnUpload: 'Пошаљи на сервер', + button2Img: 'Да ли желите да промените одабрану слику дугмета као једноставну слику?', + hSpace: 'HSpace', + img2Button: 'Да ли желите да промените одабрану слику у слику дугмета?', + infoTab: 'Инфо слике', + linkTab: 'Линк', + lockRatio: 'Закључај однос', + menu: 'Особине слика', + resetSize: 'Ресетуј величину', + title: 'Особине слика', + titleButton: 'Особине дугмета са сликом', + upload: 'Пошаљи', + urlMissing: 'Недостаје УРЛ слике.', + vSpace: 'VSpace', + validateBorder: 'Ивица треба да буде цифра.', + validateHSpace: 'HSpace треба да буде цифра.', + validateVSpace: 'VSpace треба да буде цифра.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/sv.js b/resource/res/libs/ckeditor/plugins/image/lang/sv.js new file mode 100644 index 00000000..83f20447 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/sv.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'sv', { + alt: 'Alternativ text', + border: 'Kant', + btnUpload: 'Skicka till server', + button2Img: 'Vill du omvandla den valda bildknappen på en enkel bild?', + hSpace: 'Horis. marginal', + img2Button: 'Vill du omvandla den valda bildknappen på en enkel bild?', + infoTab: 'Bildinformation', + linkTab: 'Länk', + lockRatio: 'Lås höjd/bredd förhållanden', + menu: 'Bildegenskaper', + resetSize: 'Återställ storlek', + title: 'Bildegenskaper', + titleButton: 'Egenskaper för bildknapp', + upload: 'Ladda upp', + urlMissing: 'Bildkällans URL saknas.', + vSpace: 'Vert. marginal', + validateBorder: 'Kantlinje måste vara ett heltal.', + validateHSpace: 'HSpace måste vara ett heltal.', + validateVSpace: 'VSpace måste vara ett heltal.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/th.js b/resource/res/libs/ckeditor/plugins/image/lang/th.js new file mode 100644 index 00000000..542912d4 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/th.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'th', { + alt: 'คำประกอบรูปภาพ', + border: 'ขนาดขอบรูป', + btnUpload: 'อัพโหลดไฟล์ไปเก็บไว้ที่เครื่องแม่ข่าย (เซิร์ฟเวอร์)', + button2Img: 'Do you want to transform the selected image button on a simple image?', // MISSING + hSpace: 'ระยะแนวนอน', + img2Button: 'Do you want to transform the selected image on a image button?', // MISSING + infoTab: 'ข้อมูลของรูปภาพ', + linkTab: 'ลิ้งค์', + lockRatio: 'กำหนดอัตราส่วน กว้าง-สูง แบบคงที่', + menu: 'คุณสมบัติของ รูปภาพ', + resetSize: 'กำหนดรูปเท่าขนาดจริง', + title: 'คุณสมบัติของ รูปภาพ', + titleButton: 'คุณสมบัติของ ปุ่มแบบรูปภาพ', + upload: 'อัพโหลดไฟล์', + urlMissing: 'Image source URL is missing.', // MISSING + vSpace: 'ระยะแนวตั้ง', + validateBorder: 'Border must be a whole number.', // MISSING + validateHSpace: 'HSpace must be a whole number.', // MISSING + validateVSpace: 'VSpace must be a whole number.' // MISSING +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/tr.js b/resource/res/libs/ckeditor/plugins/image/lang/tr.js new file mode 100644 index 00000000..062c027e --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/tr.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'tr', { + alt: 'Alternatif Yazı', + border: 'Kenar', + btnUpload: 'Sunucuya Yolla', + button2Img: 'Seçili resim butonunu basit resime çevirmek istermisiniz?', + hSpace: 'Yatay Boşluk', + img2Button: 'Seçili olan resimi, resimli butona çevirmek istermisiniz?', + infoTab: 'Resim Bilgisi', + linkTab: 'Köprü', + lockRatio: 'Oranı Kilitle', + menu: 'Resim Özellikleri', + resetSize: 'Boyutu Başa Döndür', + title: 'Resim Özellikleri', + titleButton: 'Resimli Düğme Özellikleri', + upload: 'Karşıya Yükle', + urlMissing: 'Resmin URL kaynağı eksiktir.', + vSpace: 'Dikey Boşluk', + validateBorder: 'Çerçeve tam sayı olmalıdır.', + validateHSpace: 'HSpace tam sayı olmalıdır.', + validateVSpace: 'VSpace tam sayı olmalıdır.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/tt.js b/resource/res/libs/ckeditor/plugins/image/lang/tt.js new file mode 100644 index 00000000..e934f8c7 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/tt.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'tt', { + alt: 'Альтернатив текст', + border: 'Чик', + btnUpload: 'Серверга җибәрү', + button2Img: 'Do you want to transform the selected image button on a simple image?', // MISSING + hSpace: 'Горизонталь ара', + img2Button: 'Do you want to transform the selected image on a image button?', // MISSING + infoTab: 'Рәсем тасвирламасы', + linkTab: 'Сылталама', + lockRatio: 'Lock Ratio', // MISSING + menu: 'Рәсем үзлекләре', + resetSize: 'Баштагы зурлык', + title: 'Рәсем үзлекләре', + titleButton: 'Рәсемле төймə үзлекләре', + upload: 'Йөкләү', + urlMissing: 'Image source URL is missing.', // MISSING + vSpace: 'Вертикаль ара', + validateBorder: 'Чик киңлеге сан булырга тиеш.', + validateHSpace: 'Горизонталь ара бөтен сан булырга тиеш.', + validateVSpace: 'Вертикаль ара бөтен сан булырга тиеш.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/ug.js b/resource/res/libs/ckeditor/plugins/image/lang/ug.js new file mode 100644 index 00000000..23d90f35 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/ug.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'ug', { + alt: 'تېكىست ئالماشتۇر', + border: 'گىرۋەك چوڭلۇقى', + btnUpload: 'مۇلازىمېتىرغا يۈكلە', + button2Img: 'نۆۋەتتىكى توپچىنى سۈرەتكە ئۆزگەرتەمسىز؟', + hSpace: 'توغرىسىغا ئارىلىقى', + img2Button: 'نۆۋەتتىكى سۈرەتنى توپچىغا ئۆزگەرتەمسىز؟', + infoTab: 'سۈرەت', + linkTab: 'ئۇلانما', + lockRatio: 'نىسبەتنى قۇلۇپلا', + menu: 'سۈرەت خاسلىقى', + resetSize: 'ئەسلى چوڭلۇق', + title: 'سۈرەت خاسلىقى', + titleButton: 'سۈرەت دائىرە خاسلىقى', + upload: 'يۈكلە', + urlMissing: 'سۈرەتنىڭ ئەسلى ھۆججەت ئادرېسى كەم', + vSpace: 'بويىغا ئارىلىقى', + validateBorder: 'گىرۋەك چوڭلۇقى چوقۇم سان بولىدۇ', + validateHSpace: 'توغرىسىغا ئارىلىق چوقۇم پۈتۈن سان بولىدۇ', + validateVSpace: 'بويىغا ئارىلىق چوقۇم پۈتۈن سان بولىدۇ' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/uk.js b/resource/res/libs/ckeditor/plugins/image/lang/uk.js new file mode 100644 index 00000000..0c4649d7 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/uk.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'uk', { + alt: 'Альтернативний текст', + border: 'Рамка', + btnUpload: 'Надіслати на сервер', + button2Img: 'Бажаєте перетворити обрану кнопку-зображення на просте зображення?', + hSpace: 'Гориз. відступ', + img2Button: 'Бажаєте перетворити обране зображення на кнопку-зображення?', + infoTab: 'Інформація про зображення', + linkTab: 'Посилання', + lockRatio: 'Зберегти пропорції', + menu: 'Властивості зображення', + resetSize: 'Очистити поля розмірів', + title: 'Властивості зображення', + titleButton: 'Властивості кнопки із зображенням', + upload: 'Надіслати', + urlMissing: 'Вкажіть URL зображення.', + vSpace: 'Верт. відступ', + validateBorder: 'Ширина рамки повинна бути цілим числом.', + validateHSpace: 'Гориз. відступ повинен бути цілим числом.', + validateVSpace: 'Верт. відступ повинен бути цілим числом.' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/vi.js b/resource/res/libs/ckeditor/plugins/image/lang/vi.js new file mode 100644 index 00000000..57f8c6fa --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/vi.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'vi', { + alt: 'Chú thích ảnh', + border: 'Đường viền', + btnUpload: 'Tải lên máy chủ', + button2Img: 'Bạn có muốn chuyển nút bấm bằng ảnh được chọn thành ảnh?', + hSpace: 'Khoảng đệm ngang', + img2Button: 'Bạn có muốn chuyển đổi ảnh được chọn thành nút bấm bằng ảnh?', + infoTab: 'Thông tin của ảnh', + linkTab: 'Tab liên kết', + lockRatio: 'Giữ nguyên tỷ lệ', + menu: 'Thuộc tính của ảnh', + resetSize: 'Kích thước gốc', + title: 'Thuộc tính của ảnh', + titleButton: 'Thuộc tính nút của ảnh', + upload: 'Tải lên', + urlMissing: 'Thiếu đường dẫn hình ảnh', + vSpace: 'Khoảng đệm dọc', + validateBorder: 'Chiều rộng của đường viền phải là một số nguyên dương', + validateHSpace: 'Khoảng đệm ngang phải là một số nguyên dương', + validateVSpace: 'Khoảng đệm dọc phải là một số nguyên dương' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/zh-cn.js b/resource/res/libs/ckeditor/plugins/image/lang/zh-cn.js new file mode 100644 index 00000000..88878e3c --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/zh-cn.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'zh-cn', { + alt: '替换文本', + border: '边框大小', + btnUpload: '上传到服务器', + button2Img: '确定要把当前图像按钮转换为普通图像吗?', + hSpace: '水平间距', + img2Button: '确定要把当前图像改变为图像按钮吗?', + infoTab: '图像信息', + linkTab: '链接', + lockRatio: '锁定比例', + menu: '图像属性', + resetSize: '原始尺寸', + title: '图像属性', + titleButton: '图像域属性', + upload: '上传', + urlMissing: '缺少图像源文件地址', + vSpace: '垂直间距', + validateBorder: '边框大小必须为整数格式', + validateHSpace: '水平间距必须为整数格式', + validateVSpace: '垂直间距必须为整数格式' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/lang/zh.js b/resource/res/libs/ckeditor/plugins/image/lang/zh.js new file mode 100644 index 00000000..08d5e6ad --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/lang/zh.js @@ -0,0 +1,25 @@ +/* +Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'image', 'zh', { + alt: '替代文字', + border: '框線', + btnUpload: '傳送到伺服器', + button2Img: '請問您確定要將「圖片按鈕」轉換成「圖片」嗎?', + hSpace: 'HSpace', + img2Button: '請問您確定要將「圖片」轉換成「圖片按鈕」嗎?', + infoTab: '影像資訊', + linkTab: '連結', + lockRatio: '固定比例', + menu: '影像屬性', + resetSize: '重設大小', + title: '影像屬性', + titleButton: '影像按鈕屬性', + upload: '上傳', + urlMissing: '遺失圖片來源之 URL ', + vSpace: 'VSpace', + validateBorder: '框線必須是整數。', + validateHSpace: 'HSpace 必須是整數。', + validateVSpace: 'VSpace 必須是整數。' +} ); diff --git a/resource/res/libs/ckeditor/plugins/image/plugin.js b/resource/res/libs/ckeditor/plugins/image/plugin.js new file mode 100644 index 00000000..8766e4d6 --- /dev/null +++ b/resource/res/libs/ckeditor/plugins/image/plugin.js @@ -0,0 +1,184 @@ +/** + * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license + */ + +/** + * @fileOverview The Image plugin. + */ + +( function() { + + CKEDITOR.plugins.add( 'image', { + requires: 'dialog', + // jscs:disable maximumLineLength + lang: 'af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% + // jscs:enable maximumLineLength + icons: 'image', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + init: function( editor ) { + var pluginName = 'image'; + + // Abort when Easyimage or Image2 are to be loaded since this plugins + // share the same functionality (#1791). + if ( editor.plugins.detectConflict( pluginName, [ 'easyimage', 'image2' ] ) ) { + return; + } + + // Register the dialog. + CKEDITOR.dialog.add( pluginName, this.path + 'dialogs/image.js' ); + + var allowed = 'img[alt,!src]{border-style,border-width,float,height,margin,margin-bottom,margin-left,margin-right,margin-top,width}', + required = 'img[alt,src]'; + + if ( CKEDITOR.dialog.isTabEnabled( editor, pluginName, 'advanced' ) ) + allowed = 'img[alt,dir,id,lang,longdesc,!src,title]{*}(*)'; + + // Register the command. + editor.addCommand( pluginName, new CKEDITOR.dialogCommand( pluginName, { + allowedContent: allowed, + requiredContent: required, + contentTransformations: [ + [ 'img{width}: sizeToStyle', 'img[width]: sizeToAttribute' ], + [ 'img{float}: alignmentToStyle', 'img[align]: alignmentToAttribute' ] + ] + } ) ); + + // Register the toolbar button. + editor.ui.addButton && editor.ui.addButton( 'Image', { + label: editor.lang.common.image, + command: pluginName, + toolbar: 'insert,10' + } ); + + editor.on( 'doubleclick', function( evt ) { + var element = evt.data.element; + + if ( element.is( 'img' ) && !element.data( 'cke-realelement' ) && !element.isReadOnly() ) + evt.data.dialog = 'image'; + } ); + + // If the "menu" plugin is loaded, register the menu items. + if ( editor.addMenuItems ) { + editor.addMenuItems( { + image: { + label: editor.lang.image.menu, + command: 'image', + group: 'image' + } + } ); + } + + // If the "contextmenu" plugin is loaded, register the listeners. + if ( editor.contextMenu ) { + editor.contextMenu.addListener( function( element ) { + if ( getSelectedImage( editor, element ) ) + return { image: CKEDITOR.TRISTATE_OFF }; + } ); + } + }, + afterInit: function( editor ) { + // Abort when Image2 is to be loaded since both plugins + // share the same button, command, etc. names (https://dev.ckeditor.com/ticket/11222). + if ( editor.plugins.image2 ) + return; + + // Customize the behavior of the alignment commands. (https://dev.ckeditor.com/ticket/7430) + setupAlignCommand( 'left' ); + setupAlignCommand( 'right' ); + setupAlignCommand( 'center' ); + setupAlignCommand( 'block' ); + + function setupAlignCommand( value ) { + var command = editor.getCommand( 'justify' + value ); + if ( command ) { + if ( value == 'left' || value == 'right' ) { + command.on( 'exec', function( evt ) { + var img = getSelectedImage( editor ), + align; + if ( img ) { + align = getImageAlignment( img ); + if ( align == value ) { + img.removeStyle( 'float' ); + + // Remove "align" attribute when necessary. + if ( value == getImageAlignment( img ) ) + img.removeAttribute( 'align' ); + } else { + img.setStyle( 'float', value ); + } + + evt.cancel(); + } + } ); + } + + command.on( 'refresh', function( evt ) { + var img = getSelectedImage( editor ), + align; + if ( img ) { + align = getImageAlignment( img ); + + this.setState( + ( align == value ) ? CKEDITOR.TRISTATE_ON : ( value == 'right' || value == 'left' ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED ); + + evt.cancel(); + } + } ); + } + } + } + } ); + + function getSelectedImage( editor, element ) { + if ( !element ) { + var sel = editor.getSelection(); + element = sel.getSelectedElement(); + } + + if ( element && element.is( 'img' ) && !element.data( 'cke-realelement' ) && !element.isReadOnly() ) + return element; + } + + function getImageAlignment( element ) { + var align = element.getStyle( 'float' ); + + if ( align == 'inherit' || align == 'none' ) + align = 0; + + if ( !align ) + align = element.getAttribute( 'align' ); + + return align; + } + +} )(); + +/** + * Determines whether dimension inputs should be automatically filled when the image URL changes in the Image plugin dialog window. + * + * config.image_prefillDimensions = false; + * + * @since 4.5 + * @cfg {Boolean} [image_prefillDimensions=true] + * @member CKEDITOR.config + */ + +/** + * Whether to remove links when emptying the link URL field in the Image dialog window. + * + * config.image_removeLinkByEmptyURL = false; + * + * @cfg {Boolean} [image_removeLinkByEmptyURL=true] + * @member CKEDITOR.config + */ +CKEDITOR.config.image_removeLinkByEmptyURL = true; + +/** + * Padding text to set off the image in the preview area. + * + * config.image_previewText = CKEDITOR.tools.repeat( '___ ', 100 ); + * + * @cfg {String} [image_previewText='Lorem ipsum dolor...' (placeholder text)] + * @member CKEDITOR.config + */ diff --git a/resource/res/templates/admin/add_question.html b/resource/res/templates/admin/add_question.html index 817b0dba..28a47c8d 100644 --- a/resource/res/templates/admin/add_question.html +++ b/resource/res/templates/admin/add_question.html @@ -13,27 +13,44 @@
- Hỗ trợ nhập công thức bằng LaTeX +
+
+ Thêm ảnh + +
+
+ + +
+ Ảnh JPG,PNG nhỏ hơn 2mb +
+
- Nhập Câu Hỏi: + Nhập Câu Hỏi (Hỗ trợ nhập bằng LaTeX):
- Đáp Án A: + Đáp Án A:
- Đáp Án B: + Đáp Án B:
- Đáp Án C: + Đáp Án C:
- Đáp Án D: + Đáp Án D:

@@ -80,7 +97,7 @@ Hỗ trợ nhập công thức bằng LaTeX
Lưu Ý:
1, Không sửa file mẫu tránh gây lỗi khi nhập dữ liệu.

- 2, Hiện tại chưa hỗ trợ thêm nội dung hình ảnh, âm thanh,... vào câu hỏi. + 2, Nếu nội dung câu hỏi hoặc đáp án có sử dụng ảnh, vui lòng sử dụng chức năng thêm từng câu để đạt hiểu quả tốt nhất.
@@ -112,23 +129,23 @@ \ No newline at end of file diff --git a/resource/res/templates/admin/edit_question.php b/resource/res/templates/admin/edit_question.php index af40edd3..ee15402e 100644 --- a/resource/res/templates/admin/edit_question.php +++ b/resource/res/templates/admin/edit_question.php @@ -7,6 +7,24 @@
+
+
+ Thêm ảnh + +
+
+ + +
+ Ảnh JPG,PNG nhỏ hơn 2mb +
+
Nội Dung Câu Hỏi:
@@ -119,19 +137,19 @@ diff --git a/resource/res/templates/admin/head_left.php b/resource/res/templates/admin/head_left.php index a680cf42..317a72a0 100755 --- a/resource/res/templates/admin/head_left.php +++ b/resource/res/templates/admin/head_left.php @@ -31,7 +31,7 @@