Просмотр исходного кода

编辑器增加插入mp4视频链接

tags/6.0.2
tianya 3 лет назад
Родитель
Сommit
50344b2270
26 измененных файлов: 967 добавлений и 266 удалений
  1. +7
    -6
      dedecms
  2. +1
    -1
      src/dede/css/indexbody.css
  3. +1
    -1
      src/dede/templets/index_body.htm
  4. +113
    -144
      src/include/common.inc.php
  5. +65
    -101
      src/include/inc/inc_fun_funAdmin.php
  6. +13
    -13
      src/static/ckeditor/config.js
  7. +259
    -0
      src/static/ckeditor/plugins/html5video/dialogs/html5video.js
  8. Двоичные данные
      src/static/ckeditor/plugins/html5video/icons/html5video.png
  9. +20
    -0
      src/static/ckeditor/plugins/html5video/lang/bg.js
  10. +20
    -0
      src/static/ckeditor/plugins/html5video/lang/ca.js
  11. +17
    -0
      src/static/ckeditor/plugins/html5video/lang/de.js
  12. +20
    -0
      src/static/ckeditor/plugins/html5video/lang/en.js
  13. +18
    -0
      src/static/ckeditor/plugins/html5video/lang/es.js
  14. +17
    -0
      src/static/ckeditor/plugins/html5video/lang/eu.js
  15. +18
    -0
      src/static/ckeditor/plugins/html5video/lang/fa.js
  16. +17
    -0
      src/static/ckeditor/plugins/html5video/lang/fr.js
  17. +18
    -0
      src/static/ckeditor/plugins/html5video/lang/he.js
  18. +20
    -0
      src/static/ckeditor/plugins/html5video/lang/ko.js
  19. +18
    -0
      src/static/ckeditor/plugins/html5video/lang/pl.js
  20. +18
    -0
      src/static/ckeditor/plugins/html5video/lang/pt-br.js
  21. +18
    -0
      src/static/ckeditor/plugins/html5video/lang/pt.js
  22. +21
    -0
      src/static/ckeditor/plugins/html5video/lang/ru.js
  23. +17
    -0
      src/static/ckeditor/plugins/html5video/lang/uk.js
  24. +17
    -0
      src/static/ckeditor/plugins/html5video/lang/uz.js
  25. +18
    -0
      src/static/ckeditor/plugins/html5video/lang/zh-cn.js
  26. +196
    -0
      src/static/ckeditor/plugins/html5video/plugin.js

+ 7
- 6
dedecms Просмотреть файл

@@ -5,14 +5,15 @@
*
* @version 2019年6月5日 tianya $
* @package DedeCMS.Command
* @copyright Copyright (c) 2007 - 2020, DesDev, Inc.
* @copyright Copyright (c) 2020, DedeBIZ.COM
* @license https://www.dedebiz.com/license
* @link https://www.dedebiz.com
*/
// 切换工作目录到./src
$workDir = dirname(__FILE__)."/src";
$workDir = dirname(__FILE__) . "/src";
chdir($workDir);

if (substr(php_sapi_name(), 0, 3) === 'cgi')
{
if (substr(php_sapi_name(), 0, 3) === 'cgi') {
die("DedeCMS:needs php-cli to run\n\n");
}

@@ -24,5 +25,5 @@ if (count($argv) > 1 && $argv[1] == "serv") {
}
echo "Start Dev Server For DedeCMS\n\r";
echo "Open http://localhost:8088\n\r";
passthru(PHP_BINARY . ' -S localhost:8088 -t'.escapeshellarg('./'));
}
passthru(PHP_BINARY . ' -S localhost:8088 -t' . escapeshellarg('./'));
}

+ 1
- 1
src/dede/css/indexbody.css Просмотреть файл

@@ -16,7 +16,7 @@ td {
left: 455px;
top: 150px;
width: 360px;
height: 180px;
height: 200px;
z-index: 2;
background-color: #FFFFFF;
border: 1px solid #889D8F;


+ 1
- 1
src/dede/templets/index_body.htm Просмотреть файл

@@ -56,7 +56,7 @@
<body>
<div class="container-fluid">
<div class="mt-3 mb-3">
欢迎使用专业的PHP网站管理系统,轻松建站的首选利器 -- <?php echo $cfg_softname; ?>
欢迎使用国内流行的内容管理系统(CMS)多端全媒体解决方案 -- <?php echo $cfg_softname; ?>
</div>
<div class="row">
<div id="__testEvn" class="col-md-12"></div>


+ 113
- 144
src/include/common.inc.php Просмотреть файл

@@ -1,4 +1,5 @@
<?php

/**
* @version $Id: common.inc.php 3 17:44 2010-11-23 tianya $
* @package DedeCMS.Libraries
@@ -10,8 +11,7 @@
// 生产环境使用production,如果采用dev模式,会有一些php的报错信息提示,便于开发调试
define('DEDE_ENVIRONMENT', 'production');

if ( DEDE_ENVIRONMENT == 'production' )
{
if (DEDE_ENVIRONMENT == 'production') {
error_reporting(E_ALL || ~E_NOTICE);
} else {
error_reporting(E_ALL);
@@ -19,11 +19,11 @@ if ( DEDE_ENVIRONMENT == 'production' )

define('DEBUG_LEVEL', FALSE); // 如果设置为TRUE则会打印执行SQL的时间和标签加载时间方便调试

define('DEDEINC', str_replace("\\", '/', dirname(__FILE__) ) );
define('DEDEROOT', str_replace("\\", '/', substr(DEDEINC,0,-8) ) );
define('DEDEDATA', DEDEROOT.'/data');
define('DEDEMEMBER', DEDEROOT.'/member');
define('DEDETEMPLATE', DEDEROOT.'/templets');
define('DEDEINC', str_replace("\\", '/', dirname(__FILE__)));
define('DEDEROOT', str_replace("\\", '/', substr(DEDEINC, 0, -8)));
define('DEDEDATA', DEDEROOT . '/data');
define('DEDEMEMBER', DEDEROOT . '/member');
define('DEDETEMPLATE', DEDEROOT . '/templets');

// ------------------------------------------------------------------------
define('DEDEMODEL', './model');
@@ -44,27 +44,25 @@ PwIDAQAB
-----END PUBLIC KEY-----'); // DedeBIZ系统公钥
define('DEDECDNURL', 'https://cdn.dedebiz.com'); // 默认静态资源地址

if (version_compare(PHP_VERSION, '5.3.0', '<') && function_exists("get_magic_quotes_gpc"))
{
if (version_compare(PHP_VERSION, '5.3.0', '<') && function_exists("get_magic_quotes_gpc")) {
set_magic_quotes_runtime(0);
}

if (version_compare(PHP_VERSION, '5.4.0', '>='))
{
if (!function_exists('session_register'))
{
if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
if (!function_exists('session_register')) {
function session_register()
{
$args = func_get_args();
foreach ($args as $key){
$_SESSION[$key]=$GLOBALS[$key];
foreach ($args as $key) {
$_SESSION[$key] = $GLOBALS[$key];
}
}
function session_is_registered($key)
{
return isset($_SESSION[$key]);
}
function session_unregister($key){
function session_unregister($key)
{
unset($_SESSION[$key]);
}
}
@@ -72,22 +70,17 @@ if (version_compare(PHP_VERSION, '5.4.0', '>='))

//是否启用mb_substr替换cn_substr来提高效率
$cfg_is_mb = $cfg_is_iconv = FALSE;
if(function_exists('mb_substr')) $cfg_is_mb = TRUE;
if(function_exists('iconv_substr')) $cfg_is_iconv = TRUE;
if (function_exists('mb_substr')) $cfg_is_mb = TRUE;
if (function_exists('iconv_substr')) $cfg_is_iconv = TRUE;

function _RunMagicQuotes(&$svar)
{
if(function_exists("get_magic_quotes_gpc") && !@get_magic_quotes_gpc())
{
if( is_array($svar) )
{
foreach($svar as $_k => $_v) $svar[$_k] = _RunMagicQuotes($_v);
}
else
{
if( strlen($svar)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE|_SESSION)#',$svar) )
{
exit('Request var not allow!');
if (function_exists("get_magic_quotes_gpc") && !@get_magic_quotes_gpc()) {
if (is_array($svar)) {
foreach ($svar as $_k => $_v) $svar[$_k] = _RunMagicQuotes($_v);
} else {
if (strlen($svar) > 0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE|_SESSION)#', $svar)) {
exit('Request var not allow!');
}
$svar = addslashes($svar);
}
@@ -95,20 +88,18 @@ function _RunMagicQuotes(&$svar)
return $svar;
}

if (!defined('DEDEREQUEST'))
{
if (!defined('DEDEREQUEST')) {
//检查和注册外部提交的变量 (2011.8.10 修改登录时相关过滤)
function CheckRequest(&$val) {
function CheckRequest(&$val)
{
if (is_array($val)) {
foreach ($val as $_k=>$_v) {
if($_k == 'nvarname') continue;
foreach ($val as $_k => $_v) {
if ($_k == 'nvarname') continue;
CheckRequest($_k);
CheckRequest($val[$_k]);
}
} else
{
if( strlen($val)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE|_SESSION)#',$val) )
{
} else {
if (strlen($val) > 0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE|_SESSION)#', $val)) {
exit('Request var not allow!');
}
}
@@ -116,33 +107,29 @@ if (!defined('DEDEREQUEST'))

//var_dump($_REQUEST);exit;
CheckRequest($_REQUEST);
CheckRequest($_COOKIE);
CheckRequest($_COOKIE);

foreach(Array('_GET','_POST','_COOKIE') as $_request)
{
foreach($$_request as $_k => $_v)
{
if($_k == 'nvarname') ${$_k} = $_v;
else ${$_k} = _RunMagicQuotes($_v);
}
foreach (array('_GET', '_POST', '_COOKIE') as $_request) {
foreach ($$_request as $_k => $_v) {
if ($_k == 'nvarname') ${$_k} = $_v;
else ${$_k} = _RunMagicQuotes($_v);
}
}
}

//系统相关变量检测
if(!isset($needFilter))
{
if (!isset($needFilter)) {
$needFilter = false;
}
$registerGlobals = @ini_get("register_globals");
$isUrlOpen = @ini_get("allow_url_fopen");
$isSafeMode = @ini_get("safe_mode");
if( preg_match('/windows/i', @getenv('OS')) )
{
if (preg_match('/windows/i', @getenv('OS'))) {
$isSafeMode = false;
}

//系统配置参数
require_once(DEDEDATA."/config.cache.inc.php");
require_once(DEDEDATA . "/config.cache.inc.php");

//Session保存路径
$sessSaveHandler = @ini_get("session.save_handler");
@@ -150,112 +137,103 @@ if ($sessSaveHandler !== "files") {
@ini_set("session.save_handler", "files");
}

$enkey = substr(md5(substr($cfg_cookie_encode,0,5)),0,10);
$sessSavePath = DEDEDATA."/sessions_{$enkey}";
if ( !is_dir($sessSavePath) ) mkdir($sessSavePath);
$enkey = substr(md5(substr($cfg_cookie_encode, 0, 5)), 0, 10);
$sessSavePath = DEDEDATA . "/sessions_{$enkey}";
if (!is_dir($sessSavePath)) mkdir($sessSavePath);

if(is_writeable($sessSavePath) && is_readable($sessSavePath))
{
if (is_writeable($sessSavePath) && is_readable($sessSavePath)) {
session_save_path($sessSavePath);
}

//转换上传的文件相关的变量及安全处理、并引用前台通用的上传函数
if($_FILES)
{
require_once(DEDEINC.'/uploadsafe.inc.php');
if ($_FILES) {
require_once(DEDEINC . '/uploadsafe.inc.php');
}

//数据库配置文件
require_once(DEDEDATA.'/common.inc.php');
require_once(DEDEDATA . '/common.inc.php');

if ( !isset($cfg_dbtype) )
{
if (!isset($cfg_dbtype)) {
$cfg_dbtype = 'mysql';
}

//载入系统验证安全配置
if(file_exists(DEDEDATA.'/safe/inc_safe_config.php'))
{
require_once(DEDEDATA.'/safe/inc_safe_config.php');
if(!empty($safe_faqs)) $safefaqs = unserialize($safe_faqs);
if (file_exists(DEDEDATA . '/safe/inc_safe_config.php')) {
require_once(DEDEDATA . '/safe/inc_safe_config.php');
if (!empty($safe_faqs)) $safefaqs = unserialize($safe_faqs);
}

//Session跨域设置
if(!empty($cfg_domain_cookie))
{
@session_set_cookie_params(0,'/',$cfg_domain_cookie);
if (!empty($cfg_domain_cookie)) {
@session_set_cookie_params(0, '/', $cfg_domain_cookie);
}

//php5.1版本以上时区设置
//由于这个函数对于是php5.1以下版本并无意义,因此实际上的时间调用,应该用MyDate函数调用
if(PHP_VERSION > '5.1')
{
if (PHP_VERSION > '5.1') {
$time51 = $cfg_cli_time * -1;
@date_default_timezone_set('Etc/GMT'.$time51);
@date_default_timezone_set('Etc/GMT' . $time51);
}
$cfg_isUrlOpen = @ini_get("allow_url_fopen");

//用户访问的网站host
$cfg_clihost = 'http://'.$_SERVER['HTTP_HOST'];
$cfg_clihost = 'http://' . $_SERVER['HTTP_HOST'];

//站点根目录
$cfg_basedir = preg_replace('#'.$cfg_cmspath.'\/include$#i', '', DEDEINC);
if($cfg_multi_site == 'Y')
{
$cfg_basedir = preg_replace('#' . $cfg_cmspath . '\/include$#i', '', DEDEINC);
if ($cfg_multi_site == 'Y') {
$cfg_mainsite = $cfg_basehost;
}
else
{
} else {
$cfg_mainsite = '';
}

//模板的存放目录
$cfg_templets_dir = $cfg_cmspath.'/templets';
$cfg_templeturl = $cfg_mainsite.$cfg_templets_dir;
$cfg_templets_skin = empty($cfg_df_style)? $cfg_mainsite.$cfg_templets_dir."/default" : $cfg_mainsite.$cfg_templets_dir."/$cfg_df_style";
$cfg_templets_dir = $cfg_cmspath . '/templets';
$cfg_templeturl = $cfg_mainsite . $cfg_templets_dir;
$cfg_templets_skin = empty($cfg_df_style) ? $cfg_mainsite . $cfg_templets_dir . "/default" : $cfg_mainsite . $cfg_templets_dir . "/$cfg_df_style";

//cms安装目录的网址
$cfg_cmsurl = $cfg_mainsite.$cfg_cmspath;
$cfg_cmsurl = $cfg_mainsite . $cfg_cmspath;

//插件目录,这个目录是用于存放计数器、投票、评论等程序的必要动态程序
$cfg_plus_dir = $cfg_cmspath.'/plus';
$cfg_phpurl = $cfg_mainsite.$cfg_plus_dir;
$cfg_plus_dir = $cfg_cmspath . '/plus';
$cfg_phpurl = $cfg_mainsite . $cfg_plus_dir;

$cfg_static_dir = $cfg_cmspath.'/static';
$cfg_staticurl = $cfg_mainsite.$cfg_static_dir;
$cfg_static_dir = $cfg_cmspath . '/static';
$cfg_staticurl = $cfg_mainsite . $cfg_static_dir;

$cfg_mobile_dir = $cfg_cmspath.'/m';
$cfg_mobileurl = $cfg_mainsite.$cfg_mobile_dir;
$cfg_mobile_dir = $cfg_cmspath . '/m';
$cfg_mobileurl = $cfg_mainsite . $cfg_mobile_dir;

$cfg_data_dir = $cfg_cmspath.'/data';
$cfg_dataurl = $cfg_mainsite.$cfg_data_dir;
$cfg_data_dir = $cfg_cmspath . '/data';
$cfg_dataurl = $cfg_mainsite . $cfg_data_dir;

//会员目录
$cfg_member_dir = $cfg_cmspath.'/member';
$cfg_memberurl = $cfg_mainsite.$cfg_member_dir;
$cfg_member_dir = $cfg_cmspath . '/member';
$cfg_memberurl = $cfg_mainsite . $cfg_member_dir;

//专题列表的存放路径
$cfg_special = $cfg_cmspath.'/special';
$cfg_specialurl = $cfg_mainsite.$cfg_special;
$cfg_special = $cfg_cmspath . '/special';
$cfg_specialurl = $cfg_mainsite . $cfg_special;

//附件目录
$cfg_medias_dir = $cfg_cmspath.$cfg_medias_dir;
$cfg_mediasurl = $cfg_mainsite.$cfg_medias_dir;
$cfg_medias_dir = $cfg_cmspath . $cfg_medias_dir;
$cfg_mediasurl = $cfg_mainsite . $cfg_medias_dir;

//上传的普通图片的路径,建议按默认
$cfg_image_dir = $cfg_medias_dir.'/allimg';
$cfg_image_dir = $cfg_medias_dir . '/allimg';

//上传的缩略图
$ddcfg_image_dir = $cfg_medias_dir.'/litimg';
$ddcfg_image_dir = $cfg_medias_dir . '/litimg';

//用户投稿图片存放目录
$cfg_user_dir = $cfg_medias_dir.'/userup';
$cfg_user_dir = $cfg_medias_dir . '/userup';

//上传的软件目录
$cfg_soft_dir = $cfg_medias_dir.'/soft';
$cfg_soft_dir = $cfg_medias_dir . '/soft';

//上传的多媒体文件目录
$cfg_other_medias = $cfg_medias_dir.'/media';
$cfg_other_medias = $cfg_medias_dir . '/media';

//软件摘要信息,****请不要删除本项**** 否则系统无法正确接收系统漏洞或升级信息
$cfg_version = 'V6_UTF8';
@@ -264,20 +242,17 @@ $cfg_soft_lang = 'utf-8';
$cfg_soft_public = 'base';

$cfg_softname = '织梦内容管理系统';
$cfg_soft_enname = 'DedeCMS';
$cfg_soft_enname = 'DedeCMSV6';
$cfg_soft_devteam = 'DedeBIZ';

//文档的默认命名规则
$art_shortname = $cfg_df_ext = '.html';
$cfg_df_namerule = '{typedir}/{Y}/{M}{D}/{aid}'.$cfg_df_ext;
$cfg_df_namerule = '{typedir}/{Y}/{M}{D}/{aid}' . $cfg_df_ext;

//新建目录的权限,如果你使用别的属性,本程不保证程序能顺利在Linux或Unix系统运行
if(isset($cfg_ftp_mkdir) && $cfg_ftp_mkdir=='Y')
{
if (isset($cfg_ftp_mkdir) && $cfg_ftp_mkdir == 'Y') {
$cfg_dir_purview = '0755';
}
else
{
} else {
$cfg_dir_purview = 0755;
}

@@ -290,17 +265,15 @@ $_sys_globals['typeid'] = 0;
$_sys_globals['typename'] = '';
$_sys_globals['aid'] = 0;

if(empty($cfg_addon_savetype))
{
if (empty($cfg_addon_savetype)) {
$cfg_addon_savetype = 'Ymd';
}
if($cfg_sendmail_bysmtp=='Y' && !empty($cfg_smtp_usermail))
{
if ($cfg_sendmail_bysmtp == 'Y' && !empty($cfg_smtp_usermail)) {
$cfg_adminemail = $cfg_smtp_usermail;
}

// DedeBIZ商业化组件
require_once(DEDEINC.'/dedebiz.class.php');
require_once(DEDEINC . '/dedebiz.class.php');

//对全局分页传递参数进行过滤
if (isset($GLOBALS['PageNo'])) {
@@ -312,60 +285,56 @@ if (isset($GLOBALS['TotalResult'])) {

// ------------------------------------------------------------------------
// 设定缓存配置信息
if ($cfg_memcache_enable == 'Y')
{
if ($cfg_memcache_enable == 'Y') {
$cache_helper_config = array();
$cache_helper_config['memcache']['is_mc_enable'] = $GLOBALS["cfg_memcache_enable"];
$cache_helper_config['memcache']['mc'] = array (
$cache_helper_config['memcache']['mc'] = array(
'default' => $GLOBALS["cfg_memcache_mc_defa"],
'other' => $GLOBALS["cfg_memcache_mc_oth"]
);
$cache_helper_config['memcache']['mc_cache_time'] = $GLOBALS["cfg_puccache_time"];
}

if(!isset($cfg_NotPrintHead)) {
if (!isset($cfg_NotPrintHead)) {
header("Content-Type: text/html; charset={$cfg_soft_lang}");
}

//自动加载类库处理
if (version_compare(PHP_VERSION, '7.2.0', '>='))
{
require_once(DEDEINC.'/autoload7.inc.php');
if (version_compare(PHP_VERSION, '7.2.0', '>=')) {
require_once(DEDEINC . '/autoload7.inc.php');
} else {
require_once(DEDEINC.'/autoload.inc.php');
require_once(DEDEINC . '/autoload.inc.php');
}

$cfg_biz_helpUrl = DEDEBIZURL."/help";
$cfg_biz_gitUrl = DEDEBIZURL."/git";
$cfg_biz_helpUrl = DEDEBIZURL . "/help";
$cfg_biz_gitUrl = DEDEBIZURL . "/git";
$cfg_biz_dedebizUrl = DEDEBIZURL;

//引入数据库类
if ( $GLOBALS['cfg_dbtype'] =='mysql' || $GLOBALS['cfg_dbtype'] =='mysqli' )
{
require_once(DEDEINC.'/dedesqli.class.php');
if ($GLOBALS['cfg_dbtype'] == 'mysql' || $GLOBALS['cfg_dbtype'] == 'mysqli') {
require_once(DEDEINC . '/dedesqli.class.php');
} else {
require_once(DEDEINC.'/dedesqlite.class.php');
require_once(DEDEINC . '/dedesqlite.class.php');
}

//全局常用函数
require_once(DEDEINC.'/common.func.php');
require_once(DEDEINC . '/common.func.php');

//载入小助手配置,并对其进行默认初始化
$cfg_helper_autoload = array
(
'charset', /* 编码小助手 */
'channelunit',/* 模型单元小助手 */
'string', /* 字符串小助手 */
'time', /* 日期小助手 */
'file', /* 文件小助手 */
'util', /* 单元小助手 */
'validate', /* 数据验证小助手 */
'filter', /* 过滤器小助手 */
'cookie', /* cookies小助手 */
'debug', /* 调试小助手 */
'archive', /* 文档小助手 */
'upload', /* 上传小助手 */
'extend', /* 扩展小助手 */
$cfg_helper_autoload = array(
'charset', /* 编码小助手 */
'channelunit',/* 模型单元小助手 */
'string', /* 字符串小助手 */
'time', /* 日期小助手 */
'file', /* 文件小助手 */
'util', /* 单元小助手 */
'validate', /* 数据验证小助手 */
'filter', /* 过滤器小助手 */
'cookie', /* cookies小助手 */
'debug', /* 调试小助手 */
'archive', /* 文档小助手 */
'upload', /* 上传小助手 */
'extend', /* 扩展小助手 */
);
// 初始化小助手
helper($cfg_helper_autoload);

+ 65
- 101
src/include/inc/inc_fun_funAdmin.php Просмотреть файл

@@ -1,4 +1,4 @@
<?php if(!defined('DEDEINC')) exit('dedecms');
<?php if (!defined('DEDEINC')) exit('dedecms');
/**
* 管理员后台基本函数
*
@@ -18,10 +18,10 @@
* @param int $isclose 解析后是否释放资源
* @return string
*/
function SpGetPinyin($str, $ishead=0, $isclose=1)
function SpGetPinyin($str, $ishead = 0, $isclose = 1)
{
global $pinyins;
global $cfg_bizcore_appid,$cfg_bizcore_key,$cfg_bizcore_hostname,$cfg_bizcore_port;
global $cfg_bizcore_appid, $cfg_bizcore_key, $cfg_bizcore_hostname, $cfg_bizcore_port;
global $cfg_soft_lang;
$restr = '';
if (!empty($cfg_bizcore_appid) && !empty($cfg_bizcore_key)) {
@@ -31,57 +31,43 @@ function SpGetPinyin($str, $ishead=0, $isclose=1)
$client = new DedeBizClient($cfg_bizcore_hostname, $cfg_bizcore_port);
$client->appid = $cfg_bizcore_appid;
$client->key = $cfg_bizcore_key;
$data = $client->Pinyin($str,"");
$data = $client->Pinyin($str, "");
$restr = $data->data;
$client->Close();
} else {
$str = trim($str);
$slen = strlen($str);
if($slen < 2)
{
if ($slen < 2) {
return $str;
}
if(@count($pinyins) == 0)
{
$fp = fopen(DEDEINC.'/data/pinyin.dat', 'r');
while(!feof($fp))
{
if (@count($pinyins) == 0) {
$fp = fopen(DEDEINC . '/data/pinyin.dat', 'r');
while (!feof($fp)) {
$line = trim(fgets($fp));
$pinyins[$line[0].$line[1]] = substr($line, 3, strlen($line)-3);
$pinyins[$line[0] . $line[1]] = substr($line, 3, strlen($line) - 3);
}
fclose($fp);
}
for($i=0; $i<$slen; $i++)
{
if(ord($str[$i])>0x80)
{
$c = $str[$i].$str[$i+1];
for ($i = 0; $i < $slen; $i++) {
if (ord($str[$i]) > 0x80) {
$c = $str[$i] . $str[$i + 1];
$i++;
if(isset($pinyins[$c]))
{
if($ishead==0)
{
if (isset($pinyins[$c])) {
if ($ishead == 0) {
$restr .= $pinyins[$c];
}
else
{
} else {
$restr .= $pinyins[$c][0];
}
}else
{
} else {
$restr .= "_";
}
}else if( preg_match("/[a-z0-9]/i", $str[$i]) )
{
} else if (preg_match("/[a-z0-9]/i", $str[$i])) {
$restr .= $str[$i];
}
else
{
} else {
$restr .= "_";
}
}
if($isclose==0)
{
if ($isclose == 0) {
unset($pinyins);
}
}
@@ -99,37 +85,29 @@ function SpGetPinyin($str, $ishead=0, $isclose=1)
*/
function SpCreateDir($spath)
{
global $cfg_dir_purview,$cfg_basedir,$cfg_ftp_mkdir,$isSafeMode;
if($spath=='')
{
global $cfg_dir_purview, $cfg_basedir, $cfg_ftp_mkdir, $isSafeMode;
if ($spath == '') {
return true;
}
$flink = false;
$truepath = $cfg_basedir;
$truepath = str_replace("\\","/",$truepath);
$spaths = explode("/",$spath);
$truepath = str_replace("\\", "/", $truepath);
$spaths = explode("/", $spath);
$spath = "";
foreach($spaths as $spath)
{
if($spath=="")
{
foreach ($spaths as $spath) {
if ($spath == "") {
continue;
}
$spath = trim($spath);
$truepath .= "/".$spath;
if(!is_dir($truepath) || !is_writeable($truepath))
{
if(!is_dir($truepath))
{
$isok = MkdirAll($truepath,$cfg_dir_purview);
}
else
{
$isok = ChmodAll($truepath,$cfg_dir_purview);
$truepath .= "/" . $spath;
if (!is_dir($truepath) || !is_writeable($truepath)) {
if (!is_dir($truepath)) {
$isok = MkdirAll($truepath, $cfg_dir_purview);
} else {
$isok = ChmodAll($truepath, $cfg_dir_purview);
}
if(!$isok)
{
echo "创建或修改目录:".$truepath." 失败!<br>";
if (!$isok) {
echo "创建或修改目录:" . $truepath . " 失败!<br>";
CloseFtp();
return false;
}
@@ -141,13 +119,13 @@ function SpCreateDir($spath)
function jsScript($js)
{
$out = "<script type=\"text/javascript\">";
$out .= "//<![CDATA[\n";
$out .= $js;
$out .= "\n//]]>";
$out .= "</script>\n";
$out = "<script type=\"text/javascript\">";
$out .= "//<![CDATA[\n";
$out .= $js;
$out .= "\n//]]>";
$out .= "</script>\n";
return $out;
return $out;
}
/**
@@ -162,45 +140,37 @@ function jsScript($js)
* @param string $isfullpage 是否全屏
* @return string
*/
function SpGetEditor($fname,$fvalue,$nheight="350",$etype="Basic",$gtype="print",$isfullpage="false",$bbcode=false)
function SpGetEditor($fname, $fvalue, $nheight = "350", $etype = "Basic", $gtype = "print", $isfullpage = "false", $bbcode = false)
{
global $cfg_ckeditor_initialized;
if(!isset($GLOBALS['cfg_html_editor']))
{
$GLOBALS['cfg_html_editor']='fck';
if (!isset($GLOBALS['cfg_html_editor'])) {
$GLOBALS['cfg_html_editor'] = 'fck';
}
if($gtype=="")
{
if ($gtype == "") {
$gtype = "print";
}
if($GLOBALS['cfg_html_editor']=='fck')
{
require_once(DEDEINC.'/FCKeditor/fckeditor.php');
if ($GLOBALS['cfg_html_editor'] == 'fck') {
require_once(DEDEINC . '/FCKeditor/fckeditor.php');
$fck = new FCKeditor($fname);
$fck->BasePath = $GLOBALS['cfg_cmspath'].'/include/FCKeditor/' ;
$fck->Width = '100%' ;
$fck->Height = $nheight ;
$fck->ToolbarSet = $etype ;
$fck->BasePath = $GLOBALS['cfg_cmspath'] . '/include/FCKeditor/';
$fck->Width = '100%';
$fck->Height = $nheight;
$fck->ToolbarSet = $etype;
$fck->Config['FullPage'] = $isfullpage;
if($GLOBALS['cfg_fck_xhtml']=='Y')
{
if ($GLOBALS['cfg_fck_xhtml'] == 'Y') {
$fck->Config['EnableXHTML'] = 'true';
$fck->Config['EnableSourceXHTML'] = 'true';
}
$fck->Value = $fvalue ;
if($gtype=="print")
{
$fck->Value = $fvalue;
if ($gtype == "print") {
$fck->Create();
}
else
{
} else {
return $fck->CreateHtml();
}
}
else if($GLOBALS['cfg_html_editor']=='ckeditor')
{
} else if ($GLOBALS['cfg_html_editor'] == 'ckeditor') {
$addConfig = "";
if (defined("DEDEADMIN")) {
// $addConfig = ",{filebrowserImageUploadUrl:'./dialog/select_images_post.php',filebrowserUploadUrl:'./dialog/select_media_post.php'}";
$addConfig = ",{filebrowserImageUploadUrl:'./dialog/select_images_post.php'}";
}
$code = <<<EOT
@@ -210,15 +180,12 @@ function SpGetEditor($fname,$fvalue,$nheight="350",$etype="Basic",$gtype="print"
var editor = CKEDITOR.replace('{$fname}'{$addConfig});
</script>
EOT;
if($gtype=="print")
{
if ($gtype == "print") {
echo $code;
}
else
{
} else {
return $code;
}
} else {
} else {
/*
// ------------------------------------------------------------------------
// 当前版本,暂时取消dedehtml编辑器的支持
@@ -249,12 +216,11 @@ EOT;
*/
function SpGetNewInfo()
{
global $cfg_version_detail,$dsql;
global $cfg_version_detail, $dsql;
$nurl = $_SERVER['HTTP_HOST'];
if( preg_match("#[a-z\-]{1,}\.[a-z]{2,}#i",$nurl) ) {
if (preg_match("#[a-z\-]{1,}\.[a-z]{2,}#i", $nurl)) {
$nurl = urlencode($nurl);
}
else {
} else {
$nurl = "test";
}
$phpv = phpversion();
@@ -263,13 +229,11 @@ function SpGetNewInfo()
$add_query = '';
$query = "SELECT COUNT(*) AS dd FROM `#@__member` ";
$row1 = $dsql->GetOne($query);
if ( $row1 ) $add_query .= "&mcount={$row1['dd']}";
if ($row1) $add_query .= "&mcount={$row1['dd']}";
$query = "SELECT COUNT(*) AS dd FROM `#@__arctiny` ";
$row2 = $dsql->GetOne($query);
if ( $row2 ) $add_query .= "&acount={$row2['dd']}";
$offUrl = DEDEBIZURL."/version?version={$cfg_version_detail}&formurl={$nurl}&phpver={$phpv}&os={$sp_os}&mysqlver={$mysql_ver}{$add_query}";
if ($row2) $add_query .= "&acount={$row2['dd']}";
$offUrl = DEDEBIZURL . "/version?version={$cfg_version_detail}&formurl={$nurl}&phpver={$phpv}&os={$sp_os}&mysqlver={$mysql_ver}{$add_query}";
return $offUrl;
}
?>

+ 13
- 13
src/static/ckeditor/config.js Просмотреть файл

@@ -3,24 +3,24 @@
* For licensing, see https://ckeditor.com/legal/ckeditor-oss-license
*/
CKEDITOR.editorConfig = function( config ) {
CKEDITOR.editorConfig = function (config) {
config.toolbarGroups = [
{ name: 'document', groups: [ 'mode', 'document', 'doctools' ] },
{ name: 'clipboard', groups: [ 'clipboard', 'undo' ] },
{ name: 'editing', groups: [ 'find', 'selection', 'spellchecker', 'editing' ] },
{ name: 'forms', groups: [ 'forms' ] },
{ name: 'document', groups: ['mode', 'document', 'doctools'] },
{ name: 'clipboard', groups: ['clipboard', 'undo'] },
{ name: 'editing', groups: ['find', 'selection', 'spellchecker', 'editing'] },
{ name: 'forms', groups: ['forms'] },
'/',
{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
{ name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi', 'paragraph' ] },
{ name: 'links', groups: [ 'links' ] },
{ name: 'insert', groups: [ 'insert' ] },
{ name: 'basicstyles', groups: ['basicstyles', 'cleanup'] },
{ name: 'paragraph', groups: ['list', 'indent', 'blocks', 'align', 'bidi', 'paragraph'] },
{ name: 'links', groups: ['links'] },
{ name: 'insert', groups: ['insert'] },
'/',
{ name: 'styles', groups: [ 'styles' ] },
{ name: 'colors', groups: [ 'colors' ] },
{ name: 'tools', groups: [ 'tools' ] }
{ name: 'styles', groups: ['styles'] },
{ name: 'colors', groups: ['colors'] },
{ name: 'tools', groups: ['tools'] }
];
config.extraPlugins = 'dedepagebreak';
config.extraPlugins = 'html5video,dedepagebreak';
config.removeButtons = 'About,ShowBlocks,Iframe,Flash,Form,Checkbox,Radio,TextField,Textarea,Select,Button,ImageButton,HiddenField';


+ 259
- 0
src/static/ckeditor/plugins/html5video/dialogs/html5video.js Просмотреть файл

@@ -0,0 +1,259 @@
CKEDITOR.dialog.add( 'html5video', function( editor ) {
return {
title: editor.lang.html5video.title,
minWidth: 500,
minHeight: 100,
contents: [ {
id: 'info',
label: editor.lang.html5video.infoLabel,
elements: [
{
type: 'vbox',
padding: 0,
children: [
{
type: 'hbox',
widths: [ '365px', '110px' ],
align: 'right',
children: [ {
type: 'text',
id: 'url',
label: editor.lang.html5video.allowed,
required: true,
validate: CKEDITOR.dialog.validate.notEmpty( editor.lang.html5video.urlMissing ),
setup: function( widget ) {
this.setValue( widget.data.src );
},
commit: function( widget ) {
widget.setData( 'src', this.getValue() );
}
},
{
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:url'
} ]
} ]
},
{
type: 'checkbox',
id: 'responsive',
label: editor.lang.html5video.responsive,
setup: function( widget ) {
this.setValue( widget.data.responsive );
},
commit: function( widget ) {
widget.setData( 'responsive', this.getValue()?'true':'' );
}
},
{
type: 'vbox',
padding: 0,
children: [{
type: 'hbox',
widths: [ '365px', '110px' ],
align: 'right',
children: [ {
type: 'text',
id: 'poster',
label: editor.lang.html5video.poster,
setup: function( widget ) {
this.setValue( widget.data.poster );
},
commit: function( widget ) {
widget.setData( 'poster', this.getValue() );
}
},
{
type: 'button',
id: 'browseposter',
// 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:{action:"Browse",target:"info:poster",url:editor.config.filebrowserImageBrowseUrl}
} ]
}]
},
{
type: 'checkbox',
id: 'controls',
label: editor.lang.html5video.controls,
setup: function (widget) {
this.setValue(widget.data.controls);
},
commit: function (widget) {
widget.setData('controls', this.getValue() ? 'true' : '');
}
},
{
type: 'hbox',
id: 'size',
children: [ {
type: 'text',
id: 'width',
label: editor.lang.common.width,
setup: function( widget ) {
if ( widget.data.width ) {
this.setValue( widget.data.width );
}
},
commit: function( widget ) {
widget.setData( 'width', this.getValue() );
}
},
{
type: 'text',
id: 'height',
label: editor.lang.common.height,
setup: function( widget ) {
if ( widget.data.height ) {
this.setValue( widget.data.height );
}
},
commit: function( widget ) {
widget.setData( 'height', this.getValue() );
}
},
]
},

{
type: 'hbox',
id: 'alignment',
children: [ {
type: 'radio',
id: 'align',
label: editor.lang.common.align,
items: [
[editor.lang.common.alignCenter, 'center'],
[editor.lang.common.alignLeft, 'left'],
[editor.lang.common.alignRight, 'right'],
[editor.lang.common.alignNone, 'none']
],
'default': 'center',
setup: function( widget ) {
if ( widget.data.align ) {
this.setValue( widget.data.align );
}
},
commit: function( widget ) {
widget.setData( 'align', this.getValue() );
}
} ]
} ]
},
{
id: 'Upload',
hidden: true,
filebrowser: 'uploadButton',
label: editor.lang.html5video.upload,
elements: [ {
type: 'file',
id: 'upload',
label: editor.lang.html5video.btnUpload,
style: 'height:40px',
size: 38
},
{
type: 'fileButton',
id: 'uploadButton',
filebrowser: 'info:url',
label: editor.lang.html5video.btnUpload,
'for': [ 'Upload', 'upload' ]
} ]
},
{
id: 'advanced',
label: editor.lang.html5video.advanced,
elements: [ {
type: 'vbox',
padding: 10,
children: [ {
type: 'hbox',
widths: ["33%", "33%", "33%"],
children: [ {
type: 'radio',
id: 'autoplay',
label: editor.lang.html5video.autoplay,
items: [
[editor.lang.html5video.yes, 'yes'],
[editor.lang.html5video.no, 'no']
],
'default': 'no',
setup: function( widget ) {
if ( widget.data.autoplay ) {
this.setValue( widget.data.autoplay );
}
},
commit: function( widget ) {
widget.setData( 'autoplay', this.getValue() );
}
},
{
type: 'radio',
id: 'loop',
label: editor.lang.html5video.loop,
items: [
[editor.lang.html5video.yes, 'yes'],
[editor.lang.html5video.no, 'no']
],
'default': 'no',
setup: function( widget ) {
if ( widget.data.loop ) {
this.setValue( widget.data.loop );
}
},
commit: function( widget ) {
widget.setData( 'loop', this.getValue() );
}
},
{
type: 'radio',
id: 'allowdownload',
label: editor.lang.html5video.allowdownload,
items: [
[editor.lang.html5video.yes, 'yes'],
[editor.lang.html5video.no, 'no']
],
'default': 'no',
setup: function( widget ) {
if ( widget.data.allowdownload ) {
this.setValue(widget.data.allowdownload);
}
},
commit: function( widget ) {
widget.setData( 'allowdownload', this.getValue() );
}
} ]
},
{
type: 'hbox',
children: [ {
type: "text",
id: 'advisorytitle',
label: editor.lang.html5video.advisorytitle,
'default': '',
setup: function( widget ) {
if ( widget.data.advisorytitle ) {
this.setValue(widget.data.advisorytitle);
}
},
commit: function( widget ) {
widget.setData( 'advisorytitle', this.getValue() );
}
} ]
} ]
} ]
} ]
};
} );

Двоичные данные
src/static/ckeditor/plugins/html5video/icons/html5video.png Просмотреть файл

До После
Ширина: 16  |  Высота: 16  |  Размер: 14KB

+ 20
- 0
src/static/ckeditor/plugins/html5video/lang/bg.js Просмотреть файл

@@ -0,0 +1,20 @@
CKEDITOR.plugins.setLang( 'html5video', 'bg', {
button: 'Вмъква HTML5 видео',
title: 'HTML5 видео',
infoLabel: 'Видео',
allowed: 'Допустими файлови разширения: MP4, WebM, Ogv',
urlMissing: 'URL адресът на източника на видео липсва.',
videoProperties: 'Свойства на видео',
upload: 'Качване',
btnUpload: 'Изпрати на сървъра',
advanced: 'Разширено',
autoplay: 'Автоматично изпълнение',
allowdownload: 'Позволено изтегляне?',
advisorytitle: 'Заглавие',
yes: 'Да',
no: 'Не',
loop: 'Циклично изпълнение',
responsive: 'Адаптивна ширина',
controls: 'Показване на контролите',
poster: 'URL миниатюра'
} );

+ 20
- 0
src/static/ckeditor/plugins/html5video/lang/ca.js Просмотреть файл

@@ -0,0 +1,20 @@
CKEDITOR.plugins.setLang( 'html5video', 'ca', {
button: "Insereix un vídeo HTML5",
title: "Vídeo HTML5",
infoLabel: "Informació del vídeo",
allowed: "Extensions d'arxius permeses: MP4, WebM, Ogv",
urlMissing: "Falta l'URL de la font de vídeo.",
videoProperties: "Propietats de vídeo",
upload: "Pujar",
btnUpload: "Envia-lo al servidor",
advanced: "Avançat",
autoplay: "Reproducció automàtica?",
allowdownload: 'Allow download?',
advisorytitle: 'Advisory title',
yes: "Sí",
no: "No",
loop: "Bucle?",
responsive: "Ample adaptatiu",
controls: "Mostra els controls",
poster: "Miniatura"
} );

+ 17
- 0
src/static/ckeditor/plugins/html5video/lang/de.js Просмотреть файл

@@ -0,0 +1,17 @@
CKEDITOR.plugins.setLang( 'html5video', 'de', {
button: 'HTML5 Video einfügen',
title: 'HTML5 Video',
infoLabel: 'Video Infos',
allowed: 'Erlaubte Dateierweiterungen: MP4, WebM, Ogv',
urlMissing: 'Sie haben keine URL zur Video-Datei angegeben.',
videoProperties: 'Video-Einstellungen',
upload: 'Hochladen',
btnUpload: 'Zum Server senden',
advanced: 'Erweitert',
autoplay: 'Autoplay?',
allowdownload: 'Allow download?',
advisorytitle: 'Advisory title',
yes: 'Ja',
no: 'Nein',
controls: 'Steuerelemente anzeigen'
} );

+ 20
- 0
src/static/ckeditor/plugins/html5video/lang/en.js Просмотреть файл

@@ -0,0 +1,20 @@
CKEDITOR.plugins.setLang( 'html5video', 'en', {
button: 'Insert HTML5 video',
title: 'HTML5 video',
infoLabel: 'Video info',
allowed: 'Allowed file extensions: MP4, WebM, Ogv',
urlMissing: 'Video source URL is missing.',
videoProperties: 'Video properties',
upload: 'Upload',
btnUpload: 'Send it to the server',
advanced: 'Advanced',
autoplay: 'Autoplay?',
allowdownload: 'Allow download?',
advisorytitle: 'Advisory title',
yes: 'Yes',
no: 'No',
loop: 'Loop?',
responsive: 'Responsive width',
controls: 'Show controls',
poster: 'Thumbnail'
} );

+ 18
- 0
src/static/ckeditor/plugins/html5video/lang/es.js Просмотреть файл

@@ -0,0 +1,18 @@
CKEDITOR.plugins.setLang( 'html5video', 'es', {
button: 'Insertar video HTML5',
title: 'Video HTML5',
infoLabel: 'Información del video',
allowed: 'Extensiones de archivo permitidas: MP4, WebM, Ogv',
urlMissing: 'La URL del video no puede estar vacía.',
videoProperties: 'Propiedades del video',
upload: 'Cargar',
btnUpload: 'Enviar al servidor',
advanced: 'Avanzado',
autoplay: '¿Reproducir automáticamente?',
allowdownload: 'Allow download?',
advisorytitle: 'Advisory title',
yes: 'Sí',
no: 'No',
responsive: '¿Responsive?',
controls: 'Mostrar controles'
} );

+ 17
- 0
src/static/ckeditor/plugins/html5video/lang/eu.js Просмотреть файл

@@ -0,0 +1,17 @@
CKEDITOR.plugins.setLang( 'html5video', 'eu', {
button: 'Txertatu HTML5 bideoa',
title: 'HTML5 bideoa',
infoLabel: 'Bideoaren informazioa',
allowed: 'Baimendutako fitxategi luzapenak: MP4, WebM, Ogv',
urlMissing: 'Bideoaren URLak ezin du hutsik egon.',
videoProperties: 'Bideoaren propietateak',
upload: 'Kargatu',
btnUpload: 'Bidali zerbitzarira',
advanced: 'Aurreratua',
autoplay: 'Automatikoki erreproduzitu?',
allowdownload: 'Allow download?',
advisorytitle: 'Advisory title',
yes: 'Bai',
no: 'Ez',
controls: 'Erakutsi kontrolak?'
} );

+ 18
- 0
src/static/ckeditor/plugins/html5video/lang/fa.js Просмотреть файл

@@ -0,0 +1,18 @@
CKEDITOR.plugins.setLang( 'html5video', 'fa', {
button: 'وارد کردن ویدیوی HTML5',
title: 'ویدیوی HTML5',
infoLabel: 'اطلاعات ویدیو',
allowed: 'پسوندهای مجاز فایل: MP4, WebM, Ogv',
urlMissing: 'URL منبع ویدیو پیدا نشد.',
videoProperties: 'خواهص ویدیو',
upload: 'بارگذاری',
btnUpload: 'ارسال به سرور',
advanced: 'پیشرفته',
autoplay: 'پخش خودکار؟',
allowdownload: 'Allow download?',
advisorytitle: 'Advisory title',
yes: 'بله',
no: 'خیر',
responsive: 'عرض واکنشگرا',
controls: 'نمایش کنترل؟'
} );

+ 17
- 0
src/static/ckeditor/plugins/html5video/lang/fr.js Просмотреть файл

@@ -0,0 +1,17 @@
CKEDITOR.plugins.setLang( 'html5video', 'fr', {
button: 'Insérer un lecteur video HTML5',
title: 'HTML5 video',
infoLabel: 'Informations video',
allowed: 'Extensions de fichiers autorisées: MP4, WebM, Ogv',
urlMissing: 'URL de la source video manquante. Veuillez la renseigner.',
videoProperties: 'Propriétés Video',
upload: 'Télécharger',
btnUpload: 'Envoyer vers le serveur',
advanced: 'Avancé',
autoplay: 'Jouer automatiquement ?',
allowdownload: 'Allow download?',
advisorytitle: 'Advisory title',
yes: 'Oui',
no: 'Non',
controls: 'Afficher les contrôles ?'
} );

+ 18
- 0
src/static/ckeditor/plugins/html5video/lang/he.js Просмотреть файл

@@ -0,0 +1,18 @@

CKEDITOR.plugins.setLang('html5video', 'he', {
button: 'הוסף וידאו HTML5',
title: 'וידאו HTML5',
infoLabel: 'מידע וידאו',
allowed: 'סוגי קבצים מורשים: MP4, WebM, Ogv',
urlMissing: 'כתובת הוידאו חסרה',
videoProperties: 'מאפייני וידאו',
upload: 'העלה',
btnUpload: 'שלח לשרת',
advanced: 'מתקדם',
autoplay: 'ניגון אוטומטי?',
allowdownload: 'Allow download?',
advisorytitle: 'Advisory title',
yes: 'כן',
no: 'לא',
responsive: 'רוחב רספונסיבי'
});

+ 20
- 0
src/static/ckeditor/plugins/html5video/lang/ko.js Просмотреть файл

@@ -0,0 +1,20 @@
CKEDITOR.plugins.setLang( 'html5video', 'ko', {
button: 'HTML5 비디오 추가하기',
title: 'HTML5 비디오',
infoLabel: '비디오 정보',
allowed: '허용된 파일 확장자들: MP4, WebM, Ogv',
urlMissing: '비디오 Url이 없습니다.',
videoProperties: '비디오 속성',
upload: '업로드',
btnUpload: '서버로 전송',
advanced: '고급',
autoplay: '자동재생?',
allowdownload: 'Allow download?',
advisorytitle: 'Advisory title',
yes: '네',
no: '아니오',
loop: '무한반복?',
responsive: '반응형 너비',
controls: '컨트롤 보여주기',
poster: '썸네일'
} );

+ 18
- 0
src/static/ckeditor/plugins/html5video/lang/pl.js Просмотреть файл

@@ -0,0 +1,18 @@
CKEDITOR.plugins.setLang( 'html5video', 'pl', {
button: 'Wstaw HTML5 video',
title: 'HTML5 video',
infoLabel: 'Informacje',
allowed: 'Dozwolone typy plików: MP4, WebM, Ogv',
urlMissing: 'Nie znaleziono URL do pliku video.',
videoProperties: 'Właściwości',
upload: 'Wrzuć plik',
btnUpload: 'Wyślij na serwer',
advanced: 'Zaawansowane',
autoplay: 'Autoodtwarzanie?',
allowdownload: 'Allow download?',
advisorytitle: 'Advisory title',
yes: 'Tak',
no: 'Nie',
responsive: 'Szerokość responsywna',
controls: 'Pokaż kontrolki'
} );

+ 18
- 0
src/static/ckeditor/plugins/html5video/lang/pt-br.js Просмотреть файл

@@ -0,0 +1,18 @@
CKEDITOR.plugins.setLang( 'html5video', 'pt-br', {
button: 'Inserir vídeo HTML5',
title: 'HTML5 video',
infoLabel: 'Informações do Vídeo',
allowed: 'Extensões permitidas: MP4, WebM, Ogv',
urlMissing: 'O URL do vídeo está faltando.',
videoProperties: 'Propriedades do vídeo',
upload: 'Upload',
btnUpload: 'Enviar para o servidor',
advanced: 'Avançado',
autoplay: 'Autoplay?',
allowdownload: 'Allow download?',
advisorytitle: 'Advisory title',
yes: 'Sim',
no: 'Não',
responsive: 'Largura responsiva',
controls: 'Exibir controles'
} );

+ 18
- 0
src/static/ckeditor/plugins/html5video/lang/pt.js Просмотреть файл

@@ -0,0 +1,18 @@
CKEDITOR.plugins.setLang( 'html5video', 'pt', {
button: 'Inserir vídeo HTML5',
title: 'HTML5 video',
infoLabel: 'Informações do Vídeo',
allowed: 'Extensões permitidas: MP4, WebM, Ogv',
urlMissing: 'O URL do vídeo está faltando.',
videoProperties: 'Propriedades do vídeo',
upload: 'Upload',
btnUpload: 'Enviar para o servidor',
advanced: 'Avançado',
autoplay: 'Autoplay?',
allowdownload: 'Allow download?',
advisorytitle: 'Advisory title',
yes: 'Sim',
no: 'Não',
responsive: 'Largura responsiva',
controls: 'Exibir controles'
} );

+ 21
- 0
src/static/ckeditor/plugins/html5video/lang/ru.js Просмотреть файл

@@ -0,0 +1,21 @@
CKEDITOR.plugins.setLang( 'html5video', 'ru', {
button: 'Вставить HTML5 видео',
title: 'HTML5 видео',
infoLabel: 'Видео',
allowed: 'Допустимые расширения файлов: MP4, WebM, Ogv',
urlMissing: 'Не выбран источник видео',
videoProperties: 'Свойства видео',
upload: 'Загрузить',
btnUpload: 'Загрузить на сервер',
advanced: 'Дополнительно',
autoplay: 'Автовоспроизведение',
allowdownload: 'Разрешить загрузку',
advisorytitle: 'Заголовок',
yes: 'Да',
no: 'Нет',
responsive: 'Адаптивная ширина',
controls: 'Показать элементы управления',
loop: 'Зациклить',
poster: 'Постер',
advisorytitle: 'Пояснительный текст'
} );

+ 17
- 0
src/static/ckeditor/plugins/html5video/lang/uk.js Просмотреть файл

@@ -0,0 +1,17 @@
CKEDITOR.plugins.setLang( 'html5video', 'uk', {
button: 'Вставити HTML5 відео',
title: 'HTML5 відео',
infoLabel: 'Інформація',
allowed: 'Допустимі розширення файлів: MP4, WebM, Ogv',
urlMissing: 'Не обрано джерела відео',
videoProperties: 'Властивості відео',
upload: 'Відвантажити',
btnUpload: 'Відвантажити на сервер',
advanced: 'Додатково',
autoplay: 'Автовідтворення?',
allowdownload: 'Allow download?',
advisorytitle: 'Advisory title',
yes: 'Так',
no: 'Ні',
controls: 'Показати елементи керування?'
} );

+ 17
- 0
src/static/ckeditor/plugins/html5video/lang/uz.js Просмотреть файл

@@ -0,0 +1,17 @@
CKEDITOR.plugins.setLang( 'html5video', 'uz', {
button: 'HTML5 video qo‘shing',
title: 'HTML5 video',
infoLabel: 'Video ma\'lumot',
allowed: 'Ruxsat etilgan kengaytmalar: MP4, WebM, Ogv',
urlMissing: 'Video\'ning URL manbasi topilmadi.',
videoProperties: 'Video xususiyatlari',
upload: 'Yuklash',
btnUpload: 'Serverga jo‘natish',
advanced: 'Kengaytrilgan',
autoplay: 'Avtoijro?',
allowdownload: 'Allow download?',
advisorytitle: 'Advisory title',
yes: 'Ha',
no: 'Yo‘q',
controls: 'Tekshiruvlarni ko‘rsatish'
} );

+ 18
- 0
src/static/ckeditor/plugins/html5video/lang/zh-cn.js Просмотреть файл

@@ -0,0 +1,18 @@
CKEDITOR.plugins.setLang( 'html5video', 'zh-cn', {
button: '发布HTML5视频',
title: 'HTML5视频',
infoLabel: '视频信息',
allowed: '支持格式: MP4, WebM, Ogv',
urlMissing: '视频url',
videoProperties: '视频属性',
upload: '上传视频',
btnUpload: '上传',
advanced: '高级',
autoplay: '自动播放',
allowdownload: 'Allow download?',
advisorytitle: 'Advisory title',
yes: '是',
no: '否',
responsive: '自动宽度',
controls: '显示控件?'
} );

+ 196
- 0
src/static/ckeditor/plugins/html5video/plugin.js Просмотреть файл

@@ -0,0 +1,196 @@
CKEDITOR.plugins.add( 'html5video', {
requires: 'widget',
lang: 'bg,ca,de,en,eu,es,ru,uk,fr,ko,pt,pt-br,pl',
icons: 'html5video',
init: function( editor ) {
editor.widgets.add( 'html5video', {
button: editor.lang.html5video.button,
template: '<div class="ckeditor-html5-video"></div>',
/*
* Allowed content rules (http://docs.ckeditor.com/#!/guide/dev_allowed_content_rules):
* - div-s with text-align,float,margin-left,margin-right inline style rules and required ckeditor-html5-video class.
* - video tags with src, controls, width and height attributes.
*/
allowedContent: 'div[data-responsive](!ckeditor-html5-video){text-align,float,margin-left,margin-right}; video[src,poster,controls,autoplay,width, height,loop]{max-width,height};',
requiredContent: 'div(ckeditor-html5-video); video[src];',
upcast: function( element ) {
return element.name === 'div' && element.hasClass( 'ckeditor-html5-video' );
},
dialog: 'html5video',
init: function() {
var src = '';
var autoplay = '';
var loop = '';
var controls = '';
var align = this.element.getStyle( 'text-align' );

var width = '';
var height = '';
var poster = '';

// If there's a child (the video element)
if ( this.element.getChild( 0 ) ) {
// get it's attributes.
src = this.element.getChild( 0 ).getAttribute( 'src' );
width = this.element.getChild( 0 ).getAttribute( 'width' );
height = this.element.getChild( 0 ).getAttribute( 'height' );
autoplay = this.element.getChild(0).getAttribute('autoplay');
allowdownload = !this.element.getChild( 0 ).getAttribute( 'controlslist' );
loop = this.element.getChild( 0 ).getAttribute( 'loop' );
advisorytitle = this.element.getChild( 0 ).getAttribute( 'title' );
controls = this.element.getChild(0).getAttribute('controls');
responsive = this.element.getAttribute( 'data-responsive' );
poster = this.element.getChild( 0 ).getAttribute( 'poster' );
}

if ( src ) {
this.setData( 'src', src );

if ( align ) {
this.setData( 'align', align );
} else {
this.setData( 'align', 'none' );
}

if ( width ) {
this.setData( 'width', width );
}

if ( height ) {
this.setData( 'height', height );
}

if ( autoplay ) {
this.setData( 'autoplay', 'yes' );
}

if ( allowdownload ) {
this.setData( 'allowdownload', 'yes' );
}

if ( loop ) {
this.setData( 'loop', 'yes' );
}
if ( advisorytitle ) {
this.setData( 'advisorytitle', advisorytitle );
}
if ( responsive ) {
this.setData( 'responsive', responsive );
}

if (controls) {
this.setData('controls', controls);
}

if ( poster ) {
this.setData('poster', poster);
}
}
},
data: function() {
// If there is an video source
if ( this.data.src ) {
// and there isn't a child (the video element)
if ( !this.element.getChild( 0 ) ) {
// Create a new <video> element.
var videoElement = new CKEDITOR.dom.element( 'video' );
// Set the controls attribute.
if (this.data.controls) {
videoElement.setAttribute('controls', 'controls');
}
// Append it to the container of the plugin.
this.element.append( videoElement );
}
this.element.getChild( 0 ).setAttribute( 'src', this.data.src );
if (this.data.width) this.element.getChild( 0 ).setAttribute( 'width', this.data.width );
if (this.data.height) this.element.getChild( 0 ).setAttribute( 'height', this.data.height );

if ( this.data.responsive ) {
this.element.setAttribute("data-responsive", this.data.responsive);
this.element.getChild( 0 ).setStyle( 'max-width', '100%' );
this.element.getChild( 0 ).setStyle( 'height', 'auto' );
} else {
this.element.removeAttribute("data-responsive");
this.element.getChild( 0 ).removeStyle( 'max-width' );
this.element.getChild( 0 ).removeStyle( 'height' );
}

if (this.data.poster) this.element.getChild( 0 ).setAttribute('poster', this.data.poster);
}

this.element.removeStyle( 'float' );
this.element.removeStyle( 'margin-left' );
this.element.removeStyle( 'margin-right' );

if ( this.data.align === 'none' ) {
this.element.removeStyle( 'text-align' );
} else {
this.element.setStyle( 'text-align', this.data.align );
}

if ( this.data.align === 'left' ) {
this.element.setStyle( 'float', this.data.align );
this.element.setStyle( 'margin-right', '10px' );
} else if ( this.data.align === 'right' ) {
this.element.setStyle( 'float', this.data.align );
this.element.setStyle( 'margin-left', '10px' );
}

if ( this.element.getChild( 0 ) ) {
if ( this.data.autoplay === 'yes' ) {
this.element.getChild( 0 ).setAttribute( 'autoplay', 'autoplay' );
} else {
this.element.getChild( 0 ).removeAttribute( 'autoplay' );
}

if ( this.data.loop === 'yes' ) {
this.element.getChild( 0 ).setAttribute( 'loop', 'loop' );
} else {
this.element.getChild( 0 ).removeAttribute( 'loop' );
}

if ( this.data.allowdownload === 'yes' ) {
this.element.getChild( 0 ).removeAttribute( 'controlslist' );
} else {
this.element.getChild( 0 ).setAttribute( 'controlslist', 'nodownload' );
}

if ( this.data.advisorytitle ) {
this.element.getChild( 0 ).setAttribute( 'title', this.data.advisorytitle );
} else {
this.element.getChild( 0 ).removeAttribute( 'title' );
}

if (this.data.controls) {
this.element.getChild(0).setAttribute('controls', 'controls');
} else {
this.element.getChild(0).removeAttribute('controls');
}
}
}
} );

if ( editor.contextMenu ) {
editor.addMenuGroup( 'html5videoGroup' );
editor.addMenuItem( 'html5videoPropertiesItem', {
label: editor.lang.html5video.videoProperties,
icon: 'html5video',
command: 'html5video',
group: 'html5videoGroup'
});

editor.contextMenu.addListener( function( element ) {
if ( element &&
element.getChild( 0 ) &&
element.getChild( 0 ).hasClass &&
element.getChild( 0 ).hasClass( 'ckeditor-html5-video' ) ) {
return { html5videoPropertiesItem: CKEDITOR.TRISTATE_OFF };
}
});
}

CKEDITOR.dialog.add( 'html5video', this.path + 'dialogs/html5video.js' );
}
} );

Загрузка…
Отмена
Сохранить