* updated tinymce to the latest (4.7.0) version
* added option to uninstall plugin * added option to require specified myaac or php version for plugins * added links loaded from database to admin panel - for future plugins * added few characters hooks * fixed some kathrine template js bug when shop is disabled
@ -26,7 +26,7 @@
|
|||||||
<a href="<?php echo BASE_URL; ?>" target="_blank">Preview</a> <span class="separator">|</span> <a href="?action=logout">Log out<img src="<?php echo BASE_URL; ?>images/icons/logout.png" alt="" title="Log out" /></a>
|
<a href="<?php echo BASE_URL; ?>" target="_blank">Preview</a> <span class="separator">|</span> <a href="?action=logout">Log out<img src="<?php echo BASE_URL; ?>images/icons/logout.png" alt="" title="Log out" /></a>
|
||||||
</div>
|
</div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<h1><?php echo $config['lua']['serverName'] . ' - ' . $title; ?> - Admin Panel</h1>
|
<h1><?php echo $config['lua']['serverName'] . (isset($title) ? ' - ' . $title : ''); ?> - Admin Panel</h1>
|
||||||
</div>
|
</div>
|
||||||
<div id="wrapper">
|
<div id="wrapper">
|
||||||
<?php
|
<?php
|
||||||
@ -78,6 +78,19 @@
|
|||||||
}
|
}
|
||||||
echo '</li>';
|
echo '</li>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$query = $db->query('SELECT `name`, `page`, `flags` FROM `' . TABLE_PREFIX . 'admin_menu` ORDER BY `ordering`');
|
||||||
|
$menu_db = $query->fetchAll();
|
||||||
|
foreach($menu_db as $item) {
|
||||||
|
if($item['flags'] == 0 || hasFlag($item['flags'])) {
|
||||||
|
echo '<li><h3>
|
||||||
|
<a href="?p=' . $item['page'] . '">';
|
||||||
|
if($page == $item['page']) echo '<u>';
|
||||||
|
echo $item['name'];
|
||||||
|
if($page == $item['page']) echo '</u>';
|
||||||
|
echo '</a></h3></li>';
|
||||||
|
}
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
@ -28,7 +28,7 @@ session_start();
|
|||||||
|
|
||||||
define('MYAAC', true);
|
define('MYAAC', true);
|
||||||
define('MYAAC_VERSION', '0.4.3');
|
define('MYAAC_VERSION', '0.4.3');
|
||||||
define('DATABASE_VERSION', 9);
|
define('DATABASE_VERSION', 10);
|
||||||
define('TABLE_PREFIX', 'myaac_');
|
define('TABLE_PREFIX', 'myaac_');
|
||||||
define('START_TIME', microtime(true));
|
define('START_TIME', microtime(true));
|
||||||
define('MYAAC_OS', (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') ? 'WINDOWS' : (strtoupper(PHP_OS) == 'DARWIN' ? 'MAC' : 'LINUX'));
|
define('MYAAC_OS', (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') ? 'WINDOWS' : (strtoupper(PHP_OS) == 'DARWIN' ? 'MAC' : 'LINUX'));
|
||||||
|
@ -51,7 +51,7 @@ $uri = str_replace('index.php/', '', $uri);
|
|||||||
$uri = str_replace('?', '', $uri);
|
$uri = str_replace('?', '', $uri);
|
||||||
$uri = strtolower($uri);
|
$uri = strtolower($uri);
|
||||||
|
|
||||||
if(empty($uri)) {
|
if(empty($uri) || isset($_REQUEST['template'])) {
|
||||||
$_REQUEST['p'] = 'news';
|
$_REQUEST['p'] = 'news';
|
||||||
}
|
}
|
||||||
else if(file_exists(SYSTEM . 'pages/' . $uri . '.php')) {
|
else if(file_exists(SYSTEM . 'pages/' . $uri . '.php')) {
|
||||||
@ -75,6 +75,8 @@ else {
|
|||||||
'/^account\/character\/comment\/[A-Za-z]+\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'changecomment', 'name' => '$3'),
|
'/^account\/character\/comment\/[A-Za-z]+\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'changecomment', 'name' => '$3'),
|
||||||
'/^account\/character\/comment\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'changecomment'),
|
'/^account\/character\/comment\/?$/' => array('subtopic' => 'accountmanagement', 'action' => 'changecomment'),
|
||||||
'/^characters\/[A-Za-z0-9-_%+\']+$/' => array('subtopic' => 'characters', 'name' => '$1'),
|
'/^characters\/[A-Za-z0-9-_%+\']+$/' => array('subtopic' => 'characters', 'name' => '$1'),
|
||||||
|
'/^news\/add\/?$/' => array('subtopic' => 'news', 'action' => 'add'),
|
||||||
|
'/^news\/edit\/?$/' => array('subtopic' => 'news', 'action' => 'edit'),
|
||||||
'/^news\/archive\/?$/' => array('subtopic' => 'newsarchive'),
|
'/^news\/archive\/?$/' => array('subtopic' => 'newsarchive'),
|
||||||
'/^news\/archive\/[0-9]+\/?$/' => array('subtopic' => 'newsarchive', 'id' => '$2'),
|
'/^news\/archive\/[0-9]+\/?$/' => array('subtopic' => 'newsarchive', 'id' => '$2'),
|
||||||
'/^guilds\/[A-Za-z0-9-_%+\']+$/' => array('subtopic' => 'guilds', 'action' => 'show', 'guild' => '$1'),
|
'/^guilds\/[A-Za-z0-9-_%+\']+$/' => array('subtopic' => 'guilds', 'action' => 'show', 'guild' => '$1'),
|
||||||
|
@ -1,11 +1,22 @@
|
|||||||
CREATE TABLE `myaac_account_actions`
|
CREATE TABLE `myaac_account_actions`
|
||||||
(
|
(
|
||||||
`account_id` INT(11) NOT NULL,
|
`account_id` INT(11) NOT NULL,
|
||||||
`ip` INT(11) NOT NULL DEFAULT 0,
|
`ip` INT(11) NOT NULL DEFAULT 0,
|
||||||
`ipv6` BINARY(16) NOT NULL DEFAULT 0,
|
`ipv6` BINARY(16) NOT NULL DEFAULT 0,
|
||||||
`date` INT(11) NOT NULL DEFAULT 0,
|
`date` INT(11) NOT NULL DEFAULT 0,
|
||||||
`action` VARCHAR(255) NOT NULL DEFAULT '',
|
`action` VARCHAR(255) NOT NULL DEFAULT '',
|
||||||
KEY (`account_id`)
|
KEY (`account_id`)
|
||||||
|
) ENGINE = MyISAM;
|
||||||
|
|
||||||
|
CREATE TABLE `myaac_admin_menu`
|
||||||
|
(
|
||||||
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`name` VARCHAR(255) NOT NULL DEFAULT '',
|
||||||
|
`page` VARCHAR(255) NOT NULL DEFAULT '',
|
||||||
|
`ordering` INT(11) NOT NULL DEFAULT 0,
|
||||||
|
`flags` INT(11) NOT NULL DEFAULT 0,
|
||||||
|
`enabled` INT(1) NOT NULL DEFAULT 1,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE = MyISAM;
|
) ENGINE = MyISAM;
|
||||||
|
|
||||||
CREATE TABLE `myaac_bugtracker`
|
CREATE TABLE `myaac_bugtracker`
|
||||||
@ -20,7 +31,7 @@ CREATE TABLE `myaac_bugtracker`
|
|||||||
`who` INT(11) NOT NULL DEFAULT 0,
|
`who` INT(11) NOT NULL DEFAULT 0,
|
||||||
`uid` INT(11) NOT NULL AUTO_INCREMENT,
|
`uid` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
`tag` INT(11) NOT NULL DEFAULT 0,
|
`tag` INT(11) NOT NULL DEFAULT 0,
|
||||||
PRIMARY KEY (`uid`)
|
PRIMARY KEY (`uid`)
|
||||||
) ENGINE = MyISAM;
|
) ENGINE = MyISAM;
|
||||||
|
|
||||||
CREATE TABLE `myaac_changelog`
|
CREATE TABLE `myaac_changelog`
|
||||||
@ -112,6 +123,7 @@ CREATE TABLE `myaac_hooks`
|
|||||||
`name` VARCHAR(30) NOT NULL DEFAULT '',
|
`name` VARCHAR(30) NOT NULL DEFAULT '',
|
||||||
`type` INT(2) NOT NULL DEFAULT 0,
|
`type` INT(2) NOT NULL DEFAULT 0,
|
||||||
`file` VARCHAR(100) NOT NULL,
|
`file` VARCHAR(100) NOT NULL,
|
||||||
|
`ordering` INT(11) NOT NULL DEFAULT 0,
|
||||||
`enabled` INT(1) NOT NULL DEFAULT 1,
|
`enabled` INT(1) NOT NULL DEFAULT 1,
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE = MyISAM;
|
) ENGINE = MyISAM;
|
||||||
|
@ -1,11 +1,20 @@
|
|||||||
{
|
{
|
||||||
"name": "Example Plugin",
|
"name": "Example Plugin",
|
||||||
"description": "This is just an example of a Plugin for MyAAC.",
|
"description": "This is just an example of a Plugin for MyAAC.",
|
||||||
"version": "1.0",
|
"version": "1.0",
|
||||||
"author": "nobody",
|
"author": "nobody",
|
||||||
"contact": "nobody@example.org",
|
"contact": "nobody@example.org",
|
||||||
"install": "plugins/example/install.php",
|
"require": {
|
||||||
"hooks": {
|
"myaac": "0.4.3",
|
||||||
|
"php": "5.2.0"
|
||||||
|
},
|
||||||
|
"install": "plugins/example/install.php",
|
||||||
|
"uninstall": [
|
||||||
|
"plugins/example.json",
|
||||||
|
"plugins/example/install.php",
|
||||||
|
"plugins/example/before.php"
|
||||||
|
],
|
||||||
|
"hooks": {
|
||||||
"Example Hook": {
|
"Example Hook": {
|
||||||
"type": "BEFORE_PAGE",
|
"type": "BEFORE_PAGE",
|
||||||
"file": "plugins/example/before.php"
|
"file": "plugins/example/before.php"
|
||||||
|
@ -16,8 +16,14 @@ define('HOOK_AFTER_PAGE', 3);
|
|||||||
define('HOOK_FINISH', 4);
|
define('HOOK_FINISH', 4);
|
||||||
define('HOOK_TIBIACOM_ARTICLE', 5);
|
define('HOOK_TIBIACOM_ARTICLE', 5);
|
||||||
define('HOOK_TIBIACOM_BORDER_3', 6);
|
define('HOOK_TIBIACOM_BORDER_3', 6);
|
||||||
|
define('HOOK_CHARACTERS_BEFORE_INFORMATIONS', 7);
|
||||||
|
define('HOOK_CHARACTERS_AFTER_INFORMATIONS', 8);
|
||||||
|
define('HOOK_CHARACTERS_BEFORE_SIGNATURE', 9);
|
||||||
|
define('HOOK_CHARACTERS_AFTER_SIGNATURE', 10);
|
||||||
|
define('HOOK_CHARACTERS_AFTER_ACCOUNT', 11);
|
||||||
|
define('HOOK_CHARACTERS_AFTER_CHARACTERS', 12);
|
||||||
define('HOOK_FIRST', HOOK_STARTUP);
|
define('HOOK_FIRST', HOOK_STARTUP);
|
||||||
define('HOOK_LAST', HOOK_TIBIACOM_BORDER_3);
|
define('HOOK_LAST', HOOK_CHARACTERS_AFTER_CHARACTERS);
|
||||||
|
|
||||||
$hook_types = array(
|
$hook_types = array(
|
||||||
'STARTUP' => HOOK_STARTUP,
|
'STARTUP' => HOOK_STARTUP,
|
||||||
@ -25,7 +31,13 @@ $hook_types = array(
|
|||||||
'AFTER_PAGE' => HOOK_AFTER_PAGE,
|
'AFTER_PAGE' => HOOK_AFTER_PAGE,
|
||||||
'FINISH' => HOOK_FINISH,
|
'FINISH' => HOOK_FINISH,
|
||||||
'TIBIACOM_ARTICLE' => HOOK_TIBIACOM_ARTICLE,
|
'TIBIACOM_ARTICLE' => HOOK_TIBIACOM_ARTICLE,
|
||||||
'TIBIACOM_BORDER_3' => HOOK_TIBIACOM_BORDER_3
|
'TIBIACOM_BORDER_3' => HOOK_TIBIACOM_BORDER_3,
|
||||||
|
'CHARACTERS_BEFORE_INFORMATIONS' => HOOK_CHARACTERS_BEFORE_INFORMATIONS,
|
||||||
|
'CHARACTERS_AFTER_INFORMATIONS' => HOOK_CHARACTERS_AFTER_INFORMATIONS,
|
||||||
|
'CHARACTERS_BEFORE_SIGNATURE' => HOOK_CHARACTERS_BEFORE_SIGNATURE,
|
||||||
|
'CHARACTERS_AFTER_SIGNATURE' => HOOK_CHARACTERS_AFTER_SIGNATURE,
|
||||||
|
'CHARACTERS_AFTER_ACCOUNT' => HOOK_CHARACTERS_AFTER_ACCOUNT,
|
||||||
|
'CHARACTERS_AFTER_CHARACTERS' => HOOK_CHARACTERS_AFTER_CHARACTERS
|
||||||
);
|
);
|
||||||
|
|
||||||
class Hook
|
class Hook
|
||||||
@ -84,7 +96,7 @@ class Hooks
|
|||||||
public function load()
|
public function load()
|
||||||
{
|
{
|
||||||
global $db;
|
global $db;
|
||||||
$hooks = $db->query('SELECT `name`, `type`, `file` FROM `' . TABLE_PREFIX . 'hooks` WHERE `enabled` = 1;');
|
$hooks = $db->query('SELECT `name`, `type`, `file` FROM `' . TABLE_PREFIX . 'hooks` WHERE `enabled` = 1 ORDER BY `ordering`;');
|
||||||
foreach($hooks as $hook)
|
foreach($hooks as $hook)
|
||||||
$this->register($hook['name'], $hook['type'], $hook['file']);
|
$this->register($hook['name'], $hook['type'], $hook['file']);
|
||||||
}
|
}
|
||||||
|
@ -51,6 +51,12 @@ $function = new Twig_SimpleFunction('getLink', function ($s) {
|
|||||||
});
|
});
|
||||||
$twig->addFunction($function);
|
$twig->addFunction($function);
|
||||||
|
|
||||||
|
$function = new Twig_SimpleFunction('hook', function ($hook) {
|
||||||
|
global $hooks;
|
||||||
|
$hooks->trigger($hook);
|
||||||
|
});
|
||||||
|
$twig->addFunction($function);
|
||||||
|
|
||||||
// trim values we receive
|
// trim values we receive
|
||||||
if(isset($_POST))
|
if(isset($_POST))
|
||||||
{
|
{
|
||||||
|
17
system/migrations/10.php
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
if(!fieldExist('ordering', TABLE_PREFIX . 'hooks'))
|
||||||
|
$db->query("ALTER TABLE `" . TABLE_PREFIX . "hooks` ADD `ordering` INT(11) NOT NULL DEFAULT 0 AFTER `file`;");
|
||||||
|
|
||||||
|
if(!tableExist(TABLE_PREFIX . 'admin_menu'))
|
||||||
|
$db->query("
|
||||||
|
CREATE TABLE `myaac_admin_menu`
|
||||||
|
(
|
||||||
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`name` VARCHAR(255) NOT NULL DEFAULT '',
|
||||||
|
`page` VARCHAR(255) NOT NULL DEFAULT '',
|
||||||
|
`ordering` INT(11) NOT NULL DEFAULT 0,
|
||||||
|
`flags` INT(11) NOT NULL DEFAULT 0,
|
||||||
|
`enabled` INT(1) NOT NULL DEFAULT 1,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE = MyISAM;");
|
||||||
|
?>
|
@ -15,8 +15,55 @@ require(SYSTEM . 'hooks.php');
|
|||||||
|
|
||||||
echo $twig->render('admin.plugins.form.html.twig');
|
echo $twig->render('admin.plugins.form.html.twig');
|
||||||
|
|
||||||
$message = '';
|
function deleteDirectory($dir) {
|
||||||
if(isset($_FILES["plugin"]["name"]))
|
if(!file_exists($dir)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!is_dir($dir)) {
|
||||||
|
return unlink($dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach(scandir($dir) as $item) {
|
||||||
|
if($item == '.' || $item == '..') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!deleteDirectory($dir . DIRECTORY_SEPARATOR . $item)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return rmdir($dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isset($_REQUEST['uninstall'])){
|
||||||
|
$uninstall = $_REQUEST['uninstall'];
|
||||||
|
|
||||||
|
$string = file_get_contents(BASE . 'plugins/' . $uninstall . '.json');
|
||||||
|
$plugin_info = json_decode($string, true);
|
||||||
|
if($plugin_info == false) {
|
||||||
|
warning('Cannot load plugin info ' . $uninstall . '.json');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$success = true;
|
||||||
|
foreach($plugin_info['uninstall'] as $file) {
|
||||||
|
$file = BASE . $file;
|
||||||
|
if(!deleteDirectory($file)) {
|
||||||
|
$success = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($success) {
|
||||||
|
success('Successfully uninstalled plugin ' . $uninstall);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
error('Error while uninstalling plugin ' . $uninstall . ': ' . error_get_last());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(isset($_FILES["plugin"]["name"]))
|
||||||
{
|
{
|
||||||
$file = $_FILES["plugin"];
|
$file = $_FILES["plugin"];
|
||||||
$filename = $file["name"];
|
$filename = $file["name"];
|
||||||
@ -28,7 +75,7 @@ if(isset($_FILES["plugin"]["name"]))
|
|||||||
|
|
||||||
if(isset($file['error'])) {
|
if(isset($file['error'])) {
|
||||||
$error = 'Error uploading file';
|
$error = 'Error uploading file';
|
||||||
switch( $file['error'] ) {
|
switch($file['error']) {
|
||||||
case UPLOAD_ERR_OK:
|
case UPLOAD_ERR_OK:
|
||||||
$error = false;
|
$error = false;
|
||||||
break;
|
break;
|
||||||
@ -79,33 +126,55 @@ if(isset($_FILES["plugin"]["name"]))
|
|||||||
$string = file_get_contents($file_name);
|
$string = file_get_contents($file_name);
|
||||||
$plugin = json_decode($string, true);
|
$plugin = json_decode($string, true);
|
||||||
if ($plugin == null) {
|
if ($plugin == null) {
|
||||||
warning('Cannot load ' . $file_name . '. File might be not valid json code.');
|
warning('Cannot load ' . $file_name . '. File might be not a valid json code.');
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
$continue = true;
|
||||||
|
$require = $plugin['require'];
|
||||||
|
|
||||||
if(isset($plugin['install'])) {
|
if(isset($require)) {
|
||||||
if(file_exists(BASE . $plugin['install']))
|
$require_myaac = $require['myaac'];
|
||||||
require(BASE . $plugin['install']);
|
if(isset($require_myaac)) {
|
||||||
else
|
if(version_compare(MYAAC_VERSION, $require_myaac, '<')) {
|
||||||
warning('Cannot load install script. Your plugin might be not working correctly.');
|
warning("This plugin requires MyAAC version " . $require_myaac . ", you're using version " . MYAAC_VERSION . " - please update.");
|
||||||
}
|
$continue = false;
|
||||||
|
|
||||||
if(isset($plugin['hooks'])) {
|
|
||||||
foreach($plugin['hooks'] as $_name => $info) {
|
|
||||||
if(isset($hook_types[$info['type']])) {
|
|
||||||
$query = $db->query('SELECT `id` FROM `' . TABLE_PREFIX . 'hooks` WHERE `name` = ' . $db->quote($_name) . ';');
|
|
||||||
if($query->rowCount() == 1) { // found something
|
|
||||||
$query = $query->fetch();
|
|
||||||
$db->query('UPDATE `' . TABLE_PREFIX . 'hooks` SET `type` = ' . $hook_types[$info['type']] . ', `file` = ' . $db->quote($info['file']) . ' WHERE `id` = ' . (int)$query['id'] . ';');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$db->query('INSERT INTO `' . TABLE_PREFIX . 'hooks` (`id`, `name`, `type`, `file`) VALUES (NULL, ' . $db->quote($_name) . ', ' . $hook_types[$info['type']] . ', ' . $db->quote($info['file']) . ');');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
warning('Unknown event type: ' . $info['type']);
|
$require_php = $require['php'];
|
||||||
|
if(isset($require_php)) {
|
||||||
|
if(version_compare(phpversion(), $require_php, '<')) {
|
||||||
|
warning("This plugin requires PHP version " . $require_php . ", you're using version " . phpversion() . " - please update.");
|
||||||
|
$continue = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($continue) {
|
||||||
|
if (isset($plugin['install'])) {
|
||||||
|
if (file_exists(BASE . $plugin['install']))
|
||||||
|
require(BASE . $plugin['install']);
|
||||||
|
else
|
||||||
|
warning('Cannot load install script. Your plugin might be not working correctly.');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($plugin['hooks'])) {
|
||||||
|
foreach ($plugin['hooks'] as $_name => $info) {
|
||||||
|
if (isset($hook_types[$info['type']])) {
|
||||||
|
$query = $db->query('SELECT `id` FROM `' . TABLE_PREFIX . 'hooks` WHERE `name` = ' . $db->quote($_name) . ';');
|
||||||
|
if ($query->rowCount() == 1) { // found something
|
||||||
|
$query = $query->fetch();
|
||||||
|
$db->query('UPDATE `' . TABLE_PREFIX . 'hooks` SET `type` = ' . $hook_types[$info['type']] . ', `file` = ' . $db->quote($info['file']) . ' WHERE `id` = ' . (int)$query['id'] . ';');
|
||||||
|
} else {
|
||||||
|
$db->query('INSERT INTO `' . TABLE_PREFIX . 'hooks` (`id`, `name`, `type`, `file`) VALUES (NULL, ' . $db->quote($_name) . ', ' . $hook_types[$info['type']] . ', ' . $db->quote($info['file']) . ');');
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
warning('Unknown event type: ' . $info['type']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
success('<strong>' . $plugin['name'] . '</strong> plugin has been successfully installed.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
success('<strong>' . $plugin['name'] . '</strong> plugin has been successfully installed.');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -132,8 +201,6 @@ if(isset($_FILES["plugin"]["name"]))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
echo $message;
|
|
||||||
|
|
||||||
$plugins = array();
|
$plugins = array();
|
||||||
$rows = array();
|
$rows = array();
|
||||||
|
|
||||||
@ -146,14 +213,20 @@ foreach(scandir($path) as $file)
|
|||||||
|
|
||||||
$string = file_get_contents(BASE . 'plugins/' . $file_info[0] . '.json');
|
$string = file_get_contents(BASE . 'plugins/' . $file_info[0] . '.json');
|
||||||
$plugin_info = json_decode($string, true);
|
$plugin_info = json_decode($string, true);
|
||||||
$rows[] = array(
|
if($plugin_info == false) {
|
||||||
'name' => $plugin_info['name'],
|
warning('Cannot load plugin info ' . $file);
|
||||||
'description' => $plugin_info['description'],
|
}
|
||||||
'version' => $plugin_info['version'],
|
else {
|
||||||
'author' => $plugin_info['author'],
|
$rows[] = array(
|
||||||
'contact' => $plugin_info['contact'],
|
'name' => $plugin_info['name'],
|
||||||
'file' => $file,
|
'description' => $plugin_info['description'],
|
||||||
);
|
'version' => $plugin_info['version'],
|
||||||
|
'author' => $plugin_info['author'],
|
||||||
|
'contact' => $plugin_info['contact'],
|
||||||
|
'file' => $file_info[0],
|
||||||
|
'uninstall' => isset($plugin_info['uninstall'])
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
echo $twig->render('admin.plugins.html.twig', array(
|
echo $twig->render('admin.plugins.html.twig', array(
|
||||||
|
@ -1,21 +1,15 @@
|
|||||||
<script type="text/javascript" src="{{ constant('BASE_URL') }}tools/tiny_mce/tiny_mce.js"></script>
|
<script type="text/javascript" src="{{ constant('BASE_URL') }}tools/tinymce/tinymce.min.js"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
tinyMCE.init({
|
tinymce.init({
|
||||||
mode : "textareas",
|
selector : "textarea",
|
||||||
theme : "advanced",
|
theme : "modern",
|
||||||
plugins: "safari,advimage,emotions,insertdatetime,preview,wordcount",
|
plugins: 'print preview fullpage searchreplace autolink directionality visualblocks visualchars fullscreen image link media template codesample table charmap hr pagebreak nonbreaking anchor toc insertdatetime advlist lists textcolor wordcount spellchecker imagetools contextmenu colorpicker textpattern help',
|
||||||
|
toolbar1: 'formatselect | bold italic strikethrough forecolor backcolor | link | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat',
|
||||||
relative_urls : false,
|
image_advtab: true,
|
||||||
remove_script_host : false,
|
relative_urls : false,
|
||||||
document_base_url : "{{ constant('BASE_URL') }}",
|
remove_script_host : false,
|
||||||
|
document_base_url : "{{ constant('BASE_URL') }}"
|
||||||
theme_advanced_buttons3_add : "emotions,insertdate,inserttime,preview,|,forecolor,backcolor",
|
});
|
||||||
|
|
||||||
theme_advanced_toolbar_location : "top",
|
|
||||||
theme_advanced_toolbar_align : "left",
|
|
||||||
theme_advanced_statusbar_location : "bottom",
|
|
||||||
theme_advanced_resizing : true,
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
<table width="800" cellspacing="1" cellpadding="2" border="0" align="center">
|
<table width="800" cellspacing="1" cellpadding="2" border="0" align="center">
|
||||||
<form method="post">
|
<form method="post">
|
||||||
|
@ -6,14 +6,16 @@
|
|||||||
<th>Version</th>
|
<th>Version</th>
|
||||||
<th>Author</th>
|
<th>Author</th>
|
||||||
<th>Contact</th>
|
<th>Contact</th>
|
||||||
|
<th>Options</th>
|
||||||
</tr>
|
</tr>
|
||||||
{% for plugin in plugins %}
|
{% for plugin in plugins %}
|
||||||
<tr>
|
<tr>
|
||||||
<td><div title="{{ plugin.description }}">{{ plugin.name }}</div></td>
|
<td><div title="{{ plugin.description }}">{{ plugin.name }}</div></td>
|
||||||
<td>{{ plugin.file }}</td>
|
<td>{{ plugin.file }}.json</td>
|
||||||
<td>{{ plugin.version }}</td>
|
<td>{{ plugin.version }}</td>
|
||||||
<td>{{ plugin.author }}</td>
|
<td>{{ plugin.author }}</td>
|
||||||
<td>{{ plugin.contact }}</td>
|
<td>{{ plugin.contact }}</td>
|
||||||
|
<td><a href="?p=plugins&uninstall={{ plugin.file }}">Uninstall</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
@ -2,6 +2,7 @@
|
|||||||
<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr>
|
<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr>
|
||||||
<td><img src="<{{ template_path }}/images/general/blank.gif" width="10" height="1" border="0"></td>
|
<td><img src="<{{ template_path }}/images/general/blank.gif" width="10" height="1" border="0"></td>
|
||||||
<td>
|
<td>
|
||||||
|
{{ hook(constant('HOOK_CHARACTERS_BEFORE_INFORMATIONS')) }}
|
||||||
<table border="0" cellspacing="1" cellpadding="4" width="100%">
|
<table border="0" cellspacing="1" cellpadding="4" width="100%">
|
||||||
{% if config.characters.outfit %}
|
{% if config.characters.outfit %}
|
||||||
<div style="width:64px;height:64px;border:2px solid #F1E0C6; border-radius:50px; padding:13px; margin-top:38px;margin-left:376px;position:absolute;"><img style="margin-left:{% if player.getLookType() in [75, 266, 302] %}-0px;margin-top:-0px;width:64px;height:64px;{% else %}-60px;margin-top:-60px;width:128px;height:128px;{% endif %}" src="{{ outfit }}" alt="player outfit"/></div>
|
<div style="width:64px;height:64px;border:2px solid #F1E0C6; border-radius:50px; padding:13px; margin-top:38px;margin-left:376px;position:absolute;"><img style="margin-left:{% if player.getLookType() in [75, 266, 302] %}-0px;margin-top:-0px;width:64px;height:64px;{% else %}-60px;margin-top:-60px;width:128px;height:128px;{% endif %}" src="{{ outfit }}" alt="player outfit"/></div>
|
||||||
@ -139,6 +140,7 @@
|
|||||||
<td>{% if account.isPremium() %}Premium Account{% else %}Free Account{% endif %}</td>
|
<td>{% if account.isPremium() %}Premium Account{% else %}Free Account{% endif %}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
{{ hook(constant('HOOK_CHARACTERS_AFTER_INFORMATIONS')) }}
|
||||||
<br/>
|
<br/>
|
||||||
<table border="0" width="100%">
|
<table border="0" width="100%">
|
||||||
<tr>
|
<tr>
|
||||||
@ -217,21 +219,23 @@
|
|||||||
{{ deaths|raw }}
|
{{ deaths|raw }}
|
||||||
{{ frags|raw }}
|
{{ frags|raw }}
|
||||||
|
|
||||||
|
{{ hook(constant('HOOK_CHARACTERS_BEFORE_SIGNATURE')) }}
|
||||||
|
|
||||||
{% if config.signature_enabled %}
|
{% if config.signature_enabled %}
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function showSignLinks()
|
function showSignLinks()
|
||||||
{
|
{
|
||||||
if(document.getElementById('signLinks').style.display == "none")
|
if(document.getElementById('signLinks').style.display == "none")
|
||||||
{
|
{
|
||||||
document.getElementById('signLinks').style.display = "inline";
|
document.getElementById('signLinks').style.display = "inline";
|
||||||
document.getElementById('signText').innerHTML = "Hide links";
|
document.getElementById('signText').innerHTML = "Hide links";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
document.getElementById('signLinks').style.display = "none";
|
document.getElementById('signLinks').style.display = "none";
|
||||||
document.getElementById('signText').innerHTML = "Show links";
|
document.getElementById('signText').innerHTML = "Show links";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<br/>
|
<br/>
|
||||||
<table border="0" cellspacing="1" cellpadding="4" width="100%"><tr bgcolor="{{ config.vdarkborder }}"><td colspan=2 class="white"><b>Signature</b></td></tr>
|
<table border="0" cellspacing="1" cellpadding="4" width="100%"><tr bgcolor="{{ config.vdarkborder }}"><td colspan=2 class="white"><b>Signature</b></td></tr>
|
||||||
@ -257,7 +261,7 @@
|
|||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{{ hook(constant('HOOK_CHARACTERS_AFTER_SIGNATURE')) }}
|
||||||
{% if hidden != 1 %}
|
{% if hidden != 1 %}
|
||||||
{% set rows = 0 %}
|
{% set rows = 0 %}
|
||||||
<br/><br/>
|
<br/><br/>
|
||||||
@ -299,6 +303,7 @@
|
|||||||
<td>{{ account.getCustomField("created")|date("j F Y, g:i a") ~bannedUntil }}</td>
|
<td>{{ account.getCustomField("created")|date("j F Y, g:i a") ~bannedUntil }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
{{ hook(constant('HOOK_CHARACTERS_AFTER_ACCOUNT')) }}
|
||||||
<br/><br/>
|
<br/><br/>
|
||||||
<table border="0" cellspacing="1" cellpadding="4" width="100%">
|
<table border="0" cellspacing="1" cellpadding="4" width="100%">
|
||||||
<tr bgcolor="{{ config.vdarkborder }}">
|
<tr bgcolor="{{ config.vdarkborder }}">
|
||||||
@ -342,6 +347,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{{ hook(constant('HOOK_CHARACTERS_AFTER_CHARACTERS')) }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<img src="{{ template_path }}/images/general/blank.gif" width="10" height="1" border="0">
|
<img src="{{ template_path }}/images/general/blank.gif" width="10" height="1" border="0">
|
||||||
|
@ -1,18 +1,11 @@
|
|||||||
<script type="text/javascript" src="{{ constant('BASE_URL') }}tools/tiny_mce/tiny_mce.js"></script>
|
<script type="text/javascript" src="{{ constant('BASE_URL') }}tools/tinymce/tinymce.min.js"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
tinyMCE.init({
|
tinymce.init({
|
||||||
forced_root_block : false,
|
selector : "textarea",
|
||||||
|
theme : "modern",
|
||||||
mode : "textareas",
|
plugins: 'print preview fullpage searchreplace autolink directionality visualblocks visualchars fullscreen image link media template codesample table charmap hr pagebreak nonbreaking anchor toc insertdatetime advlist lists textcolor wordcount spellchecker imagetools contextmenu colorpicker textpattern help',
|
||||||
theme : "advanced",
|
toolbar1: 'formatselect | bold italic strikethrough forecolor backcolor | link | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat',
|
||||||
plugins: "safari,advimage,emotions,insertdatetime,preview,wordcount",
|
image_advtab: true
|
||||||
|
|
||||||
theme_advanced_buttons3_add : "emotions,insertdate,inserttime,preview,|,forecolor,backcolor",
|
|
||||||
|
|
||||||
theme_advanced_toolbar_location : "top",
|
|
||||||
theme_advanced_toolbar_align : "left",
|
|
||||||
theme_advanced_statusbar_location : "bottom",
|
|
||||||
theme_advanced_resizing : true,
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
{% if action != 'edit' %}
|
{% if action != 'edit' %}
|
||||||
|
@ -3,7 +3,9 @@ list[0] = 'news';
|
|||||||
list[1] = 'account';
|
list[1] = 'account';
|
||||||
list[2] = 'community';
|
list[2] = 'community';
|
||||||
list[3] = 'library';
|
list[3] = 'library';
|
||||||
|
{% if config.gifts_system %}
|
||||||
list[4] = 'shops';
|
list[4] = 'shops';
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
function initMenu()
|
function initMenu()
|
||||||
{
|
{
|
@ -6,7 +6,11 @@ defined('MYAAC') or die('Direct access not allowed!');
|
|||||||
<head>
|
<head>
|
||||||
<?php echo template_place_holder('head_start'); ?>
|
<?php echo template_place_holder('head_start'); ?>
|
||||||
<link rel="stylesheet" href="<?php echo $template_path; ?>/style.css" type="text/css" />
|
<link rel="stylesheet" href="<?php echo $template_path; ?>/style.css" type="text/css" />
|
||||||
<script src="<?php echo $template_path; ?>/menu.js" type="text/javascript"></script>
|
<script type="text/javascript">
|
||||||
|
<?php
|
||||||
|
echo $twig->render('menu.js.html.twig');
|
||||||
|
?>
|
||||||
|
</script>
|
||||||
<script type="text/javascript" src="tools/basic.js"></script>
|
<script type="text/javascript" src="tools/basic.js"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var category = '<?php
|
var category = '<?php
|
||||||
|
@ -1 +0,0 @@
|
|||||||
(function(b){var e,d,a=[],c=window;b.fn.tinymce=function(j){var p=this,g,k,h,m,i,l="",n="";if(!p.length){return p}if(!j){return tinyMCE.get(p[0].id)}function o(){var r=[],q=0;if(f){f();f=null}p.each(function(t,u){var s,w=u.id,v=j.oninit;if(!w){u.id=w=tinymce.DOM.uniqueId()}s=new tinymce.Editor(w,j);r.push(s);if(v){s.onInit.add(function(){var x,y=v;if(++q==r.length){if(tinymce.is(y,"string")){x=(y.indexOf(".")===-1)?null:tinymce.resolve(y.replace(/\.\w+$/,""));y=tinymce.resolve(y)}y.apply(x||tinymce,r)}})}});b.each(r,function(t,s){s.render()})}if(!c.tinymce&&!d&&(g=j.script_url)){d=1;h=g.substring(0,g.lastIndexOf("/"));if(/_(src|dev)\.js/g.test(g)){n="_src"}m=g.lastIndexOf("?");if(m!=-1){l=g.substring(m+1)}c.tinyMCEPreInit=c.tinyMCEPreInit||{base:h,suffix:n,query:l};if(g.indexOf("gzip")!=-1){i=j.language||"en";g=g+(/\?/.test(g)?"&":"?")+"js=true&core=true&suffix="+escape(n)+"&themes="+escape(j.theme)+"&plugins="+escape(j.plugins)+"&languages="+i;if(!c.tinyMCE_GZ){tinyMCE_GZ={start:function(){tinymce.suffix=n;function q(r){tinymce.ScriptLoader.markDone(tinyMCE.baseURI.toAbsolute(r))}q("langs/"+i+".js");q("themes/"+j.theme+"/editor_template"+n+".js");q("themes/"+j.theme+"/langs/"+i+".js");b.each(j.plugins.split(","),function(s,r){if(r){q("plugins/"+r+"/editor_plugin"+n+".js");q("plugins/"+r+"/langs/"+i+".js")}})},end:function(){}}}}b.ajax({type:"GET",url:g,dataType:"script",cache:true,success:function(){tinymce.dom.Event.domLoaded=1;d=2;if(j.script_loaded){j.script_loaded()}o();b.each(a,function(q,r){r()})}})}else{if(d===1){a.push(o)}else{o()}}return p};b.extend(b.expr[":"],{tinymce:function(g){return g.id&&!!tinyMCE.get(g.id)}});function f(){function i(l){if(l==="remove"){this.each(function(n,o){var m=h(o);if(m){m.remove()}})}this.find("span.mceEditor,div.mceEditor").each(function(n,o){var m=tinyMCE.get(o.id.replace(/_parent$/,""));if(m){m.remove()}})}function k(n){var m=this,l;if(n!==e){i.call(m);m.each(function(p,q){var o;if(o=tinyMCE.get(q.id)){o.setContent(n)}})}else{if(m.length>0){if(l=tinyMCE.get(m[0].id)){return l.getContent()}}}}function h(m){var l=null;(m)&&(m.id)&&(c.tinymce)&&(l=tinyMCE.get(m.id));return l}function g(l){return !!((l)&&(l.length)&&(c.tinymce)&&(l.is(":tinymce")))}var j={};b.each(["text","html","val"],function(n,l){var o=j[l]=b.fn[l],m=(l==="text");b.fn[l]=function(s){var p=this;if(!g(p)){return o.apply(p,arguments)}if(s!==e){k.call(p.filter(":tinymce"),s);o.apply(p.not(":tinymce"),arguments);return p}else{var r="";var q=arguments;(m?p:p.eq(0)).each(function(u,v){var t=h(v);r+=t?(m?t.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):t.getContent()):o.apply(b(v),q)});return r}}});b.each(["append","prepend"],function(n,m){var o=j[m]=b.fn[m],l=(m==="prepend");b.fn[m]=function(q){var p=this;if(!g(p)){return o.apply(p,arguments)}if(q!==e){p.filter(":tinymce").each(function(s,t){var r=h(t);r&&r.setContent(l?q+r.getContent():r.getContent()+q)});o.apply(p.not(":tinymce"),arguments);return p}}});b.each(["remove","replaceWith","replaceAll","empty"],function(m,l){var n=j[l]=b.fn[l];b.fn[l]=function(){i.call(this,l);return n.apply(this,arguments)}});j.attr=b.fn.attr;b.fn.attr=function(n,q,o){var m=this;if((!n)||(n!=="value")||(!g(m))){return j.attr.call(m,n,q,o)}if(q!==e){k.call(m.filter(":tinymce"),q);j.attr.call(m.not(":tinymce"),n,q,o);return m}else{var p=m[0],l=h(p);return l?l.getContent():j.attr.call(b(p),n,q,o)}}}})(jQuery);
|
|
218
tools/tiny_mce/langs/en.js
vendored
@ -1,218 +0,0 @@
|
|||||||
tinyMCE.addI18n({en:{
|
|
||||||
common:{
|
|
||||||
edit_confirm:"Do you want to use the WYSIWYG mode for this textarea?",
|
|
||||||
apply:"Apply",
|
|
||||||
insert:"Insert",
|
|
||||||
update:"Update",
|
|
||||||
cancel:"Cancel",
|
|
||||||
close:"Close",
|
|
||||||
browse:"Browse",
|
|
||||||
class_name:"Class",
|
|
||||||
not_set:"-- Not set --",
|
|
||||||
clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?",
|
|
||||||
clipboard_no_support:"Currently not supported by your browser, use keyboard shortcuts instead.",
|
|
||||||
popup_blocked:"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.",
|
|
||||||
invalid_data:"{#field} is invalid",
|
|
||||||
invalid_data_number:"{#field} must be a number",
|
|
||||||
invalid_data_min:"{#field} must be a number greater than {#min}",
|
|
||||||
invalid_data_size:"{#field} must be a number or percentage",
|
|
||||||
more_colors:"More colors"
|
|
||||||
},
|
|
||||||
colors:{
|
|
||||||
'000000':'Black',
|
|
||||||
'993300':'Burnt orange',
|
|
||||||
'333300':'Dark olive',
|
|
||||||
'003300':'Dark green',
|
|
||||||
'003366':'Dark azure',
|
|
||||||
'000080':'Navy Blue',
|
|
||||||
'333399':'Indigo',
|
|
||||||
'333333':'Very dark gray',
|
|
||||||
'800000':'Maroon',
|
|
||||||
'FF6600':'Orange',
|
|
||||||
'808000':'Olive',
|
|
||||||
'008000':'Green',
|
|
||||||
'008080':'Teal',
|
|
||||||
'0000FF':'Blue',
|
|
||||||
'666699':'Grayish blue',
|
|
||||||
'808080':'Gray',
|
|
||||||
'FF0000':'Red',
|
|
||||||
'FF9900':'Amber',
|
|
||||||
'99CC00':'Yellow green',
|
|
||||||
'339966':'Sea green',
|
|
||||||
'33CCCC':'Turquoise',
|
|
||||||
'3366FF':'Royal blue',
|
|
||||||
'800080':'Purple',
|
|
||||||
'999999':'Medium gray',
|
|
||||||
'FF00FF':'Magenta',
|
|
||||||
'FFCC00':'Gold',
|
|
||||||
'FFFF00':'Yellow',
|
|
||||||
'00FF00':'Lime',
|
|
||||||
'00FFFF':'Aqua',
|
|
||||||
'00CCFF':'Sky blue',
|
|
||||||
'993366':'Brown',
|
|
||||||
'C0C0C0':'Silver',
|
|
||||||
'FF99CC':'Pink',
|
|
||||||
'FFCC99':'Peach',
|
|
||||||
'FFFF99':'Light yellow',
|
|
||||||
'CCFFCC':'Pale green',
|
|
||||||
'CCFFFF':'Pale cyan',
|
|
||||||
'99CCFF':'Light sky blue',
|
|
||||||
'CC99FF':'Plum',
|
|
||||||
'FFFFFF':'White'
|
|
||||||
},
|
|
||||||
contextmenu:{
|
|
||||||
align:"Alignment",
|
|
||||||
left:"Left",
|
|
||||||
center:"Center",
|
|
||||||
right:"Right",
|
|
||||||
full:"Full"
|
|
||||||
},
|
|
||||||
insertdatetime:{
|
|
||||||
date_fmt:"%Y-%m-%d",
|
|
||||||
time_fmt:"%H:%M:%S",
|
|
||||||
insertdate_desc:"Insert date",
|
|
||||||
inserttime_desc:"Insert time",
|
|
||||||
months_long:"January,February,March,April,May,June,July,August,September,October,November,December",
|
|
||||||
months_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",
|
|
||||||
day_long:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday",
|
|
||||||
day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"
|
|
||||||
},
|
|
||||||
print:{
|
|
||||||
print_desc:"Print"
|
|
||||||
},
|
|
||||||
preview:{
|
|
||||||
preview_desc:"Preview"
|
|
||||||
},
|
|
||||||
directionality:{
|
|
||||||
ltr_desc:"Direction left to right",
|
|
||||||
rtl_desc:"Direction right to left"
|
|
||||||
},
|
|
||||||
layer:{
|
|
||||||
insertlayer_desc:"Insert new layer",
|
|
||||||
forward_desc:"Move forward",
|
|
||||||
backward_desc:"Move backward",
|
|
||||||
absolute_desc:"Toggle absolute positioning",
|
|
||||||
content:"New layer..."
|
|
||||||
},
|
|
||||||
save:{
|
|
||||||
save_desc:"Save",
|
|
||||||
cancel_desc:"Cancel all changes"
|
|
||||||
},
|
|
||||||
nonbreaking:{
|
|
||||||
nonbreaking_desc:"Insert non-breaking space character"
|
|
||||||
},
|
|
||||||
iespell:{
|
|
||||||
iespell_desc:"Run spell checking",
|
|
||||||
download:"ieSpell not detected. Do you want to install it now?"
|
|
||||||
},
|
|
||||||
advhr:{
|
|
||||||
advhr_desc:"Horizontal rule"
|
|
||||||
},
|
|
||||||
emotions:{
|
|
||||||
emotions_desc:"Emotions"
|
|
||||||
},
|
|
||||||
searchreplace:{
|
|
||||||
search_desc:"Find",
|
|
||||||
replace_desc:"Find/Replace"
|
|
||||||
},
|
|
||||||
advimage:{
|
|
||||||
image_desc:"Insert/edit image"
|
|
||||||
},
|
|
||||||
advlink:{
|
|
||||||
link_desc:"Insert/edit link"
|
|
||||||
},
|
|
||||||
xhtmlxtras:{
|
|
||||||
cite_desc:"Citation",
|
|
||||||
abbr_desc:"Abbreviation",
|
|
||||||
acronym_desc:"Acronym",
|
|
||||||
del_desc:"Deletion",
|
|
||||||
ins_desc:"Insertion",
|
|
||||||
attribs_desc:"Insert/Edit Attributes"
|
|
||||||
},
|
|
||||||
style:{
|
|
||||||
desc:"Edit CSS Style"
|
|
||||||
},
|
|
||||||
paste:{
|
|
||||||
paste_text_desc:"Paste as Plain Text",
|
|
||||||
paste_word_desc:"Paste from Word",
|
|
||||||
selectall_desc:"Select All",
|
|
||||||
plaintext_mode_sticky:"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.",
|
|
||||||
plaintext_mode:"Paste is now in plain text mode. Click again to toggle back to regular paste mode."
|
|
||||||
},
|
|
||||||
paste_dlg:{
|
|
||||||
text_title:"Use CTRL+V on your keyboard to paste the text into the window.",
|
|
||||||
text_linebreaks:"Keep linebreaks",
|
|
||||||
word_title:"Use CTRL+V on your keyboard to paste the text into the window."
|
|
||||||
},
|
|
||||||
table:{
|
|
||||||
desc:"Inserts a new table",
|
|
||||||
row_before_desc:"Insert row before",
|
|
||||||
row_after_desc:"Insert row after",
|
|
||||||
delete_row_desc:"Delete row",
|
|
||||||
col_before_desc:"Insert column before",
|
|
||||||
col_after_desc:"Insert column after",
|
|
||||||
delete_col_desc:"Remove column",
|
|
||||||
split_cells_desc:"Split merged table cells",
|
|
||||||
merge_cells_desc:"Merge table cells",
|
|
||||||
row_desc:"Table row properties",
|
|
||||||
cell_desc:"Table cell properties",
|
|
||||||
props_desc:"Table properties",
|
|
||||||
paste_row_before_desc:"Paste table row before",
|
|
||||||
paste_row_after_desc:"Paste table row after",
|
|
||||||
cut_row_desc:"Cut table row",
|
|
||||||
copy_row_desc:"Copy table row",
|
|
||||||
del:"Delete table",
|
|
||||||
row:"Row",
|
|
||||||
col:"Column",
|
|
||||||
cell:"Cell"
|
|
||||||
},
|
|
||||||
autosave:{
|
|
||||||
unload_msg:"The changes you made will be lost if you navigate away from this page.",
|
|
||||||
restore_content:"Restore auto-saved content.",
|
|
||||||
warning_message:"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?."
|
|
||||||
},
|
|
||||||
fullscreen:{
|
|
||||||
desc:"Toggle fullscreen mode"
|
|
||||||
},
|
|
||||||
media:{
|
|
||||||
desc:"Insert / edit embedded media",
|
|
||||||
edit:"Edit embedded media"
|
|
||||||
},
|
|
||||||
fullpage:{
|
|
||||||
desc:"Document properties"
|
|
||||||
},
|
|
||||||
template:{
|
|
||||||
desc:"Insert predefined template content"
|
|
||||||
},
|
|
||||||
visualchars:{
|
|
||||||
desc:"Visual control characters on/off."
|
|
||||||
},
|
|
||||||
spellchecker:{
|
|
||||||
desc:"Toggle spellchecker",
|
|
||||||
menu:"Spellchecker settings",
|
|
||||||
ignore_word:"Ignore word",
|
|
||||||
ignore_words:"Ignore all",
|
|
||||||
langs:"Languages",
|
|
||||||
wait:"Please wait...",
|
|
||||||
sug:"Suggestions",
|
|
||||||
no_sug:"No suggestions",
|
|
||||||
no_mpell:"No misspellings found."
|
|
||||||
},
|
|
||||||
pagebreak:{
|
|
||||||
desc:"Insert page break."
|
|
||||||
},
|
|
||||||
advlist:{
|
|
||||||
types:"Types",
|
|
||||||
def:"Default",
|
|
||||||
lower_alpha:"Lower alpha",
|
|
||||||
lower_greek:"Lower greek",
|
|
||||||
lower_roman:"Lower roman",
|
|
||||||
upper_alpha:"Upper alpha",
|
|
||||||
upper_roman:"Upper roman",
|
|
||||||
circle:"Circle",
|
|
||||||
disc:"Disc",
|
|
||||||
square:"Square"
|
|
||||||
},
|
|
||||||
aria:{
|
|
||||||
rich_text_area:"Rich Text Area"
|
|
||||||
}}});
|
|
5
tools/tiny_mce/plugins/advhr/css/advhr.css
vendored
@ -1,5 +0,0 @@
|
|||||||
input.radio {border:1px none #000; background:transparent; vertical-align:middle;}
|
|
||||||
.panel_wrapper div.current {height:80px;}
|
|
||||||
#width {width:50px; vertical-align:middle;}
|
|
||||||
#width2 {width:50px; vertical-align:middle;}
|
|
||||||
#size {width:100px;}
|
|
@ -1 +0,0 @@
|
|||||||
(function(){tinymce.create("tinymce.plugins.AdvancedHRPlugin",{init:function(a,b){a.addCommand("mceAdvancedHr",function(){a.windowManager.open({file:b+"/rule.htm",width:250+parseInt(a.getLang("advhr.delta_width",0)),height:160+parseInt(a.getLang("advhr.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("advhr",{title:"advhr.advhr_desc",cmd:"mceAdvancedHr"});a.onNodeChange.add(function(d,c,e){c.setActive("advhr",e.nodeName=="HR")});a.onClick.add(function(c,d){d=d.target;if(d.nodeName==="HR"){c.selection.select(d)}})},getInfo:function(){return{longname:"Advanced HR",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advhr",tinymce.plugins.AdvancedHRPlugin)})();
|
|
@ -1,57 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2009, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
tinymce.create('tinymce.plugins.AdvancedHRPlugin', {
|
|
||||||
init : function(ed, url) {
|
|
||||||
// Register commands
|
|
||||||
ed.addCommand('mceAdvancedHr', function() {
|
|
||||||
ed.windowManager.open({
|
|
||||||
file : url + '/rule.htm',
|
|
||||||
width : 250 + parseInt(ed.getLang('advhr.delta_width', 0)),
|
|
||||||
height : 160 + parseInt(ed.getLang('advhr.delta_height', 0)),
|
|
||||||
inline : 1
|
|
||||||
}, {
|
|
||||||
plugin_url : url
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register buttons
|
|
||||||
ed.addButton('advhr', {
|
|
||||||
title : 'advhr.advhr_desc',
|
|
||||||
cmd : 'mceAdvancedHr'
|
|
||||||
});
|
|
||||||
|
|
||||||
ed.onNodeChange.add(function(ed, cm, n) {
|
|
||||||
cm.setActive('advhr', n.nodeName == 'HR');
|
|
||||||
});
|
|
||||||
|
|
||||||
ed.onClick.add(function(ed, e) {
|
|
||||||
e = e.target;
|
|
||||||
|
|
||||||
if (e.nodeName === 'HR')
|
|
||||||
ed.selection.select(e);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
getInfo : function() {
|
|
||||||
return {
|
|
||||||
longname : 'Advanced HR',
|
|
||||||
author : 'Moxiecode Systems AB',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',
|
|
||||||
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register plugin
|
|
||||||
tinymce.PluginManager.add('advhr', tinymce.plugins.AdvancedHRPlugin);
|
|
||||||
})();
|
|
43
tools/tiny_mce/plugins/advhr/js/rule.js
vendored
@ -1,43 +0,0 @@
|
|||||||
var AdvHRDialog = {
|
|
||||||
init : function(ed) {
|
|
||||||
var dom = ed.dom, f = document.forms[0], n = ed.selection.getNode(), w;
|
|
||||||
|
|
||||||
w = dom.getAttrib(n, 'width');
|
|
||||||
f.width.value = w ? parseInt(w) : (dom.getStyle('width') || '');
|
|
||||||
f.size.value = dom.getAttrib(n, 'size') || parseInt(dom.getStyle('height')) || '';
|
|
||||||
f.noshade.checked = !!dom.getAttrib(n, 'noshade') || !!dom.getStyle('border-width');
|
|
||||||
selectByValue(f, 'width2', w.indexOf('%') != -1 ? '%' : 'px');
|
|
||||||
},
|
|
||||||
|
|
||||||
update : function() {
|
|
||||||
var ed = tinyMCEPopup.editor, h, f = document.forms[0], st = '';
|
|
||||||
|
|
||||||
h = '<hr';
|
|
||||||
|
|
||||||
if (f.size.value) {
|
|
||||||
h += ' size="' + f.size.value + '"';
|
|
||||||
st += ' height:' + f.size.value + 'px;';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (f.width.value) {
|
|
||||||
h += ' width="' + f.width.value + (f.width2.value == '%' ? '%' : '') + '"';
|
|
||||||
st += ' width:' + f.width.value + (f.width2.value == '%' ? '%' : 'px') + ';';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (f.noshade.checked) {
|
|
||||||
h += ' noshade="noshade"';
|
|
||||||
st += ' border-width: 1px; border-style: solid; border-color: #CCCCCC; color: #ffffff;';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ed.settings.inline_styles)
|
|
||||||
h += ' style="' + tinymce.trim(st) + '"';
|
|
||||||
|
|
||||||
h += ' />';
|
|
||||||
|
|
||||||
ed.execCommand("mceInsertContent", false, h);
|
|
||||||
tinyMCEPopup.close();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
tinyMCEPopup.requireLangPack();
|
|
||||||
tinyMCEPopup.onInit.add(AdvHRDialog.init, AdvHRDialog);
|
|
7
tools/tiny_mce/plugins/advhr/langs/en_dlg.js
vendored
@ -1,7 +0,0 @@
|
|||||||
tinyMCE.addI18n('en.advhr_dlg',{
|
|
||||||
normal:"Normal",
|
|
||||||
width:"Width",
|
|
||||||
widthunits:"Units",
|
|
||||||
size:"Height",
|
|
||||||
noshade:"No shadow"
|
|
||||||
});
|
|
58
tools/tiny_mce/plugins/advhr/rule.htm
vendored
@ -1,58 +0,0 @@
|
|||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title>{#advhr.advhr_desc}</title>
|
|
||||||
<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
|
|
||||||
<script type="text/javascript" src="js/rule.js"></script>
|
|
||||||
<script type="text/javascript" src="../../utils/mctabs.js"></script>
|
|
||||||
<script type="text/javascript" src="../../utils/form_utils.js"></script>
|
|
||||||
<link href="css/advhr.css" rel="stylesheet" type="text/css" />
|
|
||||||
</head>
|
|
||||||
<body role="application">
|
|
||||||
<form onsubmit="AdvHRDialog.update();return false;" action="#">
|
|
||||||
<div class="tabs">
|
|
||||||
<ul>
|
|
||||||
<li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advhr.advhr_desc}</a></span></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="panel_wrapper">
|
|
||||||
<div id="general_panel" class="panel current">
|
|
||||||
<table role="presentation" border="0" cellpadding="4" cellspacing="0">
|
|
||||||
<tr role="group" aria-labelledby="width_label">
|
|
||||||
<td><label id="width_label" for="width">{#advhr_dlg.width}</label></td>
|
|
||||||
<td class="nowrap">
|
|
||||||
<input id="width" name="width" type="text" value="" class="mceFocus" />
|
|
||||||
<span style="display:none;" id="width_unit_label">{#advhr_dlg.widthunits}</span>
|
|
||||||
<select name="width2" id="width2" aria-labelledby="width_unit_label">
|
|
||||||
<option value="">px</option>
|
|
||||||
<option value="%">%</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><label for="size">{#advhr_dlg.size}</label></td>
|
|
||||||
<td><select id="size" name="size">
|
|
||||||
<option value="">{#advhr_dlg.normal}</option>
|
|
||||||
<option value="1">1</option>
|
|
||||||
<option value="2">2</option>
|
|
||||||
<option value="3">3</option>
|
|
||||||
<option value="4">4</option>
|
|
||||||
<option value="5">5</option>
|
|
||||||
</select></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><label for="noshade">{#advhr_dlg.noshade}</label></td>
|
|
||||||
<td><input type="checkbox" name="noshade" id="noshade" class="radio" /></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceActionPanel">
|
|
||||||
<input type="submit" id="insert" name="insert" value="{#insert}" />
|
|
||||||
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
13
tools/tiny_mce/plugins/advimage/css/advimage.css
vendored
@ -1,13 +0,0 @@
|
|||||||
#src_list, #over_list, #out_list {width:280px;}
|
|
||||||
.mceActionPanel {margin-top:7px;}
|
|
||||||
.alignPreview {border:1px solid #000; width:140px; height:140px; overflow:hidden; padding:5px;}
|
|
||||||
.checkbox {border:0;}
|
|
||||||
.panel_wrapper div.current {height:305px;}
|
|
||||||
#prev {margin:0; border:1px solid #000; width:428px; height:150px; overflow:auto;}
|
|
||||||
#align, #classlist {width:150px;}
|
|
||||||
#width, #height {vertical-align:middle; width:50px; text-align:center;}
|
|
||||||
#vspace, #hspace, #border {vertical-align:middle; width:30px; text-align:center;}
|
|
||||||
#class_list {width:180px;}
|
|
||||||
input {width: 280px;}
|
|
||||||
#constrain, #onmousemovecheck {width:auto;}
|
|
||||||
#id, #dir, #lang, #usemap, #longdesc {width:200px;}
|
|
@ -1 +0,0 @@
|
|||||||
(function(){tinymce.create("tinymce.plugins.AdvancedImagePlugin",{init:function(a,b){a.addCommand("mceAdvImage",function(){if(a.dom.getAttrib(a.selection.getNode(),"class").indexOf("mceItem")!=-1){return}a.windowManager.open({file:b+"/image.htm",width:480+parseInt(a.getLang("advimage.delta_width",0)),height:385+parseInt(a.getLang("advimage.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("image",{title:"advimage.image_desc",cmd:"mceAdvImage"})},getInfo:function(){return{longname:"Advanced image",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advimage",tinymce.plugins.AdvancedImagePlugin)})();
|
|
@ -1,50 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2009, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
tinymce.create('tinymce.plugins.AdvancedImagePlugin', {
|
|
||||||
init : function(ed, url) {
|
|
||||||
// Register commands
|
|
||||||
ed.addCommand('mceAdvImage', function() {
|
|
||||||
// Internal image object like a flash placeholder
|
|
||||||
if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
ed.windowManager.open({
|
|
||||||
file : url + '/image.htm',
|
|
||||||
width : 480 + parseInt(ed.getLang('advimage.delta_width', 0)),
|
|
||||||
height : 385 + parseInt(ed.getLang('advimage.delta_height', 0)),
|
|
||||||
inline : 1
|
|
||||||
}, {
|
|
||||||
plugin_url : url
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register buttons
|
|
||||||
ed.addButton('image', {
|
|
||||||
title : 'advimage.image_desc',
|
|
||||||
cmd : 'mceAdvImage'
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
getInfo : function() {
|
|
||||||
return {
|
|
||||||
longname : 'Advanced image',
|
|
||||||
author : 'Moxiecode Systems AB',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',
|
|
||||||
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register plugin
|
|
||||||
tinymce.PluginManager.add('advimage', tinymce.plugins.AdvancedImagePlugin);
|
|
||||||
})();
|
|
235
tools/tiny_mce/plugins/advimage/image.htm
vendored
@ -1,235 +0,0 @@
|
|||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title>{#advimage_dlg.dialog_title}</title>
|
|
||||||
<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
|
|
||||||
<script type="text/javascript" src="../../utils/mctabs.js"></script>
|
|
||||||
<script type="text/javascript" src="../../utils/form_utils.js"></script>
|
|
||||||
<script type="text/javascript" src="../../utils/validate.js"></script>
|
|
||||||
<script type="text/javascript" src="../../utils/editable_selects.js"></script>
|
|
||||||
<script type="text/javascript" src="js/image.js"></script>
|
|
||||||
<link href="css/advimage.css" rel="stylesheet" type="text/css" />
|
|
||||||
</head>
|
|
||||||
<body id="advimage" style="display: none" role="application" aria-labelledby="app_title">
|
|
||||||
<span id="app_title" style="display:none">{#advimage_dlg.dialog_title}</span>
|
|
||||||
<form onsubmit="ImageDialog.insert();return false;" action="#">
|
|
||||||
<div class="tabs">
|
|
||||||
<ul>
|
|
||||||
<li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advimage_dlg.tab_general}</a></span></li>
|
|
||||||
<li id="appearance_tab" aria-controls="appearance_panel"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{#advimage_dlg.tab_appearance}</a></span></li>
|
|
||||||
<li id="advanced_tab" aria-controls="advanced_panel"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#advimage_dlg.tab_advanced}</a></span></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="panel_wrapper">
|
|
||||||
<div id="general_panel" class="panel current">
|
|
||||||
<fieldset>
|
|
||||||
<legend>{#advimage_dlg.general}</legend>
|
|
||||||
|
|
||||||
<table role="presentation" class="properties"td>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label id="srclabel" for="src">{#advimage_dlg.src}</label></td>
|
|
||||||
<td colspan="2"><table role="presentation" border="0" cellspacing="0" cellpadding="0">
|
|
||||||
<tr>
|
|
||||||
<td><input name="src" type="text" id="src" value="" class="mceFocus" onchange="ImageDialog.showPreviewImage(this.value);" aria-required="true" /></td>
|
|
||||||
<td id="srcbrowsercontainer"> </td>
|
|
||||||
</tr>
|
|
||||||
</table></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><label for="src_list">{#advimage_dlg.image_list}</label></td>
|
|
||||||
<td><select id="src_list" name="src_list" onchange="document.getElementById('src').value=this.options[this.selectedIndex].value;document.getElementById('alt').value=this.options[this.selectedIndex].text;document.getElementById('title').value=this.options[this.selectedIndex].text;ImageDialog.showPreviewImage(this.options[this.selectedIndex].value);"><option value=""></option></select></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label id="altlabel" for="alt">{#advimage_dlg.alt}</label></td>
|
|
||||||
<td colspan="2"><input id="alt" name="alt" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label id="titlelabel" for="title">{#advimage_dlg.title}</label></td>
|
|
||||||
<td colspan="2"><input id="title" name="title" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{#advimage_dlg.preview}</legend>
|
|
||||||
<div id="prev"></div>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="appearance_panel" class="panel">
|
|
||||||
<fieldset>
|
|
||||||
<legend>{#advimage_dlg.tab_appearance}</legend>
|
|
||||||
|
|
||||||
<table role="presentation" border="0" cellpadding="4" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td class="column1"td><label id="alignlabel" for="align">{#advimage_dlg.align}</label></td>
|
|
||||||
<td><select id="align" name="align" onchange="ImageDialog.updateStyle('align');ImageDialog.changeAppearance();">
|
|
||||||
<option value="">{#not_set}</option>
|
|
||||||
<option value="baseline">{#advimage_dlg.align_baseline}</option>
|
|
||||||
<option value="top">{#advimage_dlg.align_top}</option>
|
|
||||||
<option value="middle">{#advimage_dlg.align_middle}</option>
|
|
||||||
<option value="bottom">{#advimage_dlg.align_bottom}</option>
|
|
||||||
<option value="text-top">{#advimage_dlg.align_texttop}</option>
|
|
||||||
<option value="text-bottom">{#advimage_dlg.align_textbottom}</option>
|
|
||||||
<option value="left">{#advimage_dlg.align_left}</option>
|
|
||||||
<option value="right">{#advimage_dlg.align_right}</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
<td rowspan="6" valign="top"td>
|
|
||||||
<div class="alignPreview">
|
|
||||||
<img id="alignSampleImg" src="img/sample.gif" alt="{#advimage_dlg.example_img}" />
|
|
||||||
Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam
|
|
||||||
nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum
|
|
||||||
edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam
|
|
||||||
erat volutpat.
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr role="group" aria-labelledby="widthlabel">
|
|
||||||
<td class="column1"td><label id="widthlabel" for="width">{#advimage_dlg.dimensions}</label></td>
|
|
||||||
<td class="nowrap"td>
|
|
||||||
<span style="display:none" id="width_voiceLabel">{#advimage_dlg.width}</span>
|
|
||||||
<input name="width" type="text" id="width" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeHeight();" aria-labelledby="width_voiceLabel" /> x
|
|
||||||
<span style="display:none" id="height_voiceLabel">{#advimage_dlg.height}</span>
|
|
||||||
<input name="height" type="text" id="height" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeWidth();" aria-labelledby="height_voiceLabel" /> px
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td> </td>
|
|
||||||
<td><table role="presentation" border="0" cellpadding="0" cellspacing="0"td>
|
|
||||||
<tr>
|
|
||||||
<td><input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>
|
|
||||||
<td><label id="constrainlabel" for="constrain">{#advimage_dlg.constrain_proportions}</label></td>
|
|
||||||
</tr>
|
|
||||||
</table></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"td><label id="vspacelabel" for="vspace">{#advimage_dlg.vspace}</label></td>
|
|
||||||
<td><input name="vspace" type="text" id="vspace" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('vspace');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('vspace');ImageDialog.changeAppearance();" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"td><label id="hspacelabel" for="hspace">{#advimage_dlg.hspace}</label></td>
|
|
||||||
<td><input name="hspace" type="text" id="hspace" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('hspace');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('hspace');ImageDialog.changeAppearance();" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"td><label id="borderlabel" for="border">{#advimage_dlg.border}</label></td>
|
|
||||||
<td><input id="border" name="border" type="text" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('border');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('border');ImageDialog.changeAppearance();" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><label for="class_list">{#class_name}</label></td>
|
|
||||||
<td colspan="2"td><select id="class_list" name="class_list" class="mceEditableSelect"><option value=""></option></select></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"td><label id="stylelabel" for="style">{#advimage_dlg.style}</label></td>
|
|
||||||
<td colspan="2"td><input id="style" name="style" type="text" value="" onchange="ImageDialog.changeAppearance();" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<!-- <tr>
|
|
||||||
<td class="column1"><label id="classeslabel" for="classes">{#advimage_dlg.classes}</label></td>
|
|
||||||
<td colspan="2"><input id="classes" name="classes" type="text" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td>
|
|
||||||
</tr> -->
|
|
||||||
</table>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="advanced_panel" class="panel">
|
|
||||||
<fieldset>
|
|
||||||
<legend>{#advimage_dlg.swap_image}</legend>
|
|
||||||
|
|
||||||
<input type="checkbox" id="onmousemovecheck" name="onmousemovecheck" class="checkbox" onclick="ImageDialog.setSwapImage(this.checked);" aria-controls="onmouseoversrc onmouseoutsrc" />
|
|
||||||
<label id="onmousemovechecklabel" for="onmousemovecheck">{#advimage_dlg.alt_image}</label>
|
|
||||||
|
|
||||||
<table role="presentation" border="0" cellpadding="4" cellspacing="0" width="100%"td>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"td><label id="onmouseoversrclabel" for="onmouseoversrc">{#advimage_dlg.mouseover}</label></td>
|
|
||||||
<td><table role="presentation" border="0" cellspacing="0" cellpadding="0"td>
|
|
||||||
<tr>
|
|
||||||
<td><input id="onmouseoversrc" name="onmouseoversrc" type="text" value="" /></td>
|
|
||||||
<td id="onmouseoversrccontainer"td> </td>
|
|
||||||
</tr>
|
|
||||||
</table></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><label for="over_list">{#advimage_dlg.image_list}</label></td>
|
|
||||||
<td><select id="over_list" name="over_list" onchange="document.getElementById('onmouseoversrc').value=this.options[this.selectedIndex].value;"><option value=""></option></select></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"td><label id="onmouseoutsrclabel" for="onmouseoutsrc">{#advimage_dlg.mouseout}</label></td>
|
|
||||||
<td class="column2"td><table role="presentation" border="0" cellspacing="0" cellpadding="0"td>
|
|
||||||
<tr>
|
|
||||||
<td><input id="onmouseoutsrc" name="onmouseoutsrc" type="text" value="" /></td>
|
|
||||||
<td id="onmouseoutsrccontainer"td> </td>
|
|
||||||
</tr>
|
|
||||||
</table></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><label for="out_list">{#advimage_dlg.image_list}</label></td>
|
|
||||||
<td><select id="out_list" name="out_list" onchange="document.getElementById('onmouseoutsrc').value=this.options[this.selectedIndex].value;"><option value=""></option></select></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{#advimage_dlg.misc}</legend>
|
|
||||||
|
|
||||||
<table role="presentation" border="0" cellpadding="4" cellspacing="0"td>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"td><label id="idlabel" for="id">{#advimage_dlg.id}</label></td>
|
|
||||||
<td><input id="id" name="id" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"td><label id="dirlabel" for="dir">{#advimage_dlg.langdir}</label></td>
|
|
||||||
<td>
|
|
||||||
<select id="dir" name="dir" onchange="ImageDialog.changeAppearance();">
|
|
||||||
<option value="">{#not_set}</option>
|
|
||||||
<option value="ltr">{#advimage_dlg.ltr}</option>
|
|
||||||
<option value="rtl">{#advimage_dlg.rtl}</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"td><label id="langlabel" for="lang">{#advimage_dlg.langcode}</label></td>
|
|
||||||
<td>
|
|
||||||
<input id="lang" name="lang" type="text" value="" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"td><label id="usemaplabel" for="usemap">{#advimage_dlg.map}</label></td>
|
|
||||||
<td>
|
|
||||||
<input id="usemap" name="usemap" type="text" value="" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"td><label id="longdesclabel" for="longdesc">{#advimage_dlg.long_desc}</label></td>
|
|
||||||
<td><table role="presentation" border="0" cellspacing="0" cellpadding="0"td>
|
|
||||||
<tr>
|
|
||||||
<td><input id="longdesc" name="longdesc" type="text" value="" /></td>
|
|
||||||
<td id="longdesccontainer"> </td>
|
|
||||||
</tr>
|
|
||||||
</table></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceActionPanel">
|
|
||||||
<input type="submit" id="insert" name="insert" value="{#insert}" />
|
|
||||||
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
BIN
tools/tiny_mce/plugins/advimage/img/sample.gif
vendored
Before Width: | Height: | Size: 1.6 KiB |
445
tools/tiny_mce/plugins/advimage/js/image.js
vendored
@ -1,445 +0,0 @@
|
|||||||
var ImageDialog = {
|
|
||||||
preInit : function() {
|
|
||||||
var url;
|
|
||||||
|
|
||||||
tinyMCEPopup.requireLangPack();
|
|
||||||
|
|
||||||
if (url = tinyMCEPopup.getParam("external_image_list_url"))
|
|
||||||
document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
|
|
||||||
},
|
|
||||||
|
|
||||||
init : function(ed) {
|
|
||||||
var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, dom = ed.dom, n = ed.selection.getNode();
|
|
||||||
|
|
||||||
tinyMCEPopup.resizeToInnerSize();
|
|
||||||
this.fillClassList('class_list');
|
|
||||||
this.fillFileList('src_list', 'tinyMCEImageList');
|
|
||||||
this.fillFileList('over_list', 'tinyMCEImageList');
|
|
||||||
this.fillFileList('out_list', 'tinyMCEImageList');
|
|
||||||
TinyMCE_EditableSelects.init();
|
|
||||||
|
|
||||||
if (n.nodeName == 'IMG') {
|
|
||||||
nl.src.value = dom.getAttrib(n, 'src');
|
|
||||||
nl.width.value = dom.getAttrib(n, 'width');
|
|
||||||
nl.height.value = dom.getAttrib(n, 'height');
|
|
||||||
nl.alt.value = dom.getAttrib(n, 'alt');
|
|
||||||
nl.title.value = dom.getAttrib(n, 'title');
|
|
||||||
nl.vspace.value = this.getAttrib(n, 'vspace');
|
|
||||||
nl.hspace.value = this.getAttrib(n, 'hspace');
|
|
||||||
nl.border.value = this.getAttrib(n, 'border');
|
|
||||||
selectByValue(f, 'align', this.getAttrib(n, 'align'));
|
|
||||||
selectByValue(f, 'class_list', dom.getAttrib(n, 'class'), true, true);
|
|
||||||
nl.style.value = dom.getAttrib(n, 'style');
|
|
||||||
nl.id.value = dom.getAttrib(n, 'id');
|
|
||||||
nl.dir.value = dom.getAttrib(n, 'dir');
|
|
||||||
nl.lang.value = dom.getAttrib(n, 'lang');
|
|
||||||
nl.usemap.value = dom.getAttrib(n, 'usemap');
|
|
||||||
nl.longdesc.value = dom.getAttrib(n, 'longdesc');
|
|
||||||
nl.insert.value = ed.getLang('update');
|
|
||||||
|
|
||||||
if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseover')))
|
|
||||||
nl.onmouseoversrc.value = dom.getAttrib(n, 'onmouseover').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1');
|
|
||||||
|
|
||||||
if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseout')))
|
|
||||||
nl.onmouseoutsrc.value = dom.getAttrib(n, 'onmouseout').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1');
|
|
||||||
|
|
||||||
if (ed.settings.inline_styles) {
|
|
||||||
// Move attribs to styles
|
|
||||||
if (dom.getAttrib(n, 'align'))
|
|
||||||
this.updateStyle('align');
|
|
||||||
|
|
||||||
if (dom.getAttrib(n, 'hspace'))
|
|
||||||
this.updateStyle('hspace');
|
|
||||||
|
|
||||||
if (dom.getAttrib(n, 'border'))
|
|
||||||
this.updateStyle('border');
|
|
||||||
|
|
||||||
if (dom.getAttrib(n, 'vspace'))
|
|
||||||
this.updateStyle('vspace');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setup browse button
|
|
||||||
document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');
|
|
||||||
if (isVisible('srcbrowser'))
|
|
||||||
document.getElementById('src').style.width = '260px';
|
|
||||||
|
|
||||||
// Setup browse button
|
|
||||||
document.getElementById('onmouseoversrccontainer').innerHTML = getBrowserHTML('overbrowser','onmouseoversrc','image','theme_advanced_image');
|
|
||||||
if (isVisible('overbrowser'))
|
|
||||||
document.getElementById('onmouseoversrc').style.width = '260px';
|
|
||||||
|
|
||||||
// Setup browse button
|
|
||||||
document.getElementById('onmouseoutsrccontainer').innerHTML = getBrowserHTML('outbrowser','onmouseoutsrc','image','theme_advanced_image');
|
|
||||||
if (isVisible('outbrowser'))
|
|
||||||
document.getElementById('onmouseoutsrc').style.width = '260px';
|
|
||||||
|
|
||||||
// If option enabled default contrain proportions to checked
|
|
||||||
if (ed.getParam("advimage_constrain_proportions", true))
|
|
||||||
f.constrain.checked = true;
|
|
||||||
|
|
||||||
// Check swap image if valid data
|
|
||||||
if (nl.onmouseoversrc.value || nl.onmouseoutsrc.value)
|
|
||||||
this.setSwapImage(true);
|
|
||||||
else
|
|
||||||
this.setSwapImage(false);
|
|
||||||
|
|
||||||
this.changeAppearance();
|
|
||||||
this.showPreviewImage(nl.src.value, 1);
|
|
||||||
},
|
|
||||||
|
|
||||||
insert : function(file, title) {
|
|
||||||
var ed = tinyMCEPopup.editor, t = this, f = document.forms[0];
|
|
||||||
|
|
||||||
if (f.src.value === '') {
|
|
||||||
if (ed.selection.getNode().nodeName == 'IMG') {
|
|
||||||
ed.dom.remove(ed.selection.getNode());
|
|
||||||
ed.execCommand('mceRepaint');
|
|
||||||
}
|
|
||||||
|
|
||||||
tinyMCEPopup.close();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tinyMCEPopup.getParam("accessibility_warnings", 1)) {
|
|
||||||
if (!f.alt.value) {
|
|
||||||
tinyMCEPopup.confirm(tinyMCEPopup.getLang('advimage_dlg.missing_alt'), function(s) {
|
|
||||||
if (s)
|
|
||||||
t.insertAndClose();
|
|
||||||
});
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
t.insertAndClose();
|
|
||||||
},
|
|
||||||
|
|
||||||
insertAndClose : function() {
|
|
||||||
var ed = tinyMCEPopup.editor, f = document.forms[0], nl = f.elements, v, args = {}, el;
|
|
||||||
|
|
||||||
tinyMCEPopup.restoreSelection();
|
|
||||||
|
|
||||||
// Fixes crash in Safari
|
|
||||||
if (tinymce.isWebKit)
|
|
||||||
ed.getWin().focus();
|
|
||||||
|
|
||||||
if (!ed.settings.inline_styles) {
|
|
||||||
args = {
|
|
||||||
vspace : nl.vspace.value,
|
|
||||||
hspace : nl.hspace.value,
|
|
||||||
border : nl.border.value,
|
|
||||||
align : getSelectValue(f, 'align')
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
// Remove deprecated values
|
|
||||||
args = {
|
|
||||||
vspace : '',
|
|
||||||
hspace : '',
|
|
||||||
border : '',
|
|
||||||
align : ''
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
tinymce.extend(args, {
|
|
||||||
src : nl.src.value.replace(/ /g, '%20'),
|
|
||||||
width : nl.width.value,
|
|
||||||
height : nl.height.value,
|
|
||||||
alt : nl.alt.value,
|
|
||||||
title : nl.title.value,
|
|
||||||
'class' : getSelectValue(f, 'class_list'),
|
|
||||||
style : nl.style.value,
|
|
||||||
id : nl.id.value,
|
|
||||||
dir : nl.dir.value,
|
|
||||||
lang : nl.lang.value,
|
|
||||||
usemap : nl.usemap.value,
|
|
||||||
longdesc : nl.longdesc.value
|
|
||||||
});
|
|
||||||
|
|
||||||
args.onmouseover = args.onmouseout = '';
|
|
||||||
|
|
||||||
if (f.onmousemovecheck.checked) {
|
|
||||||
if (nl.onmouseoversrc.value)
|
|
||||||
args.onmouseover = "this.src='" + nl.onmouseoversrc.value + "';";
|
|
||||||
|
|
||||||
if (nl.onmouseoutsrc.value)
|
|
||||||
args.onmouseout = "this.src='" + nl.onmouseoutsrc.value + "';";
|
|
||||||
}
|
|
||||||
|
|
||||||
el = ed.selection.getNode();
|
|
||||||
|
|
||||||
if (el && el.nodeName == 'IMG') {
|
|
||||||
ed.dom.setAttribs(el, args);
|
|
||||||
} else {
|
|
||||||
ed.execCommand('mceInsertContent', false, '<img id="__mce_tmp" />', {skip_undo : 1});
|
|
||||||
ed.dom.setAttribs('__mce_tmp', args);
|
|
||||||
ed.dom.setAttrib('__mce_tmp', 'id', '');
|
|
||||||
ed.undoManager.add();
|
|
||||||
}
|
|
||||||
|
|
||||||
tinyMCEPopup.editor.execCommand('mceRepaint');
|
|
||||||
tinyMCEPopup.editor.focus();
|
|
||||||
tinyMCEPopup.close();
|
|
||||||
},
|
|
||||||
|
|
||||||
getAttrib : function(e, at) {
|
|
||||||
var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2;
|
|
||||||
|
|
||||||
if (ed.settings.inline_styles) {
|
|
||||||
switch (at) {
|
|
||||||
case 'align':
|
|
||||||
if (v = dom.getStyle(e, 'float'))
|
|
||||||
return v;
|
|
||||||
|
|
||||||
if (v = dom.getStyle(e, 'vertical-align'))
|
|
||||||
return v;
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'hspace':
|
|
||||||
v = dom.getStyle(e, 'margin-left')
|
|
||||||
v2 = dom.getStyle(e, 'margin-right');
|
|
||||||
|
|
||||||
if (v && v == v2)
|
|
||||||
return parseInt(v.replace(/[^0-9]/g, ''));
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'vspace':
|
|
||||||
v = dom.getStyle(e, 'margin-top')
|
|
||||||
v2 = dom.getStyle(e, 'margin-bottom');
|
|
||||||
if (v && v == v2)
|
|
||||||
return parseInt(v.replace(/[^0-9]/g, ''));
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'border':
|
|
||||||
v = 0;
|
|
||||||
|
|
||||||
tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) {
|
|
||||||
sv = dom.getStyle(e, 'border-' + sv + '-width');
|
|
||||||
|
|
||||||
// False or not the same as prev
|
|
||||||
if (!sv || (sv != v && v !== 0)) {
|
|
||||||
v = 0;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sv)
|
|
||||||
v = sv;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (v)
|
|
||||||
return parseInt(v.replace(/[^0-9]/g, ''));
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (v = dom.getAttrib(e, at))
|
|
||||||
return v;
|
|
||||||
|
|
||||||
return '';
|
|
||||||
},
|
|
||||||
|
|
||||||
setSwapImage : function(st) {
|
|
||||||
var f = document.forms[0];
|
|
||||||
|
|
||||||
f.onmousemovecheck.checked = st;
|
|
||||||
setBrowserDisabled('overbrowser', !st);
|
|
||||||
setBrowserDisabled('outbrowser', !st);
|
|
||||||
|
|
||||||
if (f.over_list)
|
|
||||||
f.over_list.disabled = !st;
|
|
||||||
|
|
||||||
if (f.out_list)
|
|
||||||
f.out_list.disabled = !st;
|
|
||||||
|
|
||||||
f.onmouseoversrc.disabled = !st;
|
|
||||||
f.onmouseoutsrc.disabled = !st;
|
|
||||||
},
|
|
||||||
|
|
||||||
fillClassList : function(id) {
|
|
||||||
var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
|
|
||||||
|
|
||||||
if (v = tinyMCEPopup.getParam('theme_advanced_styles')) {
|
|
||||||
cl = [];
|
|
||||||
|
|
||||||
tinymce.each(v.split(';'), function(v) {
|
|
||||||
var p = v.split('=');
|
|
||||||
|
|
||||||
cl.push({'title' : p[0], 'class' : p[1]});
|
|
||||||
});
|
|
||||||
} else
|
|
||||||
cl = tinyMCEPopup.editor.dom.getClasses();
|
|
||||||
|
|
||||||
if (cl.length > 0) {
|
|
||||||
lst.options.length = 0;
|
|
||||||
lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
|
|
||||||
|
|
||||||
tinymce.each(cl, function(o) {
|
|
||||||
lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']);
|
|
||||||
});
|
|
||||||
} else
|
|
||||||
dom.remove(dom.getParent(id, 'tr'));
|
|
||||||
},
|
|
||||||
|
|
||||||
fillFileList : function(id, l) {
|
|
||||||
var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
|
|
||||||
|
|
||||||
l = window[l];
|
|
||||||
lst.options.length = 0;
|
|
||||||
|
|
||||||
if (l && l.length > 0) {
|
|
||||||
lst.options[lst.options.length] = new Option('', '');
|
|
||||||
|
|
||||||
tinymce.each(l, function(o) {
|
|
||||||
lst.options[lst.options.length] = new Option(o[0], o[1]);
|
|
||||||
});
|
|
||||||
} else
|
|
||||||
dom.remove(dom.getParent(id, 'tr'));
|
|
||||||
},
|
|
||||||
|
|
||||||
resetImageData : function() {
|
|
||||||
var f = document.forms[0];
|
|
||||||
|
|
||||||
f.elements.width.value = f.elements.height.value = '';
|
|
||||||
},
|
|
||||||
|
|
||||||
updateImageData : function(img, st) {
|
|
||||||
var f = document.forms[0];
|
|
||||||
|
|
||||||
if (!st) {
|
|
||||||
f.elements.width.value = img.width;
|
|
||||||
f.elements.height.value = img.height;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.preloadImg = img;
|
|
||||||
},
|
|
||||||
|
|
||||||
changeAppearance : function() {
|
|
||||||
var ed = tinyMCEPopup.editor, f = document.forms[0], img = document.getElementById('alignSampleImg');
|
|
||||||
|
|
||||||
if (img) {
|
|
||||||
if (ed.getParam('inline_styles')) {
|
|
||||||
ed.dom.setAttrib(img, 'style', f.style.value);
|
|
||||||
} else {
|
|
||||||
img.align = f.align.value;
|
|
||||||
img.border = f.border.value;
|
|
||||||
img.hspace = f.hspace.value;
|
|
||||||
img.vspace = f.vspace.value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
changeHeight : function() {
|
|
||||||
var f = document.forms[0], tp, t = this;
|
|
||||||
|
|
||||||
if (!f.constrain.checked || !t.preloadImg) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (f.width.value == "" || f.height.value == "")
|
|
||||||
return;
|
|
||||||
|
|
||||||
tp = (parseInt(f.width.value) / parseInt(t.preloadImg.width)) * t.preloadImg.height;
|
|
||||||
f.height.value = tp.toFixed(0);
|
|
||||||
},
|
|
||||||
|
|
||||||
changeWidth : function() {
|
|
||||||
var f = document.forms[0], tp, t = this;
|
|
||||||
|
|
||||||
if (!f.constrain.checked || !t.preloadImg) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (f.width.value == "" || f.height.value == "")
|
|
||||||
return;
|
|
||||||
|
|
||||||
tp = (parseInt(f.height.value) / parseInt(t.preloadImg.height)) * t.preloadImg.width;
|
|
||||||
f.width.value = tp.toFixed(0);
|
|
||||||
},
|
|
||||||
|
|
||||||
updateStyle : function(ty) {
|
|
||||||
var dom = tinyMCEPopup.dom, st, v, f = document.forms[0], img = dom.create('img', {style : dom.get('style').value});
|
|
||||||
|
|
||||||
if (tinyMCEPopup.editor.settings.inline_styles) {
|
|
||||||
// Handle align
|
|
||||||
if (ty == 'align') {
|
|
||||||
dom.setStyle(img, 'float', '');
|
|
||||||
dom.setStyle(img, 'vertical-align', '');
|
|
||||||
|
|
||||||
v = getSelectValue(f, 'align');
|
|
||||||
if (v) {
|
|
||||||
if (v == 'left' || v == 'right')
|
|
||||||
dom.setStyle(img, 'float', v);
|
|
||||||
else
|
|
||||||
img.style.verticalAlign = v;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle border
|
|
||||||
if (ty == 'border') {
|
|
||||||
dom.setStyle(img, 'border', '');
|
|
||||||
|
|
||||||
v = f.border.value;
|
|
||||||
if (v || v == '0') {
|
|
||||||
if (v == '0')
|
|
||||||
img.style.border = '0';
|
|
||||||
else
|
|
||||||
img.style.border = v + 'px solid black';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle hspace
|
|
||||||
if (ty == 'hspace') {
|
|
||||||
dom.setStyle(img, 'marginLeft', '');
|
|
||||||
dom.setStyle(img, 'marginRight', '');
|
|
||||||
|
|
||||||
v = f.hspace.value;
|
|
||||||
if (v) {
|
|
||||||
img.style.marginLeft = v + 'px';
|
|
||||||
img.style.marginRight = v + 'px';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle vspace
|
|
||||||
if (ty == 'vspace') {
|
|
||||||
dom.setStyle(img, 'marginTop', '');
|
|
||||||
dom.setStyle(img, 'marginBottom', '');
|
|
||||||
|
|
||||||
v = f.vspace.value;
|
|
||||||
if (v) {
|
|
||||||
img.style.marginTop = v + 'px';
|
|
||||||
img.style.marginBottom = v + 'px';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Merge
|
|
||||||
dom.get('style').value = dom.serializeStyle(dom.parseStyle(img.style.cssText), 'img');
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
changeMouseMove : function() {
|
|
||||||
},
|
|
||||||
|
|
||||||
showPreviewImage : function(u, st) {
|
|
||||||
if (!u) {
|
|
||||||
tinyMCEPopup.dom.setHTML('prev', '');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!st && tinyMCEPopup.getParam("advimage_update_dimensions_onchange", true))
|
|
||||||
this.resetImageData();
|
|
||||||
|
|
||||||
u = tinyMCEPopup.editor.documentBaseURI.toAbsolute(u);
|
|
||||||
|
|
||||||
if (!st)
|
|
||||||
tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this);" onerror="ImageDialog.resetImageData();" />');
|
|
||||||
else
|
|
||||||
tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this, 1);" />');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
ImageDialog.preInit();
|
|
||||||
tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);
|
|
45
tools/tiny_mce/plugins/advimage/langs/en_dlg.js
vendored
@ -1,45 +0,0 @@
|
|||||||
tinyMCE.addI18n('en.advimage_dlg',{
|
|
||||||
tab_general:"General",
|
|
||||||
tab_appearance:"Appearance",
|
|
||||||
tab_advanced:"Advanced",
|
|
||||||
general:"General",
|
|
||||||
title:"Title",
|
|
||||||
preview:"Preview",
|
|
||||||
constrain_proportions:"Constrain proportions",
|
|
||||||
langdir:"Language direction",
|
|
||||||
langcode:"Language code",
|
|
||||||
long_desc:"Long description link",
|
|
||||||
style:"Style",
|
|
||||||
classes:"Classes",
|
|
||||||
ltr:"Left to right",
|
|
||||||
rtl:"Right to left",
|
|
||||||
id:"Id",
|
|
||||||
map:"Image map",
|
|
||||||
swap_image:"Swap image",
|
|
||||||
alt_image:"Alternative image",
|
|
||||||
mouseover:"for mouse over",
|
|
||||||
mouseout:"for mouse out",
|
|
||||||
misc:"Miscellaneous",
|
|
||||||
example_img:"Appearance preview image",
|
|
||||||
missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.",
|
|
||||||
dialog_title:"Insert/edit image",
|
|
||||||
src:"Image URL",
|
|
||||||
alt:"Image description",
|
|
||||||
list:"Image list",
|
|
||||||
border:"Border",
|
|
||||||
dimensions:"Dimensions",
|
|
||||||
width:"Width",
|
|
||||||
height:"Height",
|
|
||||||
vspace:"Vertical space",
|
|
||||||
hspace:"Horizontal space",
|
|
||||||
align:"Alignment",
|
|
||||||
align_baseline:"Baseline",
|
|
||||||
align_top:"Top",
|
|
||||||
align_middle:"Middle",
|
|
||||||
align_bottom:"Bottom",
|
|
||||||
align_texttop:"Text top",
|
|
||||||
align_textbottom:"Text bottom",
|
|
||||||
align_left:"Left",
|
|
||||||
align_right:"Right",
|
|
||||||
image_list:"Image list"
|
|
||||||
});
|
|
@ -1,8 +0,0 @@
|
|||||||
.mceLinkList, .mceAnchorList, #targetlist {width:280px;}
|
|
||||||
.mceActionPanel {margin-top:7px;}
|
|
||||||
.panel_wrapper div.current {height:320px;}
|
|
||||||
#classlist, #title, #href {width:280px;}
|
|
||||||
#popupurl, #popupname {width:200px;}
|
|
||||||
#popupwidth, #popupheight, #popupleft, #popuptop {width:30px;vertical-align:middle;text-align:center;}
|
|
||||||
#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey {width:200px;}
|
|
||||||
#events_panel input {width:200px;}
|
|
@ -1 +0,0 @@
|
|||||||
(function(){tinymce.create("tinymce.plugins.AdvancedLinkPlugin",{init:function(a,b){this.editor=a;a.addCommand("mceAdvLink",function(){var c=a.selection;if(c.isCollapsed()&&!a.dom.getParent(c.getNode(),"A")){return}a.windowManager.open({file:b+"/link.htm",width:480+parseInt(a.getLang("advlink.delta_width",0)),height:400+parseInt(a.getLang("advlink.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("link",{title:"advlink.link_desc",cmd:"mceAdvLink"});a.addShortcut("ctrl+k","advlink.advlink_desc","mceAdvLink");a.onNodeChange.add(function(d,c,f,e){c.setDisabled("link",e&&f.nodeName!="A");c.setActive("link",f.nodeName=="A"&&!f.name)})},getInfo:function(){return{longname:"Advanced link",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advlink",tinymce.plugins.AdvancedLinkPlugin)})();
|
|
@ -1,61 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2009, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
tinymce.create('tinymce.plugins.AdvancedLinkPlugin', {
|
|
||||||
init : function(ed, url) {
|
|
||||||
this.editor = ed;
|
|
||||||
|
|
||||||
// Register commands
|
|
||||||
ed.addCommand('mceAdvLink', function() {
|
|
||||||
var se = ed.selection;
|
|
||||||
|
|
||||||
// No selection and not in link
|
|
||||||
if (se.isCollapsed() && !ed.dom.getParent(se.getNode(), 'A'))
|
|
||||||
return;
|
|
||||||
|
|
||||||
ed.windowManager.open({
|
|
||||||
file : url + '/link.htm',
|
|
||||||
width : 480 + parseInt(ed.getLang('advlink.delta_width', 0)),
|
|
||||||
height : 400 + parseInt(ed.getLang('advlink.delta_height', 0)),
|
|
||||||
inline : 1
|
|
||||||
}, {
|
|
||||||
plugin_url : url
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register buttons
|
|
||||||
ed.addButton('link', {
|
|
||||||
title : 'advlink.link_desc',
|
|
||||||
cmd : 'mceAdvLink'
|
|
||||||
});
|
|
||||||
|
|
||||||
ed.addShortcut('ctrl+k', 'advlink.advlink_desc', 'mceAdvLink');
|
|
||||||
|
|
||||||
ed.onNodeChange.add(function(ed, cm, n, co) {
|
|
||||||
cm.setDisabled('link', co && n.nodeName != 'A');
|
|
||||||
cm.setActive('link', n.nodeName == 'A' && !n.name);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
getInfo : function() {
|
|
||||||
return {
|
|
||||||
longname : 'Advanced link',
|
|
||||||
author : 'Moxiecode Systems AB',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',
|
|
||||||
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register plugin
|
|
||||||
tinymce.PluginManager.add('advlink', tinymce.plugins.AdvancedLinkPlugin);
|
|
||||||
})();
|
|
528
tools/tiny_mce/plugins/advlink/js/advlink.js
vendored
@ -1,528 +0,0 @@
|
|||||||
/* Functions for the advlink plugin popup */
|
|
||||||
|
|
||||||
tinyMCEPopup.requireLangPack();
|
|
||||||
|
|
||||||
var templates = {
|
|
||||||
"window.open" : "window.open('${url}','${target}','${options}')"
|
|
||||||
};
|
|
||||||
|
|
||||||
function preinit() {
|
|
||||||
var url;
|
|
||||||
|
|
||||||
if (url = tinyMCEPopup.getParam("external_link_list_url"))
|
|
||||||
document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
|
|
||||||
}
|
|
||||||
|
|
||||||
function changeClass() {
|
|
||||||
var f = document.forms[0];
|
|
||||||
|
|
||||||
f.classes.value = getSelectValue(f, 'classlist');
|
|
||||||
}
|
|
||||||
|
|
||||||
function init() {
|
|
||||||
tinyMCEPopup.resizeToInnerSize();
|
|
||||||
|
|
||||||
var formObj = document.forms[0];
|
|
||||||
var inst = tinyMCEPopup.editor;
|
|
||||||
var elm = inst.selection.getNode();
|
|
||||||
var action = "insert";
|
|
||||||
var html;
|
|
||||||
|
|
||||||
document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink');
|
|
||||||
document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink');
|
|
||||||
document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href');
|
|
||||||
document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href');
|
|
||||||
document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target');
|
|
||||||
|
|
||||||
// Link list
|
|
||||||
html = getLinkListHTML('linklisthref','href');
|
|
||||||
if (html == "")
|
|
||||||
document.getElementById("linklisthrefrow").style.display = 'none';
|
|
||||||
else
|
|
||||||
document.getElementById("linklisthrefcontainer").innerHTML = html;
|
|
||||||
|
|
||||||
// Resize some elements
|
|
||||||
if (isVisible('hrefbrowser'))
|
|
||||||
document.getElementById('href').style.width = '260px';
|
|
||||||
|
|
||||||
if (isVisible('popupurlbrowser'))
|
|
||||||
document.getElementById('popupurl').style.width = '180px';
|
|
||||||
|
|
||||||
elm = inst.dom.getParent(elm, "A");
|
|
||||||
if (elm != null && elm.nodeName == "A")
|
|
||||||
action = "update";
|
|
||||||
|
|
||||||
formObj.insert.value = tinyMCEPopup.getLang(action, 'Insert', true);
|
|
||||||
|
|
||||||
setPopupControlsDisabled(true);
|
|
||||||
|
|
||||||
if (action == "update") {
|
|
||||||
var href = inst.dom.getAttrib(elm, 'href');
|
|
||||||
var onclick = inst.dom.getAttrib(elm, 'onclick');
|
|
||||||
|
|
||||||
// Setup form data
|
|
||||||
setFormValue('href', href);
|
|
||||||
setFormValue('title', inst.dom.getAttrib(elm, 'title'));
|
|
||||||
setFormValue('id', inst.dom.getAttrib(elm, 'id'));
|
|
||||||
setFormValue('style', inst.dom.getAttrib(elm, "style"));
|
|
||||||
setFormValue('rel', inst.dom.getAttrib(elm, 'rel'));
|
|
||||||
setFormValue('rev', inst.dom.getAttrib(elm, 'rev'));
|
|
||||||
setFormValue('charset', inst.dom.getAttrib(elm, 'charset'));
|
|
||||||
setFormValue('hreflang', inst.dom.getAttrib(elm, 'hreflang'));
|
|
||||||
setFormValue('dir', inst.dom.getAttrib(elm, 'dir'));
|
|
||||||
setFormValue('lang', inst.dom.getAttrib(elm, 'lang'));
|
|
||||||
setFormValue('tabindex', inst.dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));
|
|
||||||
setFormValue('accesskey', inst.dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));
|
|
||||||
setFormValue('type', inst.dom.getAttrib(elm, 'type'));
|
|
||||||
setFormValue('onfocus', inst.dom.getAttrib(elm, 'onfocus'));
|
|
||||||
setFormValue('onblur', inst.dom.getAttrib(elm, 'onblur'));
|
|
||||||
setFormValue('onclick', onclick);
|
|
||||||
setFormValue('ondblclick', inst.dom.getAttrib(elm, 'ondblclick'));
|
|
||||||
setFormValue('onmousedown', inst.dom.getAttrib(elm, 'onmousedown'));
|
|
||||||
setFormValue('onmouseup', inst.dom.getAttrib(elm, 'onmouseup'));
|
|
||||||
setFormValue('onmouseover', inst.dom.getAttrib(elm, 'onmouseover'));
|
|
||||||
setFormValue('onmousemove', inst.dom.getAttrib(elm, 'onmousemove'));
|
|
||||||
setFormValue('onmouseout', inst.dom.getAttrib(elm, 'onmouseout'));
|
|
||||||
setFormValue('onkeypress', inst.dom.getAttrib(elm, 'onkeypress'));
|
|
||||||
setFormValue('onkeydown', inst.dom.getAttrib(elm, 'onkeydown'));
|
|
||||||
setFormValue('onkeyup', inst.dom.getAttrib(elm, 'onkeyup'));
|
|
||||||
setFormValue('target', inst.dom.getAttrib(elm, 'target'));
|
|
||||||
setFormValue('classes', inst.dom.getAttrib(elm, 'class'));
|
|
||||||
|
|
||||||
// Parse onclick data
|
|
||||||
if (onclick != null && onclick.indexOf('window.open') != -1)
|
|
||||||
parseWindowOpen(onclick);
|
|
||||||
else
|
|
||||||
parseFunction(onclick);
|
|
||||||
|
|
||||||
// Select by the values
|
|
||||||
selectByValue(formObj, 'dir', inst.dom.getAttrib(elm, 'dir'));
|
|
||||||
selectByValue(formObj, 'rel', inst.dom.getAttrib(elm, 'rel'));
|
|
||||||
selectByValue(formObj, 'rev', inst.dom.getAttrib(elm, 'rev'));
|
|
||||||
selectByValue(formObj, 'linklisthref', href);
|
|
||||||
|
|
||||||
if (href.charAt(0) == '#')
|
|
||||||
selectByValue(formObj, 'anchorlist', href);
|
|
||||||
|
|
||||||
addClassesToList('classlist', 'advlink_styles');
|
|
||||||
|
|
||||||
selectByValue(formObj, 'classlist', inst.dom.getAttrib(elm, 'class'), true);
|
|
||||||
selectByValue(formObj, 'targetlist', inst.dom.getAttrib(elm, 'target'), true);
|
|
||||||
} else
|
|
||||||
addClassesToList('classlist', 'advlink_styles');
|
|
||||||
}
|
|
||||||
|
|
||||||
function checkPrefix(n) {
|
|
||||||
if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_email')))
|
|
||||||
n.value = 'mailto:' + n.value;
|
|
||||||
|
|
||||||
if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_external')))
|
|
||||||
n.value = 'http://' + n.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
function setFormValue(name, value) {
|
|
||||||
document.forms[0].elements[name].value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
function parseWindowOpen(onclick) {
|
|
||||||
var formObj = document.forms[0];
|
|
||||||
|
|
||||||
// Preprocess center code
|
|
||||||
if (onclick.indexOf('return false;') != -1) {
|
|
||||||
formObj.popupreturn.checked = true;
|
|
||||||
onclick = onclick.replace('return false;', '');
|
|
||||||
} else
|
|
||||||
formObj.popupreturn.checked = false;
|
|
||||||
|
|
||||||
var onClickData = parseLink(onclick);
|
|
||||||
|
|
||||||
if (onClickData != null) {
|
|
||||||
formObj.ispopup.checked = true;
|
|
||||||
setPopupControlsDisabled(false);
|
|
||||||
|
|
||||||
var onClickWindowOptions = parseOptions(onClickData['options']);
|
|
||||||
var url = onClickData['url'];
|
|
||||||
|
|
||||||
formObj.popupname.value = onClickData['target'];
|
|
||||||
formObj.popupurl.value = url;
|
|
||||||
formObj.popupwidth.value = getOption(onClickWindowOptions, 'width');
|
|
||||||
formObj.popupheight.value = getOption(onClickWindowOptions, 'height');
|
|
||||||
|
|
||||||
formObj.popupleft.value = getOption(onClickWindowOptions, 'left');
|
|
||||||
formObj.popuptop.value = getOption(onClickWindowOptions, 'top');
|
|
||||||
|
|
||||||
if (formObj.popupleft.value.indexOf('screen') != -1)
|
|
||||||
formObj.popupleft.value = "c";
|
|
||||||
|
|
||||||
if (formObj.popuptop.value.indexOf('screen') != -1)
|
|
||||||
formObj.popuptop.value = "c";
|
|
||||||
|
|
||||||
formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes";
|
|
||||||
formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes";
|
|
||||||
formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes";
|
|
||||||
formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes";
|
|
||||||
formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes";
|
|
||||||
formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes";
|
|
||||||
formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes";
|
|
||||||
|
|
||||||
buildOnClick();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function parseFunction(onclick) {
|
|
||||||
var formObj = document.forms[0];
|
|
||||||
var onClickData = parseLink(onclick);
|
|
||||||
|
|
||||||
// TODO: Add stuff here
|
|
||||||
}
|
|
||||||
|
|
||||||
function getOption(opts, name) {
|
|
||||||
return typeof(opts[name]) == "undefined" ? "" : opts[name];
|
|
||||||
}
|
|
||||||
|
|
||||||
function setPopupControlsDisabled(state) {
|
|
||||||
var formObj = document.forms[0];
|
|
||||||
|
|
||||||
formObj.popupname.disabled = state;
|
|
||||||
formObj.popupurl.disabled = state;
|
|
||||||
formObj.popupwidth.disabled = state;
|
|
||||||
formObj.popupheight.disabled = state;
|
|
||||||
formObj.popupleft.disabled = state;
|
|
||||||
formObj.popuptop.disabled = state;
|
|
||||||
formObj.popuplocation.disabled = state;
|
|
||||||
formObj.popupscrollbars.disabled = state;
|
|
||||||
formObj.popupmenubar.disabled = state;
|
|
||||||
formObj.popupresizable.disabled = state;
|
|
||||||
formObj.popuptoolbar.disabled = state;
|
|
||||||
formObj.popupstatus.disabled = state;
|
|
||||||
formObj.popupreturn.disabled = state;
|
|
||||||
formObj.popupdependent.disabled = state;
|
|
||||||
|
|
||||||
setBrowserDisabled('popupurlbrowser', state);
|
|
||||||
}
|
|
||||||
|
|
||||||
function parseLink(link) {
|
|
||||||
link = link.replace(new RegExp(''', 'g'), "'");
|
|
||||||
|
|
||||||
var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1");
|
|
||||||
|
|
||||||
// Is function name a template function
|
|
||||||
var template = templates[fnName];
|
|
||||||
if (template) {
|
|
||||||
// Build regexp
|
|
||||||
var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi"));
|
|
||||||
var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\(";
|
|
||||||
var replaceStr = "";
|
|
||||||
for (var i=0; i<variableNames.length; i++) {
|
|
||||||
// Is string value
|
|
||||||
if (variableNames[i].indexOf("'${") != -1)
|
|
||||||
regExp += "'(.*)'";
|
|
||||||
else // Number value
|
|
||||||
regExp += "([0-9]*)";
|
|
||||||
|
|
||||||
replaceStr += "$" + (i+1);
|
|
||||||
|
|
||||||
// Cleanup variable name
|
|
||||||
variableNames[i] = variableNames[i].replace(new RegExp("[^A-Za-z0-9]", "gi"), "");
|
|
||||||
|
|
||||||
if (i != variableNames.length-1) {
|
|
||||||
regExp += "\\s*,\\s*";
|
|
||||||
replaceStr += "<delim>";
|
|
||||||
} else
|
|
||||||
regExp += ".*";
|
|
||||||
}
|
|
||||||
|
|
||||||
regExp += "\\);?";
|
|
||||||
|
|
||||||
// Build variable array
|
|
||||||
var variables = [];
|
|
||||||
variables["_function"] = fnName;
|
|
||||||
var variableValues = link.replace(new RegExp(regExp, "gi"), replaceStr).split('<delim>');
|
|
||||||
for (var i=0; i<variableNames.length; i++)
|
|
||||||
variables[variableNames[i]] = variableValues[i];
|
|
||||||
|
|
||||||
return variables;
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function parseOptions(opts) {
|
|
||||||
if (opts == null || opts == "")
|
|
||||||
return [];
|
|
||||||
|
|
||||||
// Cleanup the options
|
|
||||||
opts = opts.toLowerCase();
|
|
||||||
opts = opts.replace(/;/g, ",");
|
|
||||||
opts = opts.replace(/[^0-9a-z=,]/g, "");
|
|
||||||
|
|
||||||
var optionChunks = opts.split(',');
|
|
||||||
var options = [];
|
|
||||||
|
|
||||||
for (var i=0; i<optionChunks.length; i++) {
|
|
||||||
var parts = optionChunks[i].split('=');
|
|
||||||
|
|
||||||
if (parts.length == 2)
|
|
||||||
options[parts[0]] = parts[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
return options;
|
|
||||||
}
|
|
||||||
|
|
||||||
function buildOnClick() {
|
|
||||||
var formObj = document.forms[0];
|
|
||||||
|
|
||||||
if (!formObj.ispopup.checked) {
|
|
||||||
formObj.onclick.value = "";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var onclick = "window.open('";
|
|
||||||
var url = formObj.popupurl.value;
|
|
||||||
|
|
||||||
onclick += url + "','";
|
|
||||||
onclick += formObj.popupname.value + "','";
|
|
||||||
|
|
||||||
if (formObj.popuplocation.checked)
|
|
||||||
onclick += "location=yes,";
|
|
||||||
|
|
||||||
if (formObj.popupscrollbars.checked)
|
|
||||||
onclick += "scrollbars=yes,";
|
|
||||||
|
|
||||||
if (formObj.popupmenubar.checked)
|
|
||||||
onclick += "menubar=yes,";
|
|
||||||
|
|
||||||
if (formObj.popupresizable.checked)
|
|
||||||
onclick += "resizable=yes,";
|
|
||||||
|
|
||||||
if (formObj.popuptoolbar.checked)
|
|
||||||
onclick += "toolbar=yes,";
|
|
||||||
|
|
||||||
if (formObj.popupstatus.checked)
|
|
||||||
onclick += "status=yes,";
|
|
||||||
|
|
||||||
if (formObj.popupdependent.checked)
|
|
||||||
onclick += "dependent=yes,";
|
|
||||||
|
|
||||||
if (formObj.popupwidth.value != "")
|
|
||||||
onclick += "width=" + formObj.popupwidth.value + ",";
|
|
||||||
|
|
||||||
if (formObj.popupheight.value != "")
|
|
||||||
onclick += "height=" + formObj.popupheight.value + ",";
|
|
||||||
|
|
||||||
if (formObj.popupleft.value != "") {
|
|
||||||
if (formObj.popupleft.value != "c")
|
|
||||||
onclick += "left=" + formObj.popupleft.value + ",";
|
|
||||||
else
|
|
||||||
onclick += "left='+(screen.availWidth/2-" + (formObj.popupwidth.value/2) + ")+',";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (formObj.popuptop.value != "") {
|
|
||||||
if (formObj.popuptop.value != "c")
|
|
||||||
onclick += "top=" + formObj.popuptop.value + ",";
|
|
||||||
else
|
|
||||||
onclick += "top='+(screen.availHeight/2-" + (formObj.popupheight.value/2) + ")+',";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (onclick.charAt(onclick.length-1) == ',')
|
|
||||||
onclick = onclick.substring(0, onclick.length-1);
|
|
||||||
|
|
||||||
onclick += "');";
|
|
||||||
|
|
||||||
if (formObj.popupreturn.checked)
|
|
||||||
onclick += "return false;";
|
|
||||||
|
|
||||||
// tinyMCE.debug(onclick);
|
|
||||||
|
|
||||||
formObj.onclick.value = onclick;
|
|
||||||
|
|
||||||
if (formObj.href.value == "")
|
|
||||||
formObj.href.value = url;
|
|
||||||
}
|
|
||||||
|
|
||||||
function setAttrib(elm, attrib, value) {
|
|
||||||
var formObj = document.forms[0];
|
|
||||||
var valueElm = formObj.elements[attrib.toLowerCase()];
|
|
||||||
var dom = tinyMCEPopup.editor.dom;
|
|
||||||
|
|
||||||
if (typeof(value) == "undefined" || value == null) {
|
|
||||||
value = "";
|
|
||||||
|
|
||||||
if (valueElm)
|
|
||||||
value = valueElm.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clean up the style
|
|
||||||
if (attrib == 'style')
|
|
||||||
value = dom.serializeStyle(dom.parseStyle(value), 'a');
|
|
||||||
|
|
||||||
dom.setAttrib(elm, attrib, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getAnchorListHTML(id, target) {
|
|
||||||
var inst = tinyMCEPopup.editor;
|
|
||||||
var nodes = inst.dom.select('a.mceItemAnchor,img.mceItemAnchor'), name, i;
|
|
||||||
var html = "";
|
|
||||||
|
|
||||||
html += '<select id="' + id + '" name="' + id + '" class="mceAnchorList" o2nfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target + '.value=';
|
|
||||||
html += 'this.options[this.selectedIndex].value;">';
|
|
||||||
html += '<option value="">---</option>';
|
|
||||||
|
|
||||||
for (i=0; i<nodes.length; i++) {
|
|
||||||
if ((name = inst.dom.getAttrib(nodes[i], "name")) != "")
|
|
||||||
html += '<option value="#' + name + '">' + name + '</option>';
|
|
||||||
}
|
|
||||||
|
|
||||||
html += '</select>';
|
|
||||||
|
|
||||||
return html;
|
|
||||||
}
|
|
||||||
|
|
||||||
function insertAction() {
|
|
||||||
var inst = tinyMCEPopup.editor;
|
|
||||||
var elm, elementArray, i;
|
|
||||||
|
|
||||||
elm = inst.selection.getNode();
|
|
||||||
checkPrefix(document.forms[0].href);
|
|
||||||
|
|
||||||
elm = inst.dom.getParent(elm, "A");
|
|
||||||
|
|
||||||
// Remove element if there is no href
|
|
||||||
if (!document.forms[0].href.value) {
|
|
||||||
tinyMCEPopup.execCommand("mceBeginUndoLevel");
|
|
||||||
i = inst.selection.getBookmark();
|
|
||||||
inst.dom.remove(elm, 1);
|
|
||||||
inst.selection.moveToBookmark(i);
|
|
||||||
tinyMCEPopup.execCommand("mceEndUndoLevel");
|
|
||||||
tinyMCEPopup.close();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
tinyMCEPopup.execCommand("mceBeginUndoLevel");
|
|
||||||
|
|
||||||
// Create new anchor elements
|
|
||||||
if (elm == null) {
|
|
||||||
inst.getDoc().execCommand("unlink", false, null);
|
|
||||||
tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});
|
|
||||||
|
|
||||||
elementArray = tinymce.grep(inst.dom.select("a"), function(n) {return inst.dom.getAttrib(n, 'href') == '#mce_temp_url#';});
|
|
||||||
for (i=0; i<elementArray.length; i++)
|
|
||||||
setAllAttribs(elm = elementArray[i]);
|
|
||||||
} else
|
|
||||||
setAllAttribs(elm);
|
|
||||||
|
|
||||||
// Don't move caret if selection was image
|
|
||||||
if (elm.childNodes.length != 1 || elm.firstChild.nodeName != 'IMG') {
|
|
||||||
inst.focus();
|
|
||||||
inst.selection.select(elm);
|
|
||||||
inst.selection.collapse(0);
|
|
||||||
tinyMCEPopup.storeSelection();
|
|
||||||
}
|
|
||||||
|
|
||||||
tinyMCEPopup.execCommand("mceEndUndoLevel");
|
|
||||||
tinyMCEPopup.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
function setAllAttribs(elm) {
|
|
||||||
var formObj = document.forms[0];
|
|
||||||
var href = formObj.href.value.replace(/ /g, '%20');
|
|
||||||
var target = getSelectValue(formObj, 'targetlist');
|
|
||||||
|
|
||||||
setAttrib(elm, 'href', href);
|
|
||||||
setAttrib(elm, 'title');
|
|
||||||
setAttrib(elm, 'target', target == '_self' ? '' : target);
|
|
||||||
setAttrib(elm, 'id');
|
|
||||||
setAttrib(elm, 'style');
|
|
||||||
setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));
|
|
||||||
setAttrib(elm, 'rel');
|
|
||||||
setAttrib(elm, 'rev');
|
|
||||||
setAttrib(elm, 'charset');
|
|
||||||
setAttrib(elm, 'hreflang');
|
|
||||||
setAttrib(elm, 'dir');
|
|
||||||
setAttrib(elm, 'lang');
|
|
||||||
setAttrib(elm, 'tabindex');
|
|
||||||
setAttrib(elm, 'accesskey');
|
|
||||||
setAttrib(elm, 'type');
|
|
||||||
setAttrib(elm, 'onfocus');
|
|
||||||
setAttrib(elm, 'onblur');
|
|
||||||
setAttrib(elm, 'onclick');
|
|
||||||
setAttrib(elm, 'ondblclick');
|
|
||||||
setAttrib(elm, 'onmousedown');
|
|
||||||
setAttrib(elm, 'onmouseup');
|
|
||||||
setAttrib(elm, 'onmouseover');
|
|
||||||
setAttrib(elm, 'onmousemove');
|
|
||||||
setAttrib(elm, 'onmouseout');
|
|
||||||
setAttrib(elm, 'onkeypress');
|
|
||||||
setAttrib(elm, 'onkeydown');
|
|
||||||
setAttrib(elm, 'onkeyup');
|
|
||||||
|
|
||||||
// Refresh in old MSIE
|
|
||||||
if (tinyMCE.isMSIE5)
|
|
||||||
elm.outerHTML = elm.outerHTML;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getSelectValue(form_obj, field_name) {
|
|
||||||
var elm = form_obj.elements[field_name];
|
|
||||||
|
|
||||||
if (!elm || elm.options == null || elm.selectedIndex == -1)
|
|
||||||
return "";
|
|
||||||
|
|
||||||
return elm.options[elm.selectedIndex].value;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getLinkListHTML(elm_id, target_form_element, onchange_func) {
|
|
||||||
if (typeof(tinyMCELinkList) == "undefined" || tinyMCELinkList.length == 0)
|
|
||||||
return "";
|
|
||||||
|
|
||||||
var html = "";
|
|
||||||
|
|
||||||
html += '<select id="' + elm_id + '" name="' + elm_id + '"';
|
|
||||||
html += ' class="mceLinkList" onfoc2us="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
|
|
||||||
html += 'this.options[this.selectedIndex].value;';
|
|
||||||
|
|
||||||
if (typeof(onchange_func) != "undefined")
|
|
||||||
html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';
|
|
||||||
|
|
||||||
html += '"><option value="">---</option>';
|
|
||||||
|
|
||||||
for (var i=0; i<tinyMCELinkList.length; i++)
|
|
||||||
html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';
|
|
||||||
|
|
||||||
html += '</select>';
|
|
||||||
|
|
||||||
return html;
|
|
||||||
|
|
||||||
// tinyMCE.debug('-- image list start --', html, '-- image list end --');
|
|
||||||
}
|
|
||||||
|
|
||||||
function getTargetListHTML(elm_id, target_form_element) {
|
|
||||||
var targets = tinyMCEPopup.getParam('theme_advanced_link_targets', '').split(';');
|
|
||||||
var html = '';
|
|
||||||
|
|
||||||
html += '<select id="' + elm_id + '" name="' + elm_id + '" onf2ocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
|
|
||||||
html += 'this.options[this.selectedIndex].value;">';
|
|
||||||
html += '<option value="_self">' + tinyMCEPopup.getLang('advlink_dlg.target_same') + '</option>';
|
|
||||||
html += '<option value="_blank">' + tinyMCEPopup.getLang('advlink_dlg.target_blank') + ' (_blank)</option>';
|
|
||||||
html += '<option value="_parent">' + tinyMCEPopup.getLang('advlink_dlg.target_parent') + ' (_parent)</option>';
|
|
||||||
html += '<option value="_top">' + tinyMCEPopup.getLang('advlink_dlg.target_top') + ' (_top)</option>';
|
|
||||||
|
|
||||||
for (var i=0; i<targets.length; i++) {
|
|
||||||
var key, value;
|
|
||||||
|
|
||||||
if (targets[i] == "")
|
|
||||||
continue;
|
|
||||||
|
|
||||||
key = targets[i].split('=')[0];
|
|
||||||
value = targets[i].split('=')[1];
|
|
||||||
|
|
||||||
html += '<option value="' + key + '">' + value + ' (' + key + ')</option>';
|
|
||||||
}
|
|
||||||
|
|
||||||
html += '</select>';
|
|
||||||
|
|
||||||
return html;
|
|
||||||
}
|
|
||||||
|
|
||||||
// While loading
|
|
||||||
preinit();
|
|
||||||
tinyMCEPopup.onInit.add(init);
|
|
54
tools/tiny_mce/plugins/advlink/langs/en_dlg.js
vendored
@ -1,54 +0,0 @@
|
|||||||
tinyMCE.addI18n('en.advlink_dlg',{
|
|
||||||
title:"Insert/edit link",
|
|
||||||
url:"Link URL",
|
|
||||||
target:"Target",
|
|
||||||
titlefield:"Title",
|
|
||||||
is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",
|
|
||||||
is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",
|
|
||||||
list:"Link list",
|
|
||||||
general_tab:"General",
|
|
||||||
popup_tab:"Popup",
|
|
||||||
events_tab:"Events",
|
|
||||||
advanced_tab:"Advanced",
|
|
||||||
general_props:"General properties",
|
|
||||||
popup_props:"Popup properties",
|
|
||||||
event_props:"Events",
|
|
||||||
advanced_props:"Advanced properties",
|
|
||||||
popup_opts:"Options",
|
|
||||||
anchor_names:"Anchors",
|
|
||||||
target_same:"Open in this window / frame",
|
|
||||||
target_parent:"Open in parent window / frame",
|
|
||||||
target_top:"Open in top frame (replaces all frames)",
|
|
||||||
target_blank:"Open in new window",
|
|
||||||
popup:"Javascript popup",
|
|
||||||
popup_url:"Popup URL",
|
|
||||||
popup_name:"Window name",
|
|
||||||
popup_return:"Insert 'return false'",
|
|
||||||
popup_scrollbars:"Show scrollbars",
|
|
||||||
popup_statusbar:"Show status bar",
|
|
||||||
popup_toolbar:"Show toolbars",
|
|
||||||
popup_menubar:"Show menu bar",
|
|
||||||
popup_location:"Show location bar",
|
|
||||||
popup_resizable:"Make window resizable",
|
|
||||||
popup_dependent:"Dependent (Mozilla/Firefox only)",
|
|
||||||
popup_size:"Size",
|
|
||||||
width:"Width",
|
|
||||||
height:"Height",
|
|
||||||
popup_position:"Position (X/Y)",
|
|
||||||
id:"Id",
|
|
||||||
style:"Style",
|
|
||||||
classes:"Classes",
|
|
||||||
target_name:"Target name",
|
|
||||||
langdir:"Language direction",
|
|
||||||
target_langcode:"Target language",
|
|
||||||
langcode:"Language code",
|
|
||||||
encoding:"Target character encoding",
|
|
||||||
mime:"Target MIME type",
|
|
||||||
rel:"Relationship page to target",
|
|
||||||
rev:"Relationship target to page",
|
|
||||||
tabindex:"Tabindex",
|
|
||||||
accesskey:"Accesskey",
|
|
||||||
ltr:"Left to right",
|
|
||||||
rtl:"Right to left",
|
|
||||||
link_list:"Link list"
|
|
||||||
});
|
|
338
tools/tiny_mce/plugins/advlink/link.htm
vendored
@ -1,338 +0,0 @@
|
|||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title>{#advlink_dlg.title}</title>
|
|
||||||
<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
|
|
||||||
<script type="text/javascript" src="../../utils/mctabs.js"></script>
|
|
||||||
<script type="text/javascript" src="../../utils/form_utils.js"></script>
|
|
||||||
<script type="text/javascript" src="../../utils/validate.js"></script>
|
|
||||||
<script type="text/javascript" src="js/advlink.js"></script>
|
|
||||||
<link href="css/advlink.css" rel="stylesheet" type="text/css" />
|
|
||||||
</head>
|
|
||||||
<body id="advlink" style="display: none" role="application" onload="javascript:mcTabs.displayTab('general_tab','general_panel', true);" aria-labelledby="app_label">
|
|
||||||
<span class="mceVoiceLabel" id="app_label" style="display:none;">{#advlink_dlg.title}</span>
|
|
||||||
<form onsubmit="insertAction();return false;" action="#">
|
|
||||||
<div class="tabs" role="presentation">
|
|
||||||
<ul>
|
|
||||||
<li id="general_tab" class="current" aria-controls="general_panel" ><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advlink_dlg.general_tab}</a></span></li>
|
|
||||||
<li id="popup_tab" aria-controls="popup_panel" ><span><a href="javascript:mcTabs.displayTab('popup_tab','popup_panel');" onmousedown="return false;">{#advlink_dlg.popup_tab}</a></span></li>
|
|
||||||
<li id="events_tab" aria-controls="events_panel"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#advlink_dlg.events_tab}</a></span></li>
|
|
||||||
<li id="advanced_tab" aria-controls="advanced_panel"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#advlink_dlg.advanced_tab}</a></span></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="panel_wrapper" role="presentation">
|
|
||||||
<div id="general_panel" class="panel current">
|
|
||||||
<fieldset>
|
|
||||||
<legend>{#advlink_dlg.general_props}</legend>
|
|
||||||
|
|
||||||
<table border="0" cellpadding="4" cellspacing="0" role="presentation">
|
|
||||||
<tr>
|
|
||||||
<td class="nowrap"><label id="hreflabel" for="href">{#advlink_dlg.url}</label></td>
|
|
||||||
<td><table border="0" cellspacing="0" cellpadding="0">
|
|
||||||
<tr>
|
|
||||||
<td><input id="href" name="href" type="text" class="mceFocus" value="" onchange="selectByValue(this.form,'linklisthref',this.value);" aria-required="true" /></td>
|
|
||||||
<td id="hrefbrowsercontainer"> </td>
|
|
||||||
</tr>
|
|
||||||
</table></td>
|
|
||||||
</tr>
|
|
||||||
<tr id="linklisthrefrow">
|
|
||||||
<td class="column1"><label for="linklisthref">{#advlink_dlg.list}</label></td>
|
|
||||||
<td colspan="2" id="linklisthrefcontainer"><select id="linklisthref"><option value=""></option></select></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="anchorlist">{#advlink_dlg.anchor_names}</label></td>
|
|
||||||
<td colspan="2" id="anchorlistcontainer"><select id="anchorlist"><option value=""></option></select></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><label id="targetlistlabel" for="targetlist">{#advlink_dlg.target}</label></td>
|
|
||||||
<td id="targetlistcontainer"><select id="targetlist"><option value=""></option></select></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="nowrap"><label id="titlelabel" for="title">{#advlink_dlg.titlefield}</label></td>
|
|
||||||
<td><input id="title" name="title" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><label id="classlabel" for="classlist">{#class_name}</label></td>
|
|
||||||
<td>
|
|
||||||
<select id="classlist" name="classlist" onchange="changeClass();">
|
|
||||||
<option value="" selected="selected">{#not_set}</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="popup_panel" class="panel">
|
|
||||||
<fieldset>
|
|
||||||
<legend>{#advlink_dlg.popup_props}</legend>
|
|
||||||
|
|
||||||
<input type="checkbox" id="ispopup" name="ispopup" class="radio" onclick="setPopupControlsDisabled(!this.checked);buildOnClick();" />
|
|
||||||
<label id="ispopuplabel" for="ispopup">{#advlink_dlg.popup}</label>
|
|
||||||
|
|
||||||
<table border="0" cellpadding="0" cellspacing="4" role="presentation" >
|
|
||||||
<tr>
|
|
||||||
<td class="nowrap"><label for="popupurl">{#advlink_dlg.popup_url}</label> </td>
|
|
||||||
<td>
|
|
||||||
<table border="0" cellspacing="0" cellpadding="0">
|
|
||||||
<tr>
|
|
||||||
<td><input type="text" name="popupurl" id="popupurl" value="" onchange="buildOnClick();" /></td>
|
|
||||||
<td id="popupurlbrowsercontainer"> </td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="nowrap"><label for="popupname">{#advlink_dlg.popup_name}</label> </td>
|
|
||||||
<td><input type="text" name="popupname" id="popupname" value="" onchange="buildOnClick();" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr role="group" aria-labelledby="popup_size_label">
|
|
||||||
<td class="nowrap"><label id="popup_size_label">{#advlink_dlg.popup_size}</label> </td>
|
|
||||||
<td class="nowrap">
|
|
||||||
<span style="display:none" id="width_voiceLabel">{#advlink_dlg.width}</span>
|
|
||||||
<input type="text" id="popupwidth" name="popupwidth" value="" onchange="buildOnClick();" aria-labelledby="width_voiceLabel" /> x
|
|
||||||
<span style="display:none" id="height_voiceLabel">{#advlink_dlg.height}</span>
|
|
||||||
<input type="text" id="popupheight" name="popupheight" value="" onchange="buildOnClick();" aria-labelledby="height_voiceLabel" /> px
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr role="group" aria-labelledby="popup_position_label center_hint">
|
|
||||||
<td class="nowrap" id="labelleft"><label id="popup_position_label">{#advlink_dlg.popup_position}</label> </td>
|
|
||||||
<td class="nowrap">
|
|
||||||
<span style="display:none" id="x_voiceLabel">X</span>
|
|
||||||
<input type="text" id="popupleft" name="popupleft" value="" onchange="buildOnClick();" aria-labelledby="x_voiceLabel" /> /
|
|
||||||
<span style="display:none" id="y_voiceLabel">Y</span>
|
|
||||||
<input type="text" id="popuptop" name="popuptop" value="" onchange="buildOnClick();" aria-labelledby="y_voiceLabel" /> <span id="center_hint">(c /c = center)</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{#advlink_dlg.popup_opts}</legend>
|
|
||||||
|
|
||||||
<table border="0" cellpadding="0" cellspacing="4" role="presentation" >
|
|
||||||
<tr>
|
|
||||||
<td><input type="checkbox" id="popuplocation" name="popuplocation" class="checkbox" onchange="buildOnClick();" /></td>
|
|
||||||
<td class="nowrap"><label id="popuplocationlabel" for="popuplocation">{#advlink_dlg.popup_location}</label></td>
|
|
||||||
<td><input type="checkbox" id="popupscrollbars" name="popupscrollbars" class="checkbox" onchange="buildOnClick();" /></td>
|
|
||||||
<td class="nowrap"><label id="popupscrollbarslabel" for="popupscrollbars">{#advlink_dlg.popup_scrollbars}</label></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><input type="checkbox" id="popupmenubar" name="popupmenubar" class="checkbox" onchange="buildOnClick();" /></td>
|
|
||||||
<td class="nowrap"><label id="popupmenubarlabel" for="popupmenubar">{#advlink_dlg.popup_menubar}</label></td>
|
|
||||||
<td><input type="checkbox" id="popupresizable" name="popupresizable" class="checkbox" onchange="buildOnClick();" /></td>
|
|
||||||
<td class="nowrap"><label id="popupresizablelabel" for="popupresizable">{#advlink_dlg.popup_resizable}</label></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><input type="checkbox" id="popuptoolbar" name="popuptoolbar" class="checkbox" onchange="buildOnClick();" /></td>
|
|
||||||
<td class="nowrap"><label id="popuptoolbarlabel" for="popuptoolbar">{#advlink_dlg.popup_toolbar}</label></td>
|
|
||||||
<td><input type="checkbox" id="popupdependent" name="popupdependent" class="checkbox" onchange="buildOnClick();" /></td>
|
|
||||||
<td class="nowrap"><label id="popupdependentlabel" for="popupdependent">{#advlink_dlg.popup_dependent}</label></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><input type="checkbox" id="popupstatus" name="popupstatus" class="checkbox" onchange="buildOnClick();" /></td>
|
|
||||||
<td class="nowrap"><label id="popupstatuslabel" for="popupstatus">{#advlink_dlg.popup_statusbar}</label></td>
|
|
||||||
<td><input type="checkbox" id="popupreturn" name="popupreturn" class="checkbox" onchange="buildOnClick();" checked="checked" /></td>
|
|
||||||
<td class="nowrap"><label id="popupreturnlabel" for="popupreturn">{#advlink_dlg.popup_return}</label></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</fieldset>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="advanced_panel" class="panel">
|
|
||||||
<fieldset>
|
|
||||||
<legend>{#advlink_dlg.advanced_props}</legend>
|
|
||||||
|
|
||||||
<table border="0" cellpadding="0" cellspacing="4" role="presentation" >
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label id="idlabel" for="id">{#advlink_dlg.id}</label></td>
|
|
||||||
<td><input id="id" name="id" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><label id="stylelabel" for="style">{#advlink_dlg.style}</label></td>
|
|
||||||
<td><input type="text" id="style" name="style" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><label id="classeslabel" for="classes">{#advlink_dlg.classes}</label></td>
|
|
||||||
<td><input type="text" id="classes" name="classes" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><label id="targetlabel" for="target">{#advlink_dlg.target_name}</label></td>
|
|
||||||
<td><input type="text" id="target" name="target" value="" onchange="selectByValue(this.form,'targetlist',this.value,true);" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label id="dirlabel" for="dir">{#advlink_dlg.langdir}</label></td>
|
|
||||||
<td>
|
|
||||||
<select id="dir" name="dir">
|
|
||||||
<option value="">{#not_set}</option>
|
|
||||||
<option value="ltr">{#advlink_dlg.ltr}</option>
|
|
||||||
<option value="rtl">{#advlink_dlg.rtl}</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><label id="hreflanglabel" for="hreflang">{#advlink_dlg.target_langcode}</label></td>
|
|
||||||
<td><input type="text" id="hreflang" name="hreflang" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label id="langlabel" for="lang">{#advlink_dlg.langcode}</label></td>
|
|
||||||
<td>
|
|
||||||
<input id="lang" name="lang" type="text" value="" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><label id="charsetlabel" for="charset">{#advlink_dlg.encoding}</label></td>
|
|
||||||
<td><input type="text" id="charset" name="charset" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><label id="typelabel" for="type">{#advlink_dlg.mime}</label></td>
|
|
||||||
<td><input type="text" id="type" name="type" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><label id="rellabel" for="rel">{#advlink_dlg.rel}</label></td>
|
|
||||||
<td><select id="rel" name="rel">
|
|
||||||
<option value="">{#not_set}</option>
|
|
||||||
<option value="lightbox">Lightbox</option>
|
|
||||||
<option value="alternate">Alternate</option>
|
|
||||||
<option value="designates">Designates</option>
|
|
||||||
<option value="stylesheet">Stylesheet</option>
|
|
||||||
<option value="start">Start</option>
|
|
||||||
<option value="next">Next</option>
|
|
||||||
<option value="prev">Prev</option>
|
|
||||||
<option value="contents">Contents</option>
|
|
||||||
<option value="index">Index</option>
|
|
||||||
<option value="glossary">Glossary</option>
|
|
||||||
<option value="copyright">Copyright</option>
|
|
||||||
<option value="chapter">Chapter</option>
|
|
||||||
<option value="subsection">Subsection</option>
|
|
||||||
<option value="appendix">Appendix</option>
|
|
||||||
<option value="help">Help</option>
|
|
||||||
<option value="bookmark">Bookmark</option>
|
|
||||||
<option value="nofollow">No Follow</option>
|
|
||||||
<option value="tag">Tag</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><label id="revlabel" for="rev">{#advlink_dlg.rev}</label></td>
|
|
||||||
<td><select id="rev" name="rev">
|
|
||||||
<option value="">{#not_set}</option>
|
|
||||||
<option value="alternate">Alternate</option>
|
|
||||||
<option value="designates">Designates</option>
|
|
||||||
<option value="stylesheet">Stylesheet</option>
|
|
||||||
<option value="start">Start</option>
|
|
||||||
<option value="next">Next</option>
|
|
||||||
<option value="prev">Prev</option>
|
|
||||||
<option value="contents">Contents</option>
|
|
||||||
<option value="index">Index</option>
|
|
||||||
<option value="glossary">Glossary</option>
|
|
||||||
<option value="copyright">Copyright</option>
|
|
||||||
<option value="chapter">Chapter</option>
|
|
||||||
<option value="subsection">Subsection</option>
|
|
||||||
<option value="appendix">Appendix</option>
|
|
||||||
<option value="help">Help</option>
|
|
||||||
<option value="bookmark">Bookmark</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><label id="tabindexlabel" for="tabindex">{#advlink_dlg.tabindex}</label></td>
|
|
||||||
<td><input type="text" id="tabindex" name="tabindex" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><label id="accesskeylabel" for="accesskey">{#advlink_dlg.accesskey}</label></td>
|
|
||||||
<td><input type="text" id="accesskey" name="accesskey" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="events_panel" class="panel">
|
|
||||||
<fieldset>
|
|
||||||
<legend>{#advlink_dlg.event_props}</legend>
|
|
||||||
|
|
||||||
<table border="0" cellpadding="0" cellspacing="4" role="presentation" >
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="onfocus">onfocus</label></td>
|
|
||||||
<td><input id="onfocus" name="onfocus" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="onblur">onblur</label></td>
|
|
||||||
<td><input id="onblur" name="onblur" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="onclick">onclick</label></td>
|
|
||||||
<td><input id="onclick" name="onclick" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="ondblclick">ondblclick</label></td>
|
|
||||||
<td><input id="ondblclick" name="ondblclick" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="onmousedown">onmousedown</label></td>
|
|
||||||
<td><input id="onmousedown" name="onmousedown" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="onmouseup">onmouseup</label></td>
|
|
||||||
<td><input id="onmouseup" name="onmouseup" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="onmouseover">onmouseover</label></td>
|
|
||||||
<td><input id="onmouseover" name="onmouseover" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="onmousemove">onmousemove</label></td>
|
|
||||||
<td><input id="onmousemove" name="onmousemove" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="onmouseout">onmouseout</label></td>
|
|
||||||
<td><input id="onmouseout" name="onmouseout" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="onkeypress">onkeypress</label></td>
|
|
||||||
<td><input id="onkeypress" name="onkeypress" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="onkeydown">onkeydown</label></td>
|
|
||||||
<td><input id="onkeydown" name="onkeydown" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="onkeyup">onkeyup</label></td>
|
|
||||||
<td><input id="onkeyup" name="onkeyup" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceActionPanel">
|
|
||||||
<input type="submit" id="insert" name="insert" value="{#insert}" />
|
|
||||||
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1 +0,0 @@
|
|||||||
(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.AdvListPlugin",{init:function(b,c){var d=this;d.editor=b;function e(g){var f=[];a(g.split(/,/),function(h){f.push({title:"advlist."+(h=="default"?"def":h.replace(/-/g,"_")),styles:{listStyleType:h=="default"?"":h}})});return f}d.numlist=b.getParam("advlist_number_styles")||e("default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");d.bullist=b.getParam("advlist_bullet_styles")||e("default,circle,disc,square")},createControl:function(d,b){var f=this,e,h;if(d=="numlist"||d=="bullist"){if(f[d][0].title=="advlist.def"){h=f[d][0]}function c(i,k){var j=true;a(k.styles,function(m,l){if(f.editor.dom.getStyle(i,l)!=m){j=false;return false}});return j}function g(){var k,i=f.editor,l=i.dom,j=i.selection;k=l.getParent(j.getNode(),"ol,ul");if(!k||k.nodeName==(d=="bullist"?"OL":"UL")||c(k,h)){i.execCommand(d=="bullist"?"InsertUnorderedList":"InsertOrderedList")}if(h){k=l.getParent(j.getNode(),"ol,ul");if(k){l.setStyles(k,h.styles);k.removeAttribute("_mce_style")}}i.focus()}e=b.createSplitButton(d,{title:"advanced."+d+"_desc","class":"mce_"+d,onclick:function(){g()}});e.onRenderMenu.add(function(i,j){j.onShowMenu.add(function(){var m=f.editor.dom,l=m.getParent(f.editor.selection.getNode(),"ol,ul"),k;if(l||h){k=f[d];a(j.items,function(n){var o=true;n.setSelected(0);if(l&&!n.isDisabled()){a(k,function(p){if(p.id==n.id){if(!c(l,p)){o=false;return false}}});if(o){n.setSelected(1)}}});if(!l){j.items[h.id].setSelected(1)}}});j.add({id:f.editor.dom.uniqueId(),title:"advlist.types","class":"mceMenuItemTitle",titleItem:true}).setDisabled(1);a(f[d],function(k){k.id=f.editor.dom.uniqueId();j.add({id:k.id,title:k.title,onclick:function(){h=k;g()}})})});return e}},getInfo:function(){return{longname:"Advanced lists",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlist",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advlist",tinymce.plugins.AdvListPlugin)})();
|
|
154
tools/tiny_mce/plugins/advlist/editor_plugin_src.js
vendored
@ -1,154 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2009, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
var each = tinymce.each;
|
|
||||||
|
|
||||||
tinymce.create('tinymce.plugins.AdvListPlugin', {
|
|
||||||
init : function(ed, url) {
|
|
||||||
var t = this;
|
|
||||||
|
|
||||||
t.editor = ed;
|
|
||||||
|
|
||||||
function buildFormats(str) {
|
|
||||||
var formats = [];
|
|
||||||
|
|
||||||
each(str.split(/,/), function(type) {
|
|
||||||
formats.push({
|
|
||||||
title : 'advlist.' + (type == 'default' ? 'def' : type.replace(/-/g, '_')),
|
|
||||||
styles : {
|
|
||||||
listStyleType : type == 'default' ? '' : type
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
return formats;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Setup number formats from config or default
|
|
||||||
t.numlist = ed.getParam("advlist_number_styles") || buildFormats("default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");
|
|
||||||
t.bullist = ed.getParam("advlist_bullet_styles") || buildFormats("default,circle,disc,square");
|
|
||||||
},
|
|
||||||
|
|
||||||
createControl: function(name, cm) {
|
|
||||||
var t = this, btn, format;
|
|
||||||
|
|
||||||
if (name == 'numlist' || name == 'bullist') {
|
|
||||||
// Default to first item if it's a default item
|
|
||||||
if (t[name][0].title == 'advlist.def')
|
|
||||||
format = t[name][0];
|
|
||||||
|
|
||||||
function hasFormat(node, format) {
|
|
||||||
var state = true;
|
|
||||||
|
|
||||||
each(format.styles, function(value, name) {
|
|
||||||
// Format doesn't match
|
|
||||||
if (t.editor.dom.getStyle(node, name) != value) {
|
|
||||||
state = false;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return state;
|
|
||||||
};
|
|
||||||
|
|
||||||
function applyListFormat() {
|
|
||||||
var list, ed = t.editor, dom = ed.dom, sel = ed.selection;
|
|
||||||
|
|
||||||
// Check for existing list element
|
|
||||||
list = dom.getParent(sel.getNode(), 'ol,ul');
|
|
||||||
|
|
||||||
// Switch/add list type if needed
|
|
||||||
if (!list || list.nodeName == (name == 'bullist' ? 'OL' : 'UL') || hasFormat(list, format))
|
|
||||||
ed.execCommand(name == 'bullist' ? 'InsertUnorderedList' : 'InsertOrderedList');
|
|
||||||
|
|
||||||
// Append styles to new list element
|
|
||||||
if (format) {
|
|
||||||
list = dom.getParent(sel.getNode(), 'ol,ul');
|
|
||||||
if (list) {
|
|
||||||
dom.setStyles(list, format.styles);
|
|
||||||
list.removeAttribute('_mce_style');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ed.focus();
|
|
||||||
};
|
|
||||||
|
|
||||||
btn = cm.createSplitButton(name, {
|
|
||||||
title : 'advanced.' + name + '_desc',
|
|
||||||
'class' : 'mce_' + name,
|
|
||||||
onclick : function() {
|
|
||||||
applyListFormat();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
btn.onRenderMenu.add(function(btn, menu) {
|
|
||||||
menu.onShowMenu.add(function() {
|
|
||||||
var dom = t.editor.dom, list = dom.getParent(t.editor.selection.getNode(), 'ol,ul'), fmtList;
|
|
||||||
|
|
||||||
if (list || format) {
|
|
||||||
fmtList = t[name];
|
|
||||||
|
|
||||||
// Unselect existing items
|
|
||||||
each(menu.items, function(item) {
|
|
||||||
var state = true;
|
|
||||||
|
|
||||||
item.setSelected(0);
|
|
||||||
|
|
||||||
if (list && !item.isDisabled()) {
|
|
||||||
each(fmtList, function(fmt) {
|
|
||||||
if (fmt.id == item.id) {
|
|
||||||
if (!hasFormat(list, fmt)) {
|
|
||||||
state = false;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (state)
|
|
||||||
item.setSelected(1);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Select the current format
|
|
||||||
if (!list)
|
|
||||||
menu.items[format.id].setSelected(1);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
menu.add({id : t.editor.dom.uniqueId(), title : 'advlist.types', 'class' : 'mceMenuItemTitle', titleItem: true}).setDisabled(1);
|
|
||||||
|
|
||||||
each(t[name], function(item) {
|
|
||||||
item.id = t.editor.dom.uniqueId();
|
|
||||||
|
|
||||||
menu.add({id : item.id, title : item.title, onclick : function() {
|
|
||||||
format = item;
|
|
||||||
applyListFormat();
|
|
||||||
}});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
return btn;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
getInfo : function() {
|
|
||||||
return {
|
|
||||||
longname : 'Advanced lists',
|
|
||||||
author : 'Moxiecode Systems AB',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlist',
|
|
||||||
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register plugin
|
|
||||||
tinymce.PluginManager.add('advlist', tinymce.plugins.AdvListPlugin);
|
|
||||||
})();
|
|
@ -1 +0,0 @@
|
|||||||
(function(){tinymce.create("tinymce.plugins.AutolinkPlugin",{init:function(a,b){var c=this;if(tinyMCE.isIE){return}a.onKeyDown.add(function(d,f){if(f.keyCode==13){return c.handleEnter(d)}if(f.shiftKey&&f.keyCode==48){return c.handleEclipse(d)}});a.onKeyUp.add(function(d,f){if(f.keyCode==32){return c.handleSpacebar(d)}})},handleEclipse:function(a){this.parseCurrentLine(a,-1,"(",true)},handleSpacebar:function(a){this.parseCurrentLine(a,0,"",true)},handleEnter:function(a){this.parseCurrentLine(a,-1,"",false)},parseCurrentLine:function(i,d,b,g){var a,f,c,n,k,m,h,e,j;a=i.selection.getRng().cloneRange();if(a.startOffset<5){e=a.endContainer.previousSibling;if(e==null){if(a.endContainer.firstChild==null||a.endContainer.firstChild.nextSibling==null){return}e=a.endContainer.firstChild.nextSibling}j=e.length;a.setStart(e,j);a.setEnd(e,j);if(a.endOffset<5){return}f=a.endOffset;n=e}else{f=a.endOffset-1-d;n=a.endContainer}c=f;do{a.setStart(n,f-2);a.setEnd(n,f-1);f-=1}while(a.toString()!=" "&&a.toString()!=""&&a.toString().charCodeAt(0)!=160&&(f-2)>=0&&a.toString()!=b);if(a.toString()==b||a.toString().charCodeAt(0)==160){a.setStart(n,f);a.setEnd(n,c);f+=1}else{if(a.startOffset==0){a.setStart(n,0);a.setEnd(n,c)}else{a.setStart(n,f);a.setEnd(n,c)}}m=a.toString();h=m.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)(.+)$/i);if(h){if(h[1]=="www."){h[1]="http://www."}k=i.selection.getBookmark();i.selection.setRng(a);tinyMCE.execCommand("mceInsertLink",false,h[1]+h[2]);i.selection.moveToBookmark(k);if(tinyMCE.isWebKit){i.selection.collapse(false);var l=Math.min(n.length,c+1);a.setStart(n,l);a.setEnd(n,l);i.selection.setRng(a)}}},getInfo:function(){return{longname:"Autolink",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autolink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autolink",tinymce.plugins.AutolinkPlugin)})();
|
|
156
tools/tiny_mce/plugins/autolink/editor_plugin_src.js
vendored
@ -1,156 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2011, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
tinymce.create('tinymce.plugins.AutolinkPlugin', {
|
|
||||||
/**
|
|
||||||
* Initializes the plugin, this will be executed after the plugin has been created.
|
|
||||||
* This call is done before the editor instance has finished it's initialization so use the onInit event
|
|
||||||
* of the editor instance to intercept that event.
|
|
||||||
*
|
|
||||||
* @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
|
|
||||||
* @param {string} url Absolute URL to where the plugin is located.
|
|
||||||
*/
|
|
||||||
|
|
||||||
init : function(ed, url) {
|
|
||||||
var t = this;
|
|
||||||
|
|
||||||
// Internet Explorer has built-in automatic linking
|
|
||||||
if (tinyMCE.isIE)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Add a key down handler
|
|
||||||
ed.onKeyDown.add(function(ed, e) {
|
|
||||||
if (e.keyCode == 13)
|
|
||||||
return t.handleEnter(ed);
|
|
||||||
if (e.shiftKey && e.keyCode == 48)
|
|
||||||
return t.handleEclipse(ed);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Add a key up handler
|
|
||||||
ed.onKeyUp.add(function(ed, e) {
|
|
||||||
if (e.keyCode == 32)
|
|
||||||
return t.handleSpacebar(ed);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
handleEclipse : function(ed) {
|
|
||||||
this.parseCurrentLine(ed, -1, '(', true);
|
|
||||||
},
|
|
||||||
|
|
||||||
handleSpacebar : function(ed) {
|
|
||||||
this.parseCurrentLine(ed, 0, '', true);
|
|
||||||
},
|
|
||||||
|
|
||||||
handleEnter : function(ed) {
|
|
||||||
this.parseCurrentLine(ed, -1, '', false);
|
|
||||||
},
|
|
||||||
|
|
||||||
parseCurrentLine : function(ed, end_offset, delimiter, goback) {
|
|
||||||
var r, end, start, endContainer, bookmark, text, matches, prev, len;
|
|
||||||
|
|
||||||
// We need at least five characters to form a URL,
|
|
||||||
// hence, at minimum, five characters from the beginning of the line.
|
|
||||||
r = ed.selection.getRng().cloneRange();
|
|
||||||
if (r.startOffset < 5) {
|
|
||||||
// During testing, the caret is placed inbetween two text nodes.
|
|
||||||
// The previous text node contains the URL.
|
|
||||||
prev = r.endContainer.previousSibling;
|
|
||||||
if (prev == null) {
|
|
||||||
if (r.endContainer.firstChild == null || r.endContainer.firstChild.nextSibling == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
prev = r.endContainer.firstChild.nextSibling;
|
|
||||||
}
|
|
||||||
len = prev.length;
|
|
||||||
r.setStart(prev, len);
|
|
||||||
r.setEnd(prev, len);
|
|
||||||
|
|
||||||
if (r.endOffset < 5)
|
|
||||||
return;
|
|
||||||
|
|
||||||
end = r.endOffset;
|
|
||||||
endContainer = prev;
|
|
||||||
} else {
|
|
||||||
end = r.endOffset - 1 - end_offset;
|
|
||||||
endContainer = r.endContainer;
|
|
||||||
}
|
|
||||||
|
|
||||||
start = end;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
// Move the selection one character backwards.
|
|
||||||
r.setStart(endContainer, end - 2);
|
|
||||||
r.setEnd(endContainer, end - 1);
|
|
||||||
end -= 1;
|
|
||||||
|
|
||||||
// Loop until one of the following is found: a blank space, , delimeter, (end-2) >= 0
|
|
||||||
} while (r.toString() != ' ' && r.toString() != '' && r.toString().charCodeAt(0) != 160 && (end -2) >= 0 && r.toString() != delimiter);
|
|
||||||
|
|
||||||
if (r.toString() == delimiter || r.toString().charCodeAt(0) == 160) {
|
|
||||||
r.setStart(endContainer, end);
|
|
||||||
r.setEnd(endContainer, start);
|
|
||||||
end += 1;
|
|
||||||
} else if (r.startOffset == 0) {
|
|
||||||
r.setStart(endContainer, 0);
|
|
||||||
r.setEnd(endContainer, start);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
r.setStart(endContainer, end);
|
|
||||||
r.setEnd(endContainer, start);
|
|
||||||
}
|
|
||||||
|
|
||||||
text = r.toString();
|
|
||||||
matches = text.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)(.+)$/i);
|
|
||||||
|
|
||||||
if (matches) {
|
|
||||||
if (matches[1] == 'www.') {
|
|
||||||
matches[1] = 'http://www.';
|
|
||||||
}
|
|
||||||
|
|
||||||
bookmark = ed.selection.getBookmark();
|
|
||||||
|
|
||||||
ed.selection.setRng(r);
|
|
||||||
tinyMCE.execCommand('mceInsertLink',false, matches[1] + matches[2]);
|
|
||||||
ed.selection.moveToBookmark(bookmark);
|
|
||||||
|
|
||||||
// TODO: Determine if this is still needed.
|
|
||||||
if (tinyMCE.isWebKit) {
|
|
||||||
// move the caret to its original position
|
|
||||||
ed.selection.collapse(false);
|
|
||||||
var max = Math.min(endContainer.length, start + 1);
|
|
||||||
r.setStart(endContainer, max);
|
|
||||||
r.setEnd(endContainer, max);
|
|
||||||
ed.selection.setRng(r);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns information about the plugin as a name/value array.
|
|
||||||
* The current keys are longname, author, authorurl, infourl and version.
|
|
||||||
*
|
|
||||||
* @return {Object} Name/value array containing information about the plugin.
|
|
||||||
*/
|
|
||||||
getInfo : function() {
|
|
||||||
return {
|
|
||||||
longname : 'Autolink',
|
|
||||||
author : 'Moxiecode Systems AB',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autolink',
|
|
||||||
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register plugin
|
|
||||||
tinymce.PluginManager.add('autolink', tinymce.plugins.AutolinkPlugin);
|
|
||||||
})();
|
|
@ -1 +0,0 @@
|
|||||||
(function(){tinymce.create("tinymce.plugins.AutoResizePlugin",{init:function(a,c){var d=this;if(a.getParam("fullscreen_is_enabled")){return}function b(){var h=a.getDoc(),e=h.body,j=h.documentElement,g=tinymce.DOM,i=d.autoresize_min_height,f;f=tinymce.isIE?e.scrollHeight:j.offsetHeight;if(f>d.autoresize_min_height){i=f}g.setStyle(g.get(a.id+"_ifr"),"height",i+"px");if(d.throbbing){a.setProgressState(false);a.setProgressState(true)}}d.editor=a;d.autoresize_min_height=a.getElement().offsetHeight;a.onChange.add(b);a.onSetContent.add(b);a.onPaste.add(b);a.onKeyUp.add(b);a.onPostRender.add(b);if(a.getParam("autoresize_on_init",true)){a.onInit.add(function(f,e){f.setProgressState(true);d.throbbing=true;f.getBody().style.overflowY="hidden"});a.onLoadContent.add(function(f,e){b();setTimeout(function(){b();f.setProgressState(false);d.throbbing=false},1250)})}a.addCommand("mceAutoResize",b)},getInfo:function(){return{longname:"Auto Resize",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autoresize",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autoresize",tinymce.plugins.AutoResizePlugin)})();
|
|
@ -1,119 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2009, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
/**
|
|
||||||
* Auto Resize
|
|
||||||
*
|
|
||||||
* This plugin automatically resizes the content area to fit its content height.
|
|
||||||
* It will retain a minimum height, which is the height of the content area when
|
|
||||||
* it's initialized.
|
|
||||||
*/
|
|
||||||
tinymce.create('tinymce.plugins.AutoResizePlugin', {
|
|
||||||
/**
|
|
||||||
* Initializes the plugin, this will be executed after the plugin has been created.
|
|
||||||
* This call is done before the editor instance has finished it's initialization so use the onInit event
|
|
||||||
* of the editor instance to intercept that event.
|
|
||||||
*
|
|
||||||
* @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
|
|
||||||
* @param {string} url Absolute URL to where the plugin is located.
|
|
||||||
*/
|
|
||||||
init : function(ed, url) {
|
|
||||||
var t = this;
|
|
||||||
|
|
||||||
if (ed.getParam('fullscreen_is_enabled'))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method gets executed each time the editor needs to resize.
|
|
||||||
*/
|
|
||||||
function resize() {
|
|
||||||
var d = ed.getDoc(), b = d.body, de = d.documentElement, DOM = tinymce.DOM, resizeHeight = t.autoresize_min_height, myHeight;
|
|
||||||
|
|
||||||
// Get height differently depending on the browser used
|
|
||||||
myHeight = tinymce.isIE ? b.scrollHeight : de.offsetHeight;
|
|
||||||
|
|
||||||
// Don't make it smaller than the minimum height
|
|
||||||
if (myHeight > t.autoresize_min_height)
|
|
||||||
resizeHeight = myHeight;
|
|
||||||
|
|
||||||
// Resize content element
|
|
||||||
DOM.setStyle(DOM.get(ed.id + '_ifr'), 'height', resizeHeight + 'px');
|
|
||||||
|
|
||||||
// if we're throbbing, we'll re-throb to match the new size
|
|
||||||
if (t.throbbing) {
|
|
||||||
ed.setProgressState(false);
|
|
||||||
ed.setProgressState(true);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
t.editor = ed;
|
|
||||||
|
|
||||||
// Define minimum height
|
|
||||||
t.autoresize_min_height = ed.getElement().offsetHeight;
|
|
||||||
|
|
||||||
// Add appropriate listeners for resizing content area
|
|
||||||
ed.onChange.add(resize);
|
|
||||||
ed.onSetContent.add(resize);
|
|
||||||
ed.onPaste.add(resize);
|
|
||||||
ed.onKeyUp.add(resize);
|
|
||||||
ed.onPostRender.add(resize);
|
|
||||||
|
|
||||||
if (ed.getParam('autoresize_on_init', true)) {
|
|
||||||
// Things to do when the editor is ready
|
|
||||||
ed.onInit.add(function(ed, l) {
|
|
||||||
// Show throbber until content area is resized properly
|
|
||||||
ed.setProgressState(true);
|
|
||||||
t.throbbing = true;
|
|
||||||
|
|
||||||
// Hide scrollbars
|
|
||||||
ed.getBody().style.overflowY = "hidden";
|
|
||||||
});
|
|
||||||
|
|
||||||
ed.onLoadContent.add(function(ed, l) {
|
|
||||||
resize();
|
|
||||||
|
|
||||||
// Because the content area resizes when its content CSS loads,
|
|
||||||
// and we can't easily add a listener to its onload event,
|
|
||||||
// we'll just trigger a resize after a short loading period
|
|
||||||
setTimeout(function() {
|
|
||||||
resize();
|
|
||||||
|
|
||||||
// Disable throbber
|
|
||||||
ed.setProgressState(false);
|
|
||||||
t.throbbing = false;
|
|
||||||
}, 1250);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample');
|
|
||||||
ed.addCommand('mceAutoResize', resize);
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns information about the plugin as a name/value array.
|
|
||||||
* The current keys are longname, author, authorurl, infourl and version.
|
|
||||||
*
|
|
||||||
* @return {Object} Name/value array containing information about the plugin.
|
|
||||||
*/
|
|
||||||
getInfo : function() {
|
|
||||||
return {
|
|
||||||
longname : 'Auto Resize',
|
|
||||||
author : 'Moxiecode Systems AB',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autoresize',
|
|
||||||
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register plugin
|
|
||||||
tinymce.PluginManager.add('autoresize', tinymce.plugins.AutoResizePlugin);
|
|
||||||
})();
|
|
@ -1 +0,0 @@
|
|||||||
(function(e){var c="autosave",g="restoredraft",b=true,f,d,a=e.util.Dispatcher;e.create("tinymce.plugins.AutoSave",{init:function(i,j){var h=this,l=i.settings;h.editor=i;function k(n){var m={s:1000,m:60000};n=/^(\d+)([ms]?)$/.exec(""+n);return(n[2]?m[n[2]]:1)*parseInt(n)}e.each({ask_before_unload:b,interval:"30s",retention:"20m",minlength:50},function(n,m){m=c+"_"+m;if(l[m]===f){l[m]=n}});l.autosave_interval=k(l.autosave_interval);l.autosave_retention=k(l.autosave_retention);i.addButton(g,{title:c+".restore_content",onclick:function(){if(i.getContent({draft:true}).replace(/\s| |<\/?p[^>]*>|<br[^>]*>/gi,"").length>0){i.windowManager.confirm(c+".warning_message",function(m){if(m){h.restoreDraft()}})}else{h.restoreDraft()}}});i.onNodeChange.add(function(){var m=i.controlManager;if(m.get(g)){m.setDisabled(g,!h.hasDraft())}});i.onInit.add(function(){if(i.controlManager.get(g)){h.setupStorage(i);setInterval(function(){h.storeDraft();i.nodeChanged()},l.autosave_interval)}});h.onStoreDraft=new a(h);h.onRestoreDraft=new a(h);h.onRemoveDraft=new a(h);if(!d){window.onbeforeunload=e.plugins.AutoSave._beforeUnloadHandler;d=b}},getInfo:function(){return{longname:"Auto save",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave",version:e.majorVersion+"."+e.minorVersion}},getExpDate:function(){return new Date(new Date().getTime()+this.editor.settings.autosave_retention).toUTCString()},setupStorage:function(i){var h=this,k=c+"_test",j="OK";h.key=c+i.id;e.each([function(){if(localStorage){localStorage.setItem(k,j);if(localStorage.getItem(k)===j){localStorage.removeItem(k);return localStorage}}},function(){if(sessionStorage){sessionStorage.setItem(k,j);if(sessionStorage.getItem(k)===j){sessionStorage.removeItem(k);return sessionStorage}}},function(){if(e.isIE){i.getElement().style.behavior="url('#default#userData')";return{autoExpires:b,setItem:function(l,n){var m=i.getElement();m.setAttribute(l,n);m.expires=h.getExpDate();m.save("TinyMCE")},getItem:function(l){var m=i.getElement();m.load("TinyMCE");return m.getAttribute(l)},removeItem:function(l){i.getElement().removeAttribute(l)}}}},],function(l){try{h.storage=l();if(h.storage){return false}}catch(m){}})},storeDraft:function(){var i=this,l=i.storage,j=i.editor,h,k;if(l){if(!l.getItem(i.key)&&!j.isDirty()){return}k=j.getContent({draft:true});if(k.length>j.settings.autosave_minlength){h=i.getExpDate();if(!i.storage.autoExpires){i.storage.setItem(i.key+"_expires",h)}i.storage.setItem(i.key,k);i.onStoreDraft.dispatch(i,{expires:h,content:k})}}},restoreDraft:function(){var h=this,i=h.storage;if(i){content=i.getItem(h.key);if(content){h.editor.setContent(content);h.onRestoreDraft.dispatch(h,{content:content})}}},hasDraft:function(){var h=this,k=h.storage,i,j;if(k){j=!!k.getItem(h.key);if(j){if(!h.storage.autoExpires){i=new Date(k.getItem(h.key+"_expires"));if(new Date().getTime()<i.getTime()){return b}h.removeDraft()}else{return b}}}return false},removeDraft:function(){var h=this,k=h.storage,i=h.key,j;if(k){j=k.getItem(i);k.removeItem(i);k.removeItem(i+"_expires");if(j){h.onRemoveDraft.dispatch(h,{content:j})}}},"static":{_beforeUnloadHandler:function(h){var i;e.each(tinyMCE.editors,function(j){if(j.plugins.autosave){j.plugins.autosave.storeDraft()}if(j.getParam("fullscreen_is_enabled")){return}if(!i&&j.isDirty()&&j.getParam("autosave_ask_before_unload")){i=j.getLang("autosave.unload_msg")}});return i}}});e.PluginManager.add("autosave",e.plugins.AutoSave)})(tinymce);
|
|
422
tools/tiny_mce/plugins/autosave/editor_plugin_src.js
vendored
@ -1,422 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2009, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*
|
|
||||||
* Adds auto-save capability to the TinyMCE text editor to rescue content
|
|
||||||
* inadvertently lost. This plugin was originally developed by Speednet
|
|
||||||
* and that project can be found here: http://code.google.com/p/tinyautosave/
|
|
||||||
*
|
|
||||||
* TECHNOLOGY DISCUSSION:
|
|
||||||
*
|
|
||||||
* The plugin attempts to use the most advanced features available in the current browser to save
|
|
||||||
* as much content as possible. There are a total of four different methods used to autosave the
|
|
||||||
* content. In order of preference, they are:
|
|
||||||
*
|
|
||||||
* 1. localStorage - A new feature of HTML 5, localStorage can store megabytes of data per domain
|
|
||||||
* on the client computer. Data stored in the localStorage area has no expiration date, so we must
|
|
||||||
* manage expiring the data ourselves. localStorage is fully supported by IE8, and it is supposed
|
|
||||||
* to be working in Firefox 3 and Safari 3.2, but in reality is is flaky in those browsers. As
|
|
||||||
* HTML 5 gets wider support, the AutoSave plugin will use it automatically. In Windows Vista/7,
|
|
||||||
* localStorage is stored in the following folder:
|
|
||||||
* C:\Users\[username]\AppData\Local\Microsoft\Internet Explorer\DOMStore\[tempFolder]
|
|
||||||
*
|
|
||||||
* 2. sessionStorage - A new feature of HTML 5, sessionStorage works similarly to localStorage,
|
|
||||||
* except it is designed to expire after a certain amount of time. Because the specification
|
|
||||||
* around expiration date/time is very loosely-described, it is preferrable to use locaStorage and
|
|
||||||
* manage the expiration ourselves. sessionStorage has similar storage characteristics to
|
|
||||||
* localStorage, although it seems to have better support by Firefox 3 at the moment. (That will
|
|
||||||
* certainly change as Firefox continues getting better at HTML 5 adoption.)
|
|
||||||
*
|
|
||||||
* 3. UserData - A very under-exploited feature of Microsoft Internet Explorer, UserData is a
|
|
||||||
* way to store up to 128K of data per "document", or up to 1MB of data per domain, on the client
|
|
||||||
* computer. The feature is available for IE 5+, which makes it available for every version of IE
|
|
||||||
* supported by TinyMCE. The content is persistent across browser restarts and expires on the
|
|
||||||
* date/time specified, just like a cookie. However, the data is not cleared when the user clears
|
|
||||||
* cookies on the browser, which makes it well-suited for rescuing autosaved content. UserData,
|
|
||||||
* like other Microsoft IE browser technologies, is implemented as a behavior attached to a
|
|
||||||
* specific DOM object, so in this case we attach the behavior to the same DOM element that the
|
|
||||||
* TinyMCE editor instance is attached to.
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function(tinymce) {
|
|
||||||
// Setup constants to help the compressor to reduce script size
|
|
||||||
var PLUGIN_NAME = 'autosave',
|
|
||||||
RESTORE_DRAFT = 'restoredraft',
|
|
||||||
TRUE = true,
|
|
||||||
undefined,
|
|
||||||
unloadHandlerAdded,
|
|
||||||
Dispatcher = tinymce.util.Dispatcher;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This plugin adds auto-save capability to the TinyMCE text editor to rescue content
|
|
||||||
* inadvertently lost. By using localStorage.
|
|
||||||
*
|
|
||||||
* @class tinymce.plugins.AutoSave
|
|
||||||
*/
|
|
||||||
tinymce.create('tinymce.plugins.AutoSave', {
|
|
||||||
/**
|
|
||||||
* Initializes the plugin, this will be executed after the plugin has been created.
|
|
||||||
* This call is done before the editor instance has finished it's initialization so use the onInit event
|
|
||||||
* of the editor instance to intercept that event.
|
|
||||||
*
|
|
||||||
* @method init
|
|
||||||
* @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
|
|
||||||
* @param {string} url Absolute URL to where the plugin is located.
|
|
||||||
*/
|
|
||||||
init : function(ed, url) {
|
|
||||||
var self = this, settings = ed.settings;
|
|
||||||
|
|
||||||
self.editor = ed;
|
|
||||||
|
|
||||||
// Parses the specified time string into a milisecond number 10m, 10s etc.
|
|
||||||
function parseTime(time) {
|
|
||||||
var multipels = {
|
|
||||||
s : 1000,
|
|
||||||
m : 60000
|
|
||||||
};
|
|
||||||
|
|
||||||
time = /^(\d+)([ms]?)$/.exec('' + time);
|
|
||||||
|
|
||||||
return (time[2] ? multipels[time[2]] : 1) * parseInt(time);
|
|
||||||
};
|
|
||||||
|
|
||||||
// Default config
|
|
||||||
tinymce.each({
|
|
||||||
ask_before_unload : TRUE,
|
|
||||||
interval : '30s',
|
|
||||||
retention : '20m',
|
|
||||||
minlength : 50
|
|
||||||
}, function(value, key) {
|
|
||||||
key = PLUGIN_NAME + '_' + key;
|
|
||||||
|
|
||||||
if (settings[key] === undefined)
|
|
||||||
settings[key] = value;
|
|
||||||
});
|
|
||||||
|
|
||||||
// Parse times
|
|
||||||
settings.autosave_interval = parseTime(settings.autosave_interval);
|
|
||||||
settings.autosave_retention = parseTime(settings.autosave_retention);
|
|
||||||
|
|
||||||
// Register restore button
|
|
||||||
ed.addButton(RESTORE_DRAFT, {
|
|
||||||
title : PLUGIN_NAME + ".restore_content",
|
|
||||||
onclick : function() {
|
|
||||||
if (ed.getContent({draft: true}).replace(/\s| |<\/?p[^>]*>|<br[^>]*>/gi, "").length > 0) {
|
|
||||||
// Show confirm dialog if the editor isn't empty
|
|
||||||
ed.windowManager.confirm(
|
|
||||||
PLUGIN_NAME + ".warning_message",
|
|
||||||
function(ok) {
|
|
||||||
if (ok)
|
|
||||||
self.restoreDraft();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} else
|
|
||||||
self.restoreDraft();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Enable/disable restoredraft button depending on if there is a draft stored or not
|
|
||||||
ed.onNodeChange.add(function() {
|
|
||||||
var controlManager = ed.controlManager;
|
|
||||||
|
|
||||||
if (controlManager.get(RESTORE_DRAFT))
|
|
||||||
controlManager.setDisabled(RESTORE_DRAFT, !self.hasDraft());
|
|
||||||
});
|
|
||||||
|
|
||||||
ed.onInit.add(function() {
|
|
||||||
// Check if the user added the restore button, then setup auto storage logic
|
|
||||||
if (ed.controlManager.get(RESTORE_DRAFT)) {
|
|
||||||
// Setup storage engine
|
|
||||||
self.setupStorage(ed);
|
|
||||||
|
|
||||||
// Auto save contents each interval time
|
|
||||||
setInterval(function() {
|
|
||||||
self.storeDraft();
|
|
||||||
ed.nodeChanged();
|
|
||||||
}, settings.autosave_interval);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This event gets fired when a draft is stored to local storage.
|
|
||||||
*
|
|
||||||
* @event onStoreDraft
|
|
||||||
* @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event.
|
|
||||||
* @param {Object} draft Draft object containing the HTML contents of the editor.
|
|
||||||
*/
|
|
||||||
self.onStoreDraft = new Dispatcher(self);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This event gets fired when a draft is restored from local storage.
|
|
||||||
*
|
|
||||||
* @event onStoreDraft
|
|
||||||
* @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event.
|
|
||||||
* @param {Object} draft Draft object containing the HTML contents of the editor.
|
|
||||||
*/
|
|
||||||
self.onRestoreDraft = new Dispatcher(self);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This event gets fired when a draft removed/expired.
|
|
||||||
*
|
|
||||||
* @event onRemoveDraft
|
|
||||||
* @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event.
|
|
||||||
* @param {Object} draft Draft object containing the HTML contents of the editor.
|
|
||||||
*/
|
|
||||||
self.onRemoveDraft = new Dispatcher(self);
|
|
||||||
|
|
||||||
// Add ask before unload dialog only add one unload handler
|
|
||||||
if (!unloadHandlerAdded) {
|
|
||||||
window.onbeforeunload = tinymce.plugins.AutoSave._beforeUnloadHandler;
|
|
||||||
unloadHandlerAdded = TRUE;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns information about the plugin as a name/value array.
|
|
||||||
* The current keys are longname, author, authorurl, infourl and version.
|
|
||||||
*
|
|
||||||
* @method getInfo
|
|
||||||
* @return {Object} Name/value array containing information about the plugin.
|
|
||||||
*/
|
|
||||||
getInfo : function() {
|
|
||||||
return {
|
|
||||||
longname : 'Auto save',
|
|
||||||
author : 'Moxiecode Systems AB',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',
|
|
||||||
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an expiration date UTC string.
|
|
||||||
*
|
|
||||||
* @method getExpDate
|
|
||||||
* @return {String} Expiration date UTC string.
|
|
||||||
*/
|
|
||||||
getExpDate : function() {
|
|
||||||
return new Date(
|
|
||||||
new Date().getTime() + this.editor.settings.autosave_retention
|
|
||||||
).toUTCString();
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method will setup the storage engine. If the browser has support for it.
|
|
||||||
*
|
|
||||||
* @method setupStorage
|
|
||||||
*/
|
|
||||||
setupStorage : function(ed) {
|
|
||||||
var self = this, testKey = PLUGIN_NAME + '_test', testVal = "OK";
|
|
||||||
|
|
||||||
self.key = PLUGIN_NAME + ed.id;
|
|
||||||
|
|
||||||
// Loop though each storage engine type until we find one that works
|
|
||||||
tinymce.each([
|
|
||||||
function() {
|
|
||||||
// Try HTML5 Local Storage
|
|
||||||
if (localStorage) {
|
|
||||||
localStorage.setItem(testKey, testVal);
|
|
||||||
|
|
||||||
if (localStorage.getItem(testKey) === testVal) {
|
|
||||||
localStorage.removeItem(testKey);
|
|
||||||
|
|
||||||
return localStorage;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
function() {
|
|
||||||
// Try HTML5 Session Storage
|
|
||||||
if (sessionStorage) {
|
|
||||||
sessionStorage.setItem(testKey, testVal);
|
|
||||||
|
|
||||||
if (sessionStorage.getItem(testKey) === testVal) {
|
|
||||||
sessionStorage.removeItem(testKey);
|
|
||||||
|
|
||||||
return sessionStorage;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
function() {
|
|
||||||
// Try IE userData
|
|
||||||
if (tinymce.isIE) {
|
|
||||||
ed.getElement().style.behavior = "url('#default#userData')";
|
|
||||||
|
|
||||||
// Fake localStorage on old IE
|
|
||||||
return {
|
|
||||||
autoExpires : TRUE,
|
|
||||||
|
|
||||||
setItem : function(key, value) {
|
|
||||||
var userDataElement = ed.getElement();
|
|
||||||
|
|
||||||
userDataElement.setAttribute(key, value);
|
|
||||||
userDataElement.expires = self.getExpDate();
|
|
||||||
userDataElement.save("TinyMCE");
|
|
||||||
},
|
|
||||||
|
|
||||||
getItem : function(key) {
|
|
||||||
var userDataElement = ed.getElement();
|
|
||||||
|
|
||||||
userDataElement.load("TinyMCE");
|
|
||||||
|
|
||||||
return userDataElement.getAttribute(key);
|
|
||||||
},
|
|
||||||
|
|
||||||
removeItem : function(key) {
|
|
||||||
ed.getElement().removeAttribute(key);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
},
|
|
||||||
], function(setup) {
|
|
||||||
// Try executing each function to find a suitable storage engine
|
|
||||||
try {
|
|
||||||
self.storage = setup();
|
|
||||||
|
|
||||||
if (self.storage)
|
|
||||||
return false;
|
|
||||||
} catch (e) {
|
|
||||||
// Ignore
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method will store the current contents in the the storage engine.
|
|
||||||
*
|
|
||||||
* @method storeDraft
|
|
||||||
*/
|
|
||||||
storeDraft : function() {
|
|
||||||
var self = this, storage = self.storage, editor = self.editor, expires, content;
|
|
||||||
|
|
||||||
// Is the contents dirty
|
|
||||||
if (storage) {
|
|
||||||
// If there is no existing key and the contents hasn't been changed since
|
|
||||||
// it's original value then there is no point in saving a draft
|
|
||||||
if (!storage.getItem(self.key) && !editor.isDirty())
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Store contents if the contents if longer than the minlength of characters
|
|
||||||
content = editor.getContent({draft: true});
|
|
||||||
if (content.length > editor.settings.autosave_minlength) {
|
|
||||||
expires = self.getExpDate();
|
|
||||||
|
|
||||||
// Store expiration date if needed IE userData has auto expire built in
|
|
||||||
if (!self.storage.autoExpires)
|
|
||||||
self.storage.setItem(self.key + "_expires", expires);
|
|
||||||
|
|
||||||
self.storage.setItem(self.key, content);
|
|
||||||
self.onStoreDraft.dispatch(self, {
|
|
||||||
expires : expires,
|
|
||||||
content : content
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method will restore the contents from the storage engine back to the editor.
|
|
||||||
*
|
|
||||||
* @method restoreDraft
|
|
||||||
*/
|
|
||||||
restoreDraft : function() {
|
|
||||||
var self = this, storage = self.storage;
|
|
||||||
|
|
||||||
if (storage) {
|
|
||||||
content = storage.getItem(self.key);
|
|
||||||
|
|
||||||
if (content) {
|
|
||||||
self.editor.setContent(content);
|
|
||||||
self.onRestoreDraft.dispatch(self, {
|
|
||||||
content : content
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method will return true/false if there is a local storage draft available.
|
|
||||||
*
|
|
||||||
* @method hasDraft
|
|
||||||
* @return {boolean} true/false state if there is a local draft.
|
|
||||||
*/
|
|
||||||
hasDraft : function() {
|
|
||||||
var self = this, storage = self.storage, expDate, exists;
|
|
||||||
|
|
||||||
if (storage) {
|
|
||||||
// Does the item exist at all
|
|
||||||
exists = !!storage.getItem(self.key);
|
|
||||||
if (exists) {
|
|
||||||
// Storage needs autoexpire
|
|
||||||
if (!self.storage.autoExpires) {
|
|
||||||
expDate = new Date(storage.getItem(self.key + "_expires"));
|
|
||||||
|
|
||||||
// Contents hasn't expired
|
|
||||||
if (new Date().getTime() < expDate.getTime())
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
// Remove it if it has
|
|
||||||
self.removeDraft();
|
|
||||||
} else
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Removes the currently stored draft.
|
|
||||||
*
|
|
||||||
* @method removeDraft
|
|
||||||
*/
|
|
||||||
removeDraft : function() {
|
|
||||||
var self = this, storage = self.storage, key = self.key, content;
|
|
||||||
|
|
||||||
if (storage) {
|
|
||||||
// Get current contents and remove the existing draft
|
|
||||||
content = storage.getItem(key);
|
|
||||||
storage.removeItem(key);
|
|
||||||
storage.removeItem(key + "_expires");
|
|
||||||
|
|
||||||
// Dispatch remove event if we had any contents
|
|
||||||
if (content) {
|
|
||||||
self.onRemoveDraft.dispatch(self, {
|
|
||||||
content : content
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"static" : {
|
|
||||||
// Internal unload handler will be called before the page is unloaded
|
|
||||||
_beforeUnloadHandler : function(e) {
|
|
||||||
var msg;
|
|
||||||
|
|
||||||
tinymce.each(tinyMCE.editors, function(ed) {
|
|
||||||
// Store a draft for each editor instance
|
|
||||||
if (ed.plugins.autosave)
|
|
||||||
ed.plugins.autosave.storeDraft();
|
|
||||||
|
|
||||||
// Never ask in fullscreen mode
|
|
||||||
if (ed.getParam("fullscreen_is_enabled"))
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Setup a return message if the editor is dirty
|
|
||||||
if (!msg && ed.isDirty() && ed.getParam("autosave_ask_before_unload"))
|
|
||||||
msg = ed.getLang("autosave.unload_msg");
|
|
||||||
});
|
|
||||||
|
|
||||||
return msg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
tinymce.PluginManager.add('autosave', tinymce.plugins.AutoSave);
|
|
||||||
})(tinymce);
|
|
4
tools/tiny_mce/plugins/autosave/langs/en.js
vendored
@ -1,4 +0,0 @@
|
|||||||
tinyMCE.addI18n('en.autosave',{
|
|
||||||
restore_content: "Restore auto-saved content",
|
|
||||||
warning_message: "If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?"
|
|
||||||
});
|
|
@ -1 +0,0 @@
|
|||||||
(function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(a,b){var d=this,c=a.getParam("bbcode_dialect","punbb").toLowerCase();a.onBeforeSetContent.add(function(e,f){f.content=d["_"+c+"_bbcode2html"](f.content)});a.onPostProcess.add(function(e,f){if(f.set){f.content=d["_"+c+"_bbcode2html"](f.content)}if(f.get){f.content=d["_"+c+"_html2bbcode"](f.content)}})},getInfo:function(){return{longname:"BBCode Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_punbb_html2bbcode:function(a){a=tinymce.trim(a);function b(c,d){a=a.replace(c,d)}b(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");b(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");b(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");b(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");b(/<font>(.*?)<\/font>/gi,"$1");b(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");b(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");b(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");b(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");b(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");b(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");b(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");b(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");b(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");b(/<\/(strong|b)>/gi,"[/b]");b(/<(strong|b)>/gi,"[b]");b(/<\/(em|i)>/gi,"[/i]");b(/<(em|i)>/gi,"[i]");b(/<\/u>/gi,"[/u]");b(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");b(/<u>/gi,"[u]");b(/<blockquote[^>]*>/gi,"[quote]");b(/<\/blockquote>/gi,"[/quote]");b(/<br \/>/gi,"\n");b(/<br\/>/gi,"\n");b(/<br>/gi,"\n");b(/<p>/gi,"");b(/<\/p>/gi,"\n");b(/ /gi," ");b(/"/gi,'"');b(/</gi,"<");b(/>/gi,">");b(/&/gi,"&");return a},_punbb_bbcode2html:function(a){a=tinymce.trim(a);function b(c,d){a=a.replace(c,d)}b(/\n/gi,"<br />");b(/\[b\]/gi,"<strong>");b(/\[\/b\]/gi,"</strong>");b(/\[i\]/gi,"<em>");b(/\[\/i\]/gi,"</em>");b(/\[u\]/gi,"<u>");b(/\[\/u\]/gi,"</u>");b(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>');b(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>');b(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />');b(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>');b(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span> ');b(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span> ');return a}});tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)})();
|
|
120
tools/tiny_mce/plugins/bbcode/editor_plugin_src.js
vendored
@ -1,120 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2009, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
tinymce.create('tinymce.plugins.BBCodePlugin', {
|
|
||||||
init : function(ed, url) {
|
|
||||||
var t = this, dialect = ed.getParam('bbcode_dialect', 'punbb').toLowerCase();
|
|
||||||
|
|
||||||
ed.onBeforeSetContent.add(function(ed, o) {
|
|
||||||
o.content = t['_' + dialect + '_bbcode2html'](o.content);
|
|
||||||
});
|
|
||||||
|
|
||||||
ed.onPostProcess.add(function(ed, o) {
|
|
||||||
if (o.set)
|
|
||||||
o.content = t['_' + dialect + '_bbcode2html'](o.content);
|
|
||||||
|
|
||||||
if (o.get)
|
|
||||||
o.content = t['_' + dialect + '_html2bbcode'](o.content);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
getInfo : function() {
|
|
||||||
return {
|
|
||||||
longname : 'BBCode Plugin',
|
|
||||||
author : 'Moxiecode Systems AB',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',
|
|
||||||
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
// Private methods
|
|
||||||
|
|
||||||
// HTML -> BBCode in PunBB dialect
|
|
||||||
_punbb_html2bbcode : function(s) {
|
|
||||||
s = tinymce.trim(s);
|
|
||||||
|
|
||||||
function rep(re, str) {
|
|
||||||
s = s.replace(re, str);
|
|
||||||
};
|
|
||||||
|
|
||||||
// example: <strong> to [b]
|
|
||||||
rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");
|
|
||||||
rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");
|
|
||||||
rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");
|
|
||||||
rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");
|
|
||||||
rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");
|
|
||||||
rep(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");
|
|
||||||
rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");
|
|
||||||
rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");
|
|
||||||
rep(/<font>(.*?)<\/font>/gi,"$1");
|
|
||||||
rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");
|
|
||||||
rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");
|
|
||||||
rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");
|
|
||||||
rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");
|
|
||||||
rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");
|
|
||||||
rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");
|
|
||||||
rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");
|
|
||||||
rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");
|
|
||||||
rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");
|
|
||||||
rep(/<\/(strong|b)>/gi,"[/b]");
|
|
||||||
rep(/<(strong|b)>/gi,"[b]");
|
|
||||||
rep(/<\/(em|i)>/gi,"[/i]");
|
|
||||||
rep(/<(em|i)>/gi,"[i]");
|
|
||||||
rep(/<\/u>/gi,"[/u]");
|
|
||||||
rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");
|
|
||||||
rep(/<u>/gi,"[u]");
|
|
||||||
rep(/<blockquote[^>]*>/gi,"[quote]");
|
|
||||||
rep(/<\/blockquote>/gi,"[/quote]");
|
|
||||||
rep(/<br \/>/gi,"\n");
|
|
||||||
rep(/<br\/>/gi,"\n");
|
|
||||||
rep(/<br>/gi,"\n");
|
|
||||||
rep(/<p>/gi,"");
|
|
||||||
rep(/<\/p>/gi,"\n");
|
|
||||||
rep(/ /gi," ");
|
|
||||||
rep(/"/gi,"\"");
|
|
||||||
rep(/</gi,"<");
|
|
||||||
rep(/>/gi,">");
|
|
||||||
rep(/&/gi,"&");
|
|
||||||
|
|
||||||
return s;
|
|
||||||
},
|
|
||||||
|
|
||||||
// BBCode -> HTML from PunBB dialect
|
|
||||||
_punbb_bbcode2html : function(s) {
|
|
||||||
s = tinymce.trim(s);
|
|
||||||
|
|
||||||
function rep(re, str) {
|
|
||||||
s = s.replace(re, str);
|
|
||||||
};
|
|
||||||
|
|
||||||
// example: [b] to <strong>
|
|
||||||
rep(/\n/gi,"<br />");
|
|
||||||
rep(/\[b\]/gi,"<strong>");
|
|
||||||
rep(/\[\/b\]/gi,"</strong>");
|
|
||||||
rep(/\[i\]/gi,"<em>");
|
|
||||||
rep(/\[\/i\]/gi,"</em>");
|
|
||||||
rep(/\[u\]/gi,"<u>");
|
|
||||||
rep(/\[\/u\]/gi,"</u>");
|
|
||||||
rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");
|
|
||||||
rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");
|
|
||||||
rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");
|
|
||||||
rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");
|
|
||||||
rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span> ");
|
|
||||||
rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span> ");
|
|
||||||
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register plugin
|
|
||||||
tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin);
|
|
||||||
})();
|
|
@ -1 +0,0 @@
|
|||||||
(function(){var a=tinymce.dom.Event,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.ContextMenu",{init:function(e){var h=this,i,f,d;h.editor=e;d=e.settings.contextmenu_never_use_native;h.onContextMenu=new tinymce.util.Dispatcher(this);f=e.onContextMenu.add(function(j,k){if(k.ctrlKey&&!d){return}if(i){j.selection.setRng(i)}h._getMenu(j).showMenu(k.clientX||k.pageX,k.clientY||k.pageX);a.add(j.getDoc(),"click",function(l){g(j,l)});a.cancel(k)});e.onRemove.add(function(){if(h._menu){h._menu.removeAll()}});function g(j,k){i=null;if(k&&k.button==2){i=j.selection.getRng();return}if(h._menu){h._menu.removeAll();h._menu.destroy();a.remove(j.getDoc(),"click",g)}}e.onMouseDown.add(g);e.onKeyDown.add(g);e.onKeyDown.add(function(j,k){if(k.shiftKey&&!k.ctrlKey&&!k.altKey&&k.keyCode===121){a.cancel(k);f(j,k)}})},getInfo:function(){return{longname:"Contextmenu",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getMenu:function(h){var l=this,f=l._menu,i=h.selection,e=i.isCollapsed(),d=i.getNode()||h.getBody(),g,k,j;if(f){f.removeAll();f.destroy()}k=b.getPos(h.getContentAreaContainer());j=b.getPos(h.getContainer());f=h.controlManager.createDropMenu("contextmenu",{offset_x:k.x+h.getParam("contextmenu_offset_x",0),offset_y:k.y+h.getParam("contextmenu_offset_y",0),constrain:1,keyboard_focus:true});l._menu=f;f.add({title:"advanced.cut_desc",icon:"cut",cmd:"Cut"}).setDisabled(e);f.add({title:"advanced.copy_desc",icon:"copy",cmd:"Copy"}).setDisabled(e);f.add({title:"advanced.paste_desc",icon:"paste",cmd:"Paste"});if((d.nodeName=="A"&&!h.dom.getAttrib(d,"name"))||!e){f.addSeparator();f.add({title:"advanced.link_desc",icon:"link",cmd:h.plugins.advlink?"mceAdvLink":"mceLink",ui:true});f.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"})}f.addSeparator();f.add({title:"advanced.image_desc",icon:"image",cmd:h.plugins.advimage?"mceAdvImage":"mceImage",ui:true});f.addSeparator();g=f.addMenu({title:"contextmenu.align"});g.add({title:"contextmenu.left",icon:"justifyleft",cmd:"JustifyLeft"});g.add({title:"contextmenu.center",icon:"justifycenter",cmd:"JustifyCenter"});g.add({title:"contextmenu.right",icon:"justifyright",cmd:"JustifyRight"});g.add({title:"contextmenu.full",icon:"justifyfull",cmd:"JustifyFull"});l.onContextMenu.dispatch(l,f,d,e);return f}});tinymce.PluginManager.add("contextmenu",tinymce.plugins.ContextMenu)})();
|
|
@ -1,156 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2009, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
var Event = tinymce.dom.Event, each = tinymce.each, DOM = tinymce.DOM;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This plugin a context menu to TinyMCE editor instances.
|
|
||||||
*
|
|
||||||
* @class tinymce.plugins.ContextMenu
|
|
||||||
*/
|
|
||||||
tinymce.create('tinymce.plugins.ContextMenu', {
|
|
||||||
/**
|
|
||||||
* Initializes the plugin, this will be executed after the plugin has been created.
|
|
||||||
* This call is done before the editor instance has finished it's initialization so use the onInit event
|
|
||||||
* of the editor instance to intercept that event.
|
|
||||||
*
|
|
||||||
* @method init
|
|
||||||
* @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
|
|
||||||
* @param {string} url Absolute URL to where the plugin is located.
|
|
||||||
*/
|
|
||||||
init : function(ed) {
|
|
||||||
var t = this, lastRng, showMenu, contextmenuNeverUseNative;
|
|
||||||
|
|
||||||
t.editor = ed;
|
|
||||||
|
|
||||||
contextmenuNeverUseNative = ed.settings.contextmenu_never_use_native;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This event gets fired when the context menu is shown.
|
|
||||||
*
|
|
||||||
* @event onContextMenu
|
|
||||||
* @param {tinymce.plugins.ContextMenu} sender Plugin instance sending the event.
|
|
||||||
* @param {tinymce.ui.DropMenu} menu Drop down menu to fill with more items if needed.
|
|
||||||
*/
|
|
||||||
t.onContextMenu = new tinymce.util.Dispatcher(this);
|
|
||||||
|
|
||||||
showMenu = ed.onContextMenu.add(function(ed, e) {
|
|
||||||
if (e.ctrlKey && !contextmenuNeverUseNative) return;
|
|
||||||
|
|
||||||
// Restore the last selection since it was removed
|
|
||||||
if (lastRng)
|
|
||||||
ed.selection.setRng(lastRng);
|
|
||||||
|
|
||||||
t._getMenu(ed).showMenu(e.clientX || e.pageX, e.clientY || e.pageX);
|
|
||||||
Event.add(ed.getDoc(), 'click', function(e) {
|
|
||||||
hide(ed, e);
|
|
||||||
});
|
|
||||||
Event.cancel(e);
|
|
||||||
});
|
|
||||||
|
|
||||||
ed.onRemove.add(function() {
|
|
||||||
if (t._menu)
|
|
||||||
t._menu.removeAll();
|
|
||||||
});
|
|
||||||
|
|
||||||
function hide(ed, e) {
|
|
||||||
lastRng = null;
|
|
||||||
|
|
||||||
// Since the contextmenu event moves
|
|
||||||
// the selection we need to store it away
|
|
||||||
if (e && e.button == 2) {
|
|
||||||
lastRng = ed.selection.getRng();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (t._menu) {
|
|
||||||
t._menu.removeAll();
|
|
||||||
t._menu.destroy();
|
|
||||||
Event.remove(ed.getDoc(), 'click', hide);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
ed.onMouseDown.add(hide);
|
|
||||||
ed.onKeyDown.add(hide);
|
|
||||||
ed.onKeyDown.add(function(ed, e) {
|
|
||||||
if (e.shiftKey && !e.ctrlKey && !e.altKey && e.keyCode === 121) {
|
|
||||||
Event.cancel(e);
|
|
||||||
showMenu(ed, e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns information about the plugin as a name/value array.
|
|
||||||
* The current keys are longname, author, authorurl, infourl and version.
|
|
||||||
*
|
|
||||||
* @method getInfo
|
|
||||||
* @return {Object} Name/value array containing information about the plugin.
|
|
||||||
*/
|
|
||||||
getInfo : function() {
|
|
||||||
return {
|
|
||||||
longname : 'Contextmenu',
|
|
||||||
author : 'Moxiecode Systems AB',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu',
|
|
||||||
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
_getMenu : function(ed) {
|
|
||||||
var t = this, m = t._menu, se = ed.selection, col = se.isCollapsed(), el = se.getNode() || ed.getBody(), am, p1, p2;
|
|
||||||
|
|
||||||
if (m) {
|
|
||||||
m.removeAll();
|
|
||||||
m.destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
p1 = DOM.getPos(ed.getContentAreaContainer());
|
|
||||||
p2 = DOM.getPos(ed.getContainer());
|
|
||||||
|
|
||||||
m = ed.controlManager.createDropMenu('contextmenu', {
|
|
||||||
offset_x : p1.x + ed.getParam('contextmenu_offset_x', 0),
|
|
||||||
offset_y : p1.y + ed.getParam('contextmenu_offset_y', 0),
|
|
||||||
constrain : 1,
|
|
||||||
keyboard_focus: true
|
|
||||||
});
|
|
||||||
|
|
||||||
t._menu = m;
|
|
||||||
|
|
||||||
m.add({title : 'advanced.cut_desc', icon : 'cut', cmd : 'Cut'}).setDisabled(col);
|
|
||||||
m.add({title : 'advanced.copy_desc', icon : 'copy', cmd : 'Copy'}).setDisabled(col);
|
|
||||||
m.add({title : 'advanced.paste_desc', icon : 'paste', cmd : 'Paste'});
|
|
||||||
|
|
||||||
if ((el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) || !col) {
|
|
||||||
m.addSeparator();
|
|
||||||
m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true});
|
|
||||||
m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'});
|
|
||||||
}
|
|
||||||
|
|
||||||
m.addSeparator();
|
|
||||||
m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true});
|
|
||||||
|
|
||||||
m.addSeparator();
|
|
||||||
am = m.addMenu({title : 'contextmenu.align'});
|
|
||||||
am.add({title : 'contextmenu.left', icon : 'justifyleft', cmd : 'JustifyLeft'});
|
|
||||||
am.add({title : 'contextmenu.center', icon : 'justifycenter', cmd : 'JustifyCenter'});
|
|
||||||
am.add({title : 'contextmenu.right', icon : 'justifyright', cmd : 'JustifyRight'});
|
|
||||||
am.add({title : 'contextmenu.full', icon : 'justifyfull', cmd : 'JustifyFull'});
|
|
||||||
|
|
||||||
t.onContextMenu.dispatch(t, m, el, col);
|
|
||||||
|
|
||||||
return m;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register plugin
|
|
||||||
tinymce.PluginManager.add('contextmenu', tinymce.plugins.ContextMenu);
|
|
||||||
})();
|
|
@ -1 +0,0 @@
|
|||||||
(function(){tinymce.create("tinymce.plugins.Directionality",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceDirectionLTR",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="ltr"){a.dom.setAttrib(d,"dir","ltr")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addCommand("mceDirectionRTL",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="rtl"){a.dom.setAttrib(d,"dir","rtl")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addButton("ltr",{title:"directionality.ltr_desc",cmd:"mceDirectionLTR"});a.addButton("rtl",{title:"directionality.rtl_desc",cmd:"mceDirectionRTL"});a.onNodeChange.add(c._nodeChange,c)},getInfo:function(){return{longname:"Directionality",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,e){var d=b.dom,c;e=d.getParent(e,d.isBlock);if(!e){a.setDisabled("ltr",1);a.setDisabled("rtl",1);return}c=d.getAttrib(e,"dir");a.setActive("ltr",c=="ltr");a.setDisabled("ltr",0);a.setActive("rtl",c=="rtl");a.setDisabled("rtl",0)}});tinymce.PluginManager.add("directionality",tinymce.plugins.Directionality)})();
|
|
@ -1,82 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2009, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
tinymce.create('tinymce.plugins.Directionality', {
|
|
||||||
init : function(ed, url) {
|
|
||||||
var t = this;
|
|
||||||
|
|
||||||
t.editor = ed;
|
|
||||||
|
|
||||||
ed.addCommand('mceDirectionLTR', function() {
|
|
||||||
var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);
|
|
||||||
|
|
||||||
if (e) {
|
|
||||||
if (ed.dom.getAttrib(e, "dir") != "ltr")
|
|
||||||
ed.dom.setAttrib(e, "dir", "ltr");
|
|
||||||
else
|
|
||||||
ed.dom.setAttrib(e, "dir", "");
|
|
||||||
}
|
|
||||||
|
|
||||||
ed.nodeChanged();
|
|
||||||
});
|
|
||||||
|
|
||||||
ed.addCommand('mceDirectionRTL', function() {
|
|
||||||
var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);
|
|
||||||
|
|
||||||
if (e) {
|
|
||||||
if (ed.dom.getAttrib(e, "dir") != "rtl")
|
|
||||||
ed.dom.setAttrib(e, "dir", "rtl");
|
|
||||||
else
|
|
||||||
ed.dom.setAttrib(e, "dir", "");
|
|
||||||
}
|
|
||||||
|
|
||||||
ed.nodeChanged();
|
|
||||||
});
|
|
||||||
|
|
||||||
ed.addButton('ltr', {title : 'directionality.ltr_desc', cmd : 'mceDirectionLTR'});
|
|
||||||
ed.addButton('rtl', {title : 'directionality.rtl_desc', cmd : 'mceDirectionRTL'});
|
|
||||||
|
|
||||||
ed.onNodeChange.add(t._nodeChange, t);
|
|
||||||
},
|
|
||||||
|
|
||||||
getInfo : function() {
|
|
||||||
return {
|
|
||||||
longname : 'Directionality',
|
|
||||||
author : 'Moxiecode Systems AB',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',
|
|
||||||
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
// Private methods
|
|
||||||
|
|
||||||
_nodeChange : function(ed, cm, n) {
|
|
||||||
var dom = ed.dom, dir;
|
|
||||||
|
|
||||||
n = dom.getParent(n, dom.isBlock);
|
|
||||||
if (!n) {
|
|
||||||
cm.setDisabled('ltr', 1);
|
|
||||||
cm.setDisabled('rtl', 1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
dir = dom.getAttrib(n, 'dir');
|
|
||||||
cm.setActive('ltr', dir == "ltr");
|
|
||||||
cm.setDisabled('ltr', 0);
|
|
||||||
cm.setActive('rtl', dir == "rtl");
|
|
||||||
cm.setDisabled('rtl', 0);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register plugin
|
|
||||||
tinymce.PluginManager.add('directionality', tinymce.plugins.Directionality);
|
|
||||||
})();
|
|
@ -1 +0,0 @@
|
|||||||
(function(a){a.create("tinymce.plugins.EmotionsPlugin",{init:function(b,c){b.addCommand("mceEmotion",function(){b.windowManager.open({file:c+"/emotions.htm",width:250+parseInt(b.getLang("emotions.delta_width",0)),height:160+parseInt(b.getLang("emotions.delta_height",0)),inline:1},{plugin_url:c})});b.addButton("emotions",{title:"emotions.emotions_desc",cmd:"mceEmotion"})},getInfo:function(){return{longname:"Emotions",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions",version:a.majorVersion+"."+a.minorVersion}}});a.PluginManager.add("emotions",a.plugins.EmotionsPlugin)})(tinymce);
|
|
@ -1,43 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2009, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function(tinymce) {
|
|
||||||
tinymce.create('tinymce.plugins.EmotionsPlugin', {
|
|
||||||
init : function(ed, url) {
|
|
||||||
// Register commands
|
|
||||||
ed.addCommand('mceEmotion', function() {
|
|
||||||
ed.windowManager.open({
|
|
||||||
file : url + '/emotions.htm',
|
|
||||||
width : 250 + parseInt(ed.getLang('emotions.delta_width', 0)),
|
|
||||||
height : 160 + parseInt(ed.getLang('emotions.delta_height', 0)),
|
|
||||||
inline : 1
|
|
||||||
}, {
|
|
||||||
plugin_url : url
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register buttons
|
|
||||||
ed.addButton('emotions', {title : 'emotions.emotions_desc', cmd : 'mceEmotion'});
|
|
||||||
},
|
|
||||||
|
|
||||||
getInfo : function() {
|
|
||||||
return {
|
|
||||||
longname : 'Emotions',
|
|
||||||
author : 'Moxiecode Systems AB',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',
|
|
||||||
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register plugin
|
|
||||||
tinymce.PluginManager.add('emotions', tinymce.plugins.EmotionsPlugin);
|
|
||||||
})(tinymce);
|
|
41
tools/tiny_mce/plugins/emotions/emotions.htm
vendored
@ -1,41 +0,0 @@
|
|||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title>{#emotions_dlg.title}</title>
|
|
||||||
<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
|
|
||||||
<script type="text/javascript" src="js/emotions.js"></script>
|
|
||||||
</head>
|
|
||||||
<body style="display: none" role="application" aria-labelledby="app_title">
|
|
||||||
<span style="display:none;" id="app_title">{#emotions_dlg.title}</span>
|
|
||||||
<div align="center">
|
|
||||||
<div class="title">{#emotions_dlg.title}:<br /><br /></div>
|
|
||||||
|
|
||||||
<table role="presentation" border="0" cellspacing="0" cellpadding="4">
|
|
||||||
<tr>
|
|
||||||
<td><a href="javascript:EmotionsDialog.insert('smiley-cool.gif','emotions_dlg.cool');"><img src="img/smiley-cool.gif" width="18" height="18" border="0" alt="{#emotions_dlg.cool}" title="{#emotions_dlg.cool}" /></a></td>
|
|
||||||
<td><a href="javascript:EmotionsDialog.insert('smiley-cry.gif','emotions_dlg.cry');"><img src="img/smiley-cry.gif" width="18" height="18" border="0" alt="{#emotions_dlg.cry}" title="{#emotions_dlg.cry}" /></a></td>
|
|
||||||
<td><a href="javascript:EmotionsDialog.insert('smiley-embarassed.gif','emotions_dlg.embarassed');"><img src="img/smiley-embarassed.gif" width="18" height="18" border="0" alt="{#emotions_dlg.embarassed}" title="{#emotions_dlg.embarassed}" /></a></td>
|
|
||||||
<td><a href="javascript:EmotionsDialog.insert('smiley-foot-in-mouth.gif','emotions_dlg.foot_in_mouth');"><img src="img/smiley-foot-in-mouth.gif" width="18" height="18" border="0" alt="{#emotions_dlg.foot_in_mouth}" title="{#emotions_dlg.foot_in_mouth}" /></a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><a href="javascript:EmotionsDialog.insert('smiley-frown.gif','emotions_dlg.frown');"><img src="img/smiley-frown.gif" width="18" height="18" border="0" alt="{#emotions_dlg.frown}" title="{#emotions_dlg.frown}" /></a></td>
|
|
||||||
<td><a href="javascript:EmotionsDialog.insert('smiley-innocent.gif','emotions_dlg.innocent');"><img src="img/smiley-innocent.gif" width="18" height="18" border="0" alt="{#emotions_dlg.innocent}" title="{#emotions_dlg.innocent}" /></a></td>
|
|
||||||
<td><a href="javascript:EmotionsDialog.insert('smiley-kiss.gif','emotions_dlg.kiss');"><img src="img/smiley-kiss.gif" width="18" height="18" border="0" alt="{#emotions_dlg.kiss}" title="{#emotions_dlg.kiss}" /></a></td>
|
|
||||||
<td><a href="javascript:EmotionsDialog.insert('smiley-laughing.gif','emotions_dlg.laughing');"><img src="img/smiley-laughing.gif" width="18" height="18" border="0" alt="{#emotions_dlg.laughing}" title="{#emotions_dlg.laughing}" /></a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><a href="javascript:EmotionsDialog.insert('smiley-money-mouth.gif','emotions_dlg.money_mouth');"><img src="img/smiley-money-mouth.gif" width="18" height="18" border="0" alt="{#emotions_dlg.money_mouth}" title="{#emotions_dlg.money_mouth}" /></a></td>
|
|
||||||
<td><a href="javascript:EmotionsDialog.insert('smiley-sealed.gif','emotions_dlg.sealed');"><img src="img/smiley-sealed.gif" width="18" height="18" border="0" alt="{#emotions_dlg.sealed}" title="{#emotions_dlg.sealed}" /></a></td>
|
|
||||||
<td><a href="javascript:EmotionsDialog.insert('smiley-smile.gif','emotions_dlg.smile');"><img src="img/smiley-smile.gif" width="18" height="18" border="0" alt="{#emotions_dlg.smile}" title="{#emotions_dlg.smile}" /></a></td>
|
|
||||||
<td><a href="javascript:EmotionsDialog.insert('smiley-surprised.gif','emotions_dlg.surprised');"><img src="img/smiley-surprised.gif" width="18" height="18" border="0" alt="{#emotions_dlg.surprised}" title="{#emotions_dlg.surprised}" /></a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><a href="javascript:EmotionsDialog.insert('smiley-tongue-out.gif','emotions_dlg.tongue_out');"><img src="img/smiley-tongue-out.gif" width="18" height="18" border="0" alt="{#emotions_dlg.tongue-out}" title="{#emotions_dlg.tongue_out}" /></a></td>
|
|
||||||
<td><a href="javascript:EmotionsDialog.insert('smiley-undecided.gif','emotions_dlg.undecided');"><img src="img/smiley-undecided.gif" width="18" height="18" border="0" alt="{#emotions_dlg.undecided}" title="{#emotions_dlg.undecided}" /></a></td>
|
|
||||||
<td><a href="javascript:EmotionsDialog.insert('smiley-wink.gif','emotions_dlg.wink');"><img src="img/smiley-wink.gif" width="18" height="18" border="0" alt="{#emotions_dlg.wink}" title="{#emotions_dlg.wink}" /></a></td>
|
|
||||||
<td><a href="javascript:EmotionsDialog.insert('smiley-yell.gif','emotions_dlg.yell');"><img src="img/smiley-yell.gif" width="18" height="18" border="0" alt="{#emotions_dlg.yell}" title="{#emotions_dlg.yell}" /></a></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
Before Width: | Height: | Size: 344 B |
Before Width: | Height: | Size: 344 B |
Before Width: | Height: | Size: 325 B |
BIN
tools/tiny_mce/plugins/emotions/img/smiley-smile.gif
vendored
Before Width: | Height: | Size: 345 B |
Before Width: | Height: | Size: 342 B |
BIN
tools/tiny_mce/plugins/emotions/img/smiley-wink.gif
vendored
Before Width: | Height: | Size: 351 B |
22
tools/tiny_mce/plugins/emotions/js/emotions.js
vendored
@ -1,22 +0,0 @@
|
|||||||
tinyMCEPopup.requireLangPack();
|
|
||||||
|
|
||||||
var EmotionsDialog = {
|
|
||||||
init : function(ed) {
|
|
||||||
tinyMCEPopup.resizeToInnerSize();
|
|
||||||
},
|
|
||||||
|
|
||||||
insert : function(file, title) {
|
|
||||||
var ed = tinyMCEPopup.editor, dom = ed.dom;
|
|
||||||
|
|
||||||
tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', {
|
|
||||||
src : tinyMCEPopup.getWindowArg('plugin_url') + '/img/' + file,
|
|
||||||
alt : ed.getLang(title),
|
|
||||||
title : ed.getLang(title),
|
|
||||||
border : 0
|
|
||||||
}));
|
|
||||||
|
|
||||||
tinyMCEPopup.close();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
tinyMCEPopup.onInit.add(EmotionsDialog.init, EmotionsDialog);
|
|
20
tools/tiny_mce/plugins/emotions/langs/en_dlg.js
vendored
@ -1,20 +0,0 @@
|
|||||||
tinyMCE.addI18n('en.emotions_dlg',{
|
|
||||||
title:"Insert emotion",
|
|
||||||
desc:"Emotions",
|
|
||||||
cool:"Cool",
|
|
||||||
cry:"Cry",
|
|
||||||
embarassed:"Embarassed",
|
|
||||||
foot_in_mouth:"Foot in mouth",
|
|
||||||
frown:"Frown",
|
|
||||||
innocent:"Innocent",
|
|
||||||
kiss:"Kiss",
|
|
||||||
laughing:"Laughing",
|
|
||||||
money_mouth:"Money mouth",
|
|
||||||
sealed:"Sealed",
|
|
||||||
smile:"Smile",
|
|
||||||
surprised:"Surprised",
|
|
||||||
tongue_out:"Tongue out",
|
|
||||||
undecided:"Undecided",
|
|
||||||
wink:"Wink",
|
|
||||||
yell:"Yell"
|
|
||||||
});
|
|
22
tools/tiny_mce/plugins/example/dialog.htm
vendored
@ -1,22 +0,0 @@
|
|||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title>{#example_dlg.title}</title>
|
|
||||||
<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
|
|
||||||
<script type="text/javascript" src="js/dialog.js"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<form onsubmit="ExampleDialog.insert();return false;" action="#">
|
|
||||||
<p>Here is a example dialog.</p>
|
|
||||||
<p>Selected text: <input id="someval" name="someval" type="text" class="text" /></p>
|
|
||||||
<p>Custom arg: <input id="somearg" name="somearg" type="text" class="text" /></p>
|
|
||||||
|
|
||||||
<div class="mceActionPanel">
|
|
||||||
<input type="button" id="insert" name="insert" value="{#insert}" onclick="ExampleDialog.insert();" />
|
|
||||||
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1 +0,0 @@
|
|||||||
(function(){tinymce.PluginManager.requireLangPack("example");tinymce.create("tinymce.plugins.ExamplePlugin",{init:function(a,b){a.addCommand("mceExample",function(){a.windowManager.open({file:b+"/dialog.htm",width:320+parseInt(a.getLang("example.delta_width",0)),height:120+parseInt(a.getLang("example.delta_height",0)),inline:1},{plugin_url:b,some_custom_arg:"custom arg"})});a.addButton("example",{title:"example.desc",cmd:"mceExample",image:b+"/img/example.gif"});a.onNodeChange.add(function(d,c,e){c.setActive("example",e.nodeName=="IMG")})},createControl:function(b,a){return null},getInfo:function(){return{longname:"Example plugin",author:"Some author",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example",version:"1.0"}}});tinymce.PluginManager.add("example",tinymce.plugins.ExamplePlugin)})();
|
|
@ -1,84 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2009, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
// Load plugin specific language pack
|
|
||||||
tinymce.PluginManager.requireLangPack('example');
|
|
||||||
|
|
||||||
tinymce.create('tinymce.plugins.ExamplePlugin', {
|
|
||||||
/**
|
|
||||||
* Initializes the plugin, this will be executed after the plugin has been created.
|
|
||||||
* This call is done before the editor instance has finished it's initialization so use the onInit event
|
|
||||||
* of the editor instance to intercept that event.
|
|
||||||
*
|
|
||||||
* @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
|
|
||||||
* @param {string} url Absolute URL to where the plugin is located.
|
|
||||||
*/
|
|
||||||
init : function(ed, url) {
|
|
||||||
// Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample');
|
|
||||||
ed.addCommand('mceExample', function() {
|
|
||||||
ed.windowManager.open({
|
|
||||||
file : url + '/dialog.htm',
|
|
||||||
width : 320 + parseInt(ed.getLang('example.delta_width', 0)),
|
|
||||||
height : 120 + parseInt(ed.getLang('example.delta_height', 0)),
|
|
||||||
inline : 1
|
|
||||||
}, {
|
|
||||||
plugin_url : url, // Plugin absolute URL
|
|
||||||
some_custom_arg : 'custom arg' // Custom argument
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register example button
|
|
||||||
ed.addButton('example', {
|
|
||||||
title : 'example.desc',
|
|
||||||
cmd : 'mceExample',
|
|
||||||
image : url + '/img/example.gif'
|
|
||||||
});
|
|
||||||
|
|
||||||
// Add a node change handler, selects the button in the UI when a image is selected
|
|
||||||
ed.onNodeChange.add(function(ed, cm, n) {
|
|
||||||
cm.setActive('example', n.nodeName == 'IMG');
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates control instances based in the incomming name. This method is normally not
|
|
||||||
* needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons
|
|
||||||
* but you sometimes need to create more complex controls like listboxes, split buttons etc then this
|
|
||||||
* method can be used to create those.
|
|
||||||
*
|
|
||||||
* @param {String} n Name of the control to create.
|
|
||||||
* @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.
|
|
||||||
* @return {tinymce.ui.Control} New control instance or null if no control was created.
|
|
||||||
*/
|
|
||||||
createControl : function(n, cm) {
|
|
||||||
return null;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns information about the plugin as a name/value array.
|
|
||||||
* The current keys are longname, author, authorurl, infourl and version.
|
|
||||||
*
|
|
||||||
* @return {Object} Name/value array containing information about the plugin.
|
|
||||||
*/
|
|
||||||
getInfo : function() {
|
|
||||||
return {
|
|
||||||
longname : 'Example plugin',
|
|
||||||
author : 'Some author',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example',
|
|
||||||
version : "1.0"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register plugin
|
|
||||||
tinymce.PluginManager.add('example', tinymce.plugins.ExamplePlugin);
|
|
||||||
})();
|
|
BIN
tools/tiny_mce/plugins/example/img/example.gif
vendored
Before Width: | Height: | Size: 87 B |
19
tools/tiny_mce/plugins/example/js/dialog.js
vendored
@ -1,19 +0,0 @@
|
|||||||
tinyMCEPopup.requireLangPack();
|
|
||||||
|
|
||||||
var ExampleDialog = {
|
|
||||||
init : function() {
|
|
||||||
var f = document.forms[0];
|
|
||||||
|
|
||||||
// Get the selected contents as text and place it in the input
|
|
||||||
f.someval.value = tinyMCEPopup.editor.selection.getContent({format : 'text'});
|
|
||||||
f.somearg.value = tinyMCEPopup.getWindowArg('some_custom_arg');
|
|
||||||
},
|
|
||||||
|
|
||||||
insert : function() {
|
|
||||||
// Insert the contents from the input into the document
|
|
||||||
tinyMCEPopup.editor.execCommand('mceInsertContent', false, document.forms[0].someval.value);
|
|
||||||
tinyMCEPopup.close();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
tinyMCEPopup.onInit.add(ExampleDialog.init, ExampleDialog);
|
|
3
tools/tiny_mce/plugins/example/langs/en.js
vendored
@ -1,3 +0,0 @@
|
|||||||
tinyMCE.addI18n('en.example',{
|
|
||||||
desc : 'This is just a template button'
|
|
||||||
});
|
|
@ -1,3 +0,0 @@
|
|||||||
tinyMCE.addI18n('en.example_dlg',{
|
|
||||||
title : 'This is just a example title'
|
|
||||||
});
|
|
182
tools/tiny_mce/plugins/fullpage/css/fullpage.css
vendored
@ -1,182 +0,0 @@
|
|||||||
/* Hide the advanced tab */
|
|
||||||
#advanced_tab {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright {
|
|
||||||
width: 280px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#doctype, #docencoding {
|
|
||||||
width: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#langcode {
|
|
||||||
width: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#bgimage {
|
|
||||||
width: 220px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#fontface {
|
|
||||||
width: 240px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#leftmargin, #rightmargin, #topmargin, #bottommargin {
|
|
||||||
width: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.panel_wrapper div.current {
|
|
||||||
height: 400px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#stylesheet, #style {
|
|
||||||
width: 240px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Head list classes */
|
|
||||||
|
|
||||||
.headlistwrapper {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.addbutton, .removebutton, .moveupbutton, .movedownbutton {
|
|
||||||
border-top: 1px solid;
|
|
||||||
border-left: 1px solid;
|
|
||||||
border-bottom: 1px solid;
|
|
||||||
border-right: 1px solid;
|
|
||||||
border-color: #F0F0EE;
|
|
||||||
cursor: default;
|
|
||||||
display: block;
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#doctypes {
|
|
||||||
width: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.addbutton:hover, .removebutton:hover, .moveupbutton:hover, .movedownbutton:hover {
|
|
||||||
border: 1px solid #0A246A;
|
|
||||||
background-color: #B6BDD2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.addbutton {
|
|
||||||
background-image: url('../images/add.gif');
|
|
||||||
float: left;
|
|
||||||
margin-right: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.removebutton {
|
|
||||||
background-image: url('../images/remove.gif');
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.moveupbutton {
|
|
||||||
background-image: url('../images/move_up.gif');
|
|
||||||
float: left;
|
|
||||||
margin-right: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.movedownbutton {
|
|
||||||
background-image: url('../images/move_down.gif');
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.selected {
|
|
||||||
border: 1px solid #0A246A;
|
|
||||||
background-color: #B6BDD2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toolbar {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#headlist {
|
|
||||||
width: 100%;
|
|
||||||
margin-top: 3px;
|
|
||||||
font-size: 11px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#addmenu {
|
|
||||||
position: absolute;
|
|
||||||
border: 1px solid gray;
|
|
||||||
display: none;
|
|
||||||
z-index: 100;
|
|
||||||
background-color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
#addmenu a {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
line-height: 20px;
|
|
||||||
text-decoration: none;
|
|
||||||
background-color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
#addmenu a:hover {
|
|
||||||
background-color: #B6BDD2;
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
|
|
||||||
#addmenu span {
|
|
||||||
padding-left: 10px;
|
|
||||||
padding-right: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#updateElementPanel {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#script_element .panel_wrapper div.current {
|
|
||||||
height: 108px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#style_element .panel_wrapper div.current {
|
|
||||||
height: 108px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#link_element .panel_wrapper div.current {
|
|
||||||
height: 140px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#element_script_value {
|
|
||||||
width: 100%;
|
|
||||||
height: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#element_comment_value {
|
|
||||||
width: 100%;
|
|
||||||
height: 120px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#element_style_value {
|
|
||||||
width: 100%;
|
|
||||||
height: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title {
|
|
||||||
width: 250px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.updateElementButton {
|
|
||||||
margin-top: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* MSIE specific styles */
|
|
||||||
|
|
||||||
* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton {
|
|
||||||
width: 22px;
|
|
||||||
height: 22px;
|
|
||||||
}
|
|
||||||
|
|
||||||
textarea {
|
|
||||||
height: 55px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.panel_wrapper div.current {height:420px;}
|
|
@ -1 +0,0 @@
|
|||||||
(function(){tinymce.create("tinymce.plugins.FullPagePlugin",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceFullPageProperties",function(){a.windowManager.open({file:b+"/fullpage.htm",width:430+parseInt(a.getLang("fullpage.delta_width",0)),height:495+parseInt(a.getLang("fullpage.delta_height",0)),inline:1},{plugin_url:b,head_html:c.head})});a.addButton("fullpage",{title:"fullpage.desc",cmd:"mceFullPageProperties"});a.onBeforeSetContent.add(c._setContent,c);a.onSetContent.add(c._setBodyAttribs,c);a.onGetContent.add(c._getContent,c)},getInfo:function(){return{longname:"Fullpage",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_setBodyAttribs:function(d,a){var l,c,e,g,b,h,j,f=this.head.match(/body(.*?)>/i);if(f&&f[1]){l=f[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g);if(l){for(c=0,e=l.length;c<e;c++){g=l[c].split("=");b=g[0].replace(/\s/,"");h=g[1];if(h){h=h.replace(/^\s+/,"").replace(/\s+$/,"");j=h.match(/^["'](.*)["']$/);if(j){h=j[1]}}else{h=b}d.dom.setAttrib(d.getBody(),"style",h)}}}},_createSerializer:function(){return new tinymce.dom.Serializer({dom:this.editor.dom,apply_source_formatting:true})},_setContent:function(d,b){var i=this,a,l,f=b.content,h,j="";if(b.format=="raw"&&i.head){return}if(b.source_view&&d.getParam("fullpage_hide_in_source_view")){return}f=f.replace(/<(\/?)BODY/gi,"<$1body");a=f.indexOf("<body");if(a!=-1){a=f.indexOf(">",a);i.head=f.substring(0,a+1);var k=0,g;i.css="";while((k=i.head.indexOf("<style",k))!=-1){k=f.indexOf(">",k)+1;if((g=i.head.indexOf("</style",k))==-1){break}i.css+=i.head.substring(k,g);k=g}l=f.indexOf("</body",a);if(l==-1){l=f.length}b.content=f.substring(a+1,l);i.foot=f.substring(l);function e(c){return c.replace(/<\/?[A-Z]+/g,function(m){return m.toLowerCase()})}i.head=e(i.head);i.foot=e(i.foot)}else{i.head="";if(d.getParam("fullpage_default_xml_pi")){i.head+='<?xml version="1.0" encoding="'+d.getParam("fullpage_default_encoding","ISO-8859-1")+'" ?>\n'}i.head+=d.getParam("fullpage_default_doctype",'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');i.head+="\n<html>\n<head>\n<title>"+d.getParam("fullpage_default_title","Untitled document")+"</title>\n";if(h=d.getParam("fullpage_default_encoding")){i.head+='<meta http-equiv="Content-Type" content="'+h+'" />\n'}if(h=d.getParam("fullpage_default_font_family")){j+="font-family: "+h+";"}if(h=d.getParam("fullpage_default_font_size")){j+="font-size: "+h+";"}if(h=d.getParam("fullpage_default_text_color")){j+="color: "+h+";"}i.head+="</head>\n<body"+(j?' style="'+j+'"':"")+">\n";i.foot="\n</body>\n</html>"}},_getContent:function(a,c){var b=this;if(!c.source_view||!a.getParam("fullpage_hide_in_source_view")){c.content=tinymce.trim(b.head)+"\n"+tinymce.trim(c.content)+"\n"+tinymce.trim(b.foot);if(b.css){b._setStyle(a,b.css)}}},_setStyle:function(a,b){a.dom.remove("injectedCSS");var d=a.dom.doc,c=d.createElement("style");c.type="text/css";c.id="injectedCSS";if(c.styleSheet){c.styleSheet.cssText=b}else{c.appendChild(d.createTextNode(b))}d.getElementsByTagName("head")[0].appendChild(c)}});tinymce.PluginManager.add("fullpage",tinymce.plugins.FullPagePlugin)})();
|
|
182
tools/tiny_mce/plugins/fullpage/editor_plugin_src.js
vendored
@ -1,182 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2009, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
tinymce.create('tinymce.plugins.FullPagePlugin', {
|
|
||||||
init : function(ed, url) {
|
|
||||||
var t = this;
|
|
||||||
|
|
||||||
t.editor = ed;
|
|
||||||
|
|
||||||
// Register commands
|
|
||||||
ed.addCommand('mceFullPageProperties', function() {
|
|
||||||
ed.windowManager.open({
|
|
||||||
file : url + '/fullpage.htm',
|
|
||||||
width : 430 + parseInt(ed.getLang('fullpage.delta_width', 0)),
|
|
||||||
height : 495 + parseInt(ed.getLang('fullpage.delta_height', 0)),
|
|
||||||
inline : 1
|
|
||||||
}, {
|
|
||||||
plugin_url : url,
|
|
||||||
head_html : t.head
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register buttons
|
|
||||||
ed.addButton('fullpage', {title : 'fullpage.desc', cmd : 'mceFullPageProperties'});
|
|
||||||
|
|
||||||
ed.onBeforeSetContent.add(t._setContent, t);
|
|
||||||
ed.onSetContent.add(t._setBodyAttribs, t);
|
|
||||||
ed.onGetContent.add(t._getContent, t);
|
|
||||||
},
|
|
||||||
|
|
||||||
getInfo : function() {
|
|
||||||
return {
|
|
||||||
longname : 'Fullpage',
|
|
||||||
author : 'Moxiecode Systems AB',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',
|
|
||||||
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
// Private plugin internal methods
|
|
||||||
|
|
||||||
_setBodyAttribs : function(ed, o) {
|
|
||||||
var bdattr, i, len, kv, k, v, t, attr = this.head.match(/body(.*?)>/i);
|
|
||||||
|
|
||||||
if (attr && attr[1]) {
|
|
||||||
bdattr = attr[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g);
|
|
||||||
|
|
||||||
if (bdattr) {
|
|
||||||
for(i = 0, len = bdattr.length; i < len; i++) {
|
|
||||||
kv = bdattr[i].split('=');
|
|
||||||
k = kv[0].replace(/\s/,'');
|
|
||||||
v = kv[1];
|
|
||||||
|
|
||||||
if (v) {
|
|
||||||
v = v.replace(/^\s+/,'').replace(/\s+$/,'');
|
|
||||||
t = v.match(/^["'](.*)["']$/);
|
|
||||||
|
|
||||||
if (t)
|
|
||||||
v = t[1];
|
|
||||||
} else
|
|
||||||
v = k;
|
|
||||||
|
|
||||||
ed.dom.setAttrib(ed.getBody(), 'style', v);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_createSerializer : function() {
|
|
||||||
return new tinymce.dom.Serializer({
|
|
||||||
dom : this.editor.dom,
|
|
||||||
apply_source_formatting : true
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
_setContent : function(ed, o) {
|
|
||||||
var t = this, sp, ep, c = o.content, v, st = '';
|
|
||||||
|
|
||||||
// Ignore raw updated if we already have a head, this will fix issues with undo/redo keeping the head/foot separate
|
|
||||||
if (o.format == 'raw' && t.head)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (o.source_view && ed.getParam('fullpage_hide_in_source_view'))
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Parse out head, body and footer
|
|
||||||
c = c.replace(/<(\/?)BODY/gi, '<$1body');
|
|
||||||
sp = c.indexOf('<body');
|
|
||||||
|
|
||||||
if (sp != -1) {
|
|
||||||
sp = c.indexOf('>', sp);
|
|
||||||
t.head = c.substring(0, sp + 1);
|
|
||||||
|
|
||||||
// Concatenate all <style>'s text into t.css
|
|
||||||
var ss = 0, es;
|
|
||||||
t.css = '';
|
|
||||||
while ((ss = t.head.indexOf('<style', ss)) != -1) {
|
|
||||||
ss = c.indexOf('>', ss) + 1;
|
|
||||||
if ( (es = t.head.indexOf('</style', ss)) == -1)
|
|
||||||
break;
|
|
||||||
t.css += t.head.substring(ss, es);
|
|
||||||
ss = es;
|
|
||||||
}
|
|
||||||
|
|
||||||
ep = c.indexOf('</body', sp);
|
|
||||||
if (ep == -1)
|
|
||||||
ep = c.length;
|
|
||||||
|
|
||||||
o.content = c.substring(sp + 1, ep);
|
|
||||||
t.foot = c.substring(ep);
|
|
||||||
|
|
||||||
function low(s) {
|
|
||||||
return s.replace(/<\/?[A-Z]+/g, function(a) {
|
|
||||||
return a.toLowerCase();
|
|
||||||
})
|
|
||||||
};
|
|
||||||
|
|
||||||
t.head = low(t.head);
|
|
||||||
t.foot = low(t.foot);
|
|
||||||
} else {
|
|
||||||
t.head = '';
|
|
||||||
if (ed.getParam('fullpage_default_xml_pi'))
|
|
||||||
t.head += '<?xml version="1.0" encoding="' + ed.getParam('fullpage_default_encoding', 'ISO-8859-1') + '" ?>\n';
|
|
||||||
|
|
||||||
t.head += ed.getParam('fullpage_default_doctype', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
|
|
||||||
t.head += '\n<html>\n<head>\n<title>' + ed.getParam('fullpage_default_title', 'Untitled document') + '</title>\n';
|
|
||||||
|
|
||||||
if (v = ed.getParam('fullpage_default_encoding'))
|
|
||||||
t.head += '<meta http-equiv="Content-Type" content="' + v + '" />\n';
|
|
||||||
|
|
||||||
if (v = ed.getParam('fullpage_default_font_family'))
|
|
||||||
st += 'font-family: ' + v + ';';
|
|
||||||
|
|
||||||
if (v = ed.getParam('fullpage_default_font_size'))
|
|
||||||
st += 'font-size: ' + v + ';';
|
|
||||||
|
|
||||||
if (v = ed.getParam('fullpage_default_text_color'))
|
|
||||||
st += 'color: ' + v + ';';
|
|
||||||
|
|
||||||
t.head += '</head>\n<body' + (st ? ' style="' + st + '"' : '') + '>\n';
|
|
||||||
t.foot = '\n</body>\n</html>';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_getContent : function(ed, o) {
|
|
||||||
var t = this;
|
|
||||||
|
|
||||||
if (!o.source_view || !ed.getParam('fullpage_hide_in_source_view')) {
|
|
||||||
o.content = tinymce.trim(t.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(t.foot);
|
|
||||||
|
|
||||||
if (t.css)
|
|
||||||
t._setStyle(ed, t.css);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_setStyle : function(ed, css) {
|
|
||||||
ed.dom.remove('injectedCSS');
|
|
||||||
var doc = ed.dom.doc, style = doc.createElement('style');
|
|
||||||
style.type = 'text/css';
|
|
||||||
style.id = 'injectedCSS';
|
|
||||||
|
|
||||||
if (style.styleSheet) // IE
|
|
||||||
style.styleSheet.cssText = css;
|
|
||||||
else // other browsers
|
|
||||||
style.appendChild(doc.createTextNode(css));
|
|
||||||
|
|
||||||
doc.getElementsByTagName('head')[0].appendChild(style);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register plugin
|
|
||||||
tinymce.PluginManager.add('fullpage', tinymce.plugins.FullPagePlugin);
|
|
||||||
})();
|
|
571
tools/tiny_mce/plugins/fullpage/fullpage.htm
vendored
@ -1,571 +0,0 @@
|
|||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title>{#fullpage_dlg.title}</title>
|
|
||||||
<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
|
|
||||||
<script type="text/javascript" src="../../utils/mctabs.js"></script>
|
|
||||||
<script type="text/javascript" src="../../utils/form_utils.js"></script>
|
|
||||||
<script type="text/javascript" src="js/fullpage.js"></script>
|
|
||||||
<link href="css/fullpage.css" rel="stylesheet" type="text/css" />
|
|
||||||
</head>
|
|
||||||
<body id="advlink" style="display: none">
|
|
||||||
<form onsubmit="updateAction();return false;" name="fullpage" action="#">
|
|
||||||
<div class="tabs">
|
|
||||||
<ul>
|
|
||||||
<li id="meta_tab" class="current"><span><a href="javascript:mcTabs.displayTab('meta_tab','meta_panel');" onmousedown="return false;">{#fullpage_dlg.meta_tab}</a></span></li>
|
|
||||||
<li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{#fullpage_dlg.appearance_tab}</a></span></li>
|
|
||||||
<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#fullpage_dlg.advanced_tab}</a></span></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="panel_wrapper">
|
|
||||||
<div id="meta_panel" class="panel current">
|
|
||||||
<fieldset>
|
|
||||||
<legend>{#fullpage_dlg.meta_props}</legend>
|
|
||||||
|
|
||||||
<table border="0" cellpadding="4" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td class="nowrap"><label for="metatitle">{#fullpage_dlg.meta_title}</label> </td>
|
|
||||||
<td><input type="text" id="metatitle" name="metatitle" value="" class="mceFocus" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="nowrap"><label for="metakeywords">{#fullpage_dlg.meta_keywords}</label> </td>
|
|
||||||
<td><textarea id="metakeywords" name="metakeywords" rows="4"></textarea></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="nowrap"><label for="metadescription">{#fullpage_dlg.meta_description}</label> </td>
|
|
||||||
<td><textarea id="metadescription" name="metadescription" rows="4"></textarea></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="nowrap"><label for="metaauthor">{#fullpage_dlg.author}</label> </td>
|
|
||||||
<td><input type="text" id="metaauthor" name="metaauthor" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="nowrap"><label for="metacopyright">{#fullpage_dlg.copyright}</label> </td>
|
|
||||||
<td><input type="text" id="metacopyright" name="metacopyright" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="nowrap"><label for="metarobots">{#fullpage_dlg.meta_robots}</label> </td>
|
|
||||||
<td>
|
|
||||||
<select id="metarobots" name="metarobots">
|
|
||||||
<option value="">{#not_set}</option>
|
|
||||||
<option value="index,follow">{#fullpage_dlg.meta_index_follow}</option>
|
|
||||||
<option value="index,nofollow">{#fullpage_dlg.meta_index_nofollow}</option>
|
|
||||||
<option value="noindex,follow">{#fullpage_dlg.meta_noindex_follow}</option>
|
|
||||||
<option value="noindex,nofollow">{#fullpage_dlg.meta_noindex_nofollow}</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{#fullpage_dlg.langprops}</legend>
|
|
||||||
|
|
||||||
<table border="0" cellpadding="4" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="docencoding">{#fullpage_dlg.encoding}</label></td>
|
|
||||||
<td>
|
|
||||||
<select id="docencoding" name="docencoding">
|
|
||||||
<option value="">{#not_set}</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="nowrap"><label for="doctypes">{#fullpage_dlg.doctypes}</label> </td>
|
|
||||||
<td>
|
|
||||||
<select id="doctypes" name="doctypes">
|
|
||||||
<option value="">{#not_set}</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="nowrap"><label for="langcode">{#fullpage_dlg.langcode}</label> </td>
|
|
||||||
<td><input type="text" id="langcode" name="langcode" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="langdir">{#fullpage_dlg.langdir}</label></td>
|
|
||||||
<td>
|
|
||||||
<select id="langdir" name="langdir">
|
|
||||||
<option value="">{#not_set}</option>
|
|
||||||
<option value="ltr">{#fullpage_dlg.ltr}</option>
|
|
||||||
<option value="rtl">{#fullpage_dlg.rtl}</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="nowrap"><label for="xml_pi">{#fullpage_dlg.xml_pi}</label> </td>
|
|
||||||
<td><input type="checkbox" id="xml_pi" name="xml_pi" class="checkbox" /></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="appearance_panel" class="panel">
|
|
||||||
<fieldset>
|
|
||||||
<legend>{#fullpage_dlg.appearance_textprops}</legend>
|
|
||||||
|
|
||||||
<table border="0" cellpadding="4" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="fontface">{#fullpage_dlg.fontface}</label></td>
|
|
||||||
<td>
|
|
||||||
<select id="fontface" name="fontface" onchange="changedStyleField(this);">
|
|
||||||
<option value="">{#not_set}</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="fontsize">{#fullpage_dlg.fontsize}</label></td>
|
|
||||||
<td>
|
|
||||||
<select id="fontsize" name="fontsize" onchange="changedStyleField(this);">
|
|
||||||
<option value="">{#not_set}</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="textcolor">{#fullpage_dlg.textcolor}</label></td>
|
|
||||||
<td>
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td><input id="textcolor" name="textcolor" type="text" value="" size="9" onchange="updateColor('textcolor_pick','textcolor');changedStyleField(this);" /></td>
|
|
||||||
<td id="textcolor_pickcontainer"> </td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{#fullpage_dlg.appearance_bgprops}</legend>
|
|
||||||
|
|
||||||
<table border="0" cellpadding="4" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="bgimage">{#fullpage_dlg.bgimage}</label></td>
|
|
||||||
<td>
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td><input id="bgimage" name="bgimage" type="text" value="" onchange="changedStyleField(this);" /></td>
|
|
||||||
<td id="bgimage_pickcontainer"> </td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="bgcolor">{#fullpage_dlg.bgcolor}</label></td>
|
|
||||||
<td>
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedStyleField(this);" /></td>
|
|
||||||
<td id="bgcolor_pickcontainer"> </td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{#fullpage_dlg.appearance_marginprops}</legend>
|
|
||||||
|
|
||||||
<table border="0" cellpadding="4" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="leftmargin">{#fullpage_dlg.left_margin}</label></td>
|
|
||||||
<td><input id="leftmargin" name="leftmargin" type="text" value="" onchange="changedStyleField(this);" /></td>
|
|
||||||
<td class="column1"><label for="rightmargin">{#fullpage_dlg.right_margin}</label></td>
|
|
||||||
<td><input id="rightmargin" name="rightmargin" type="text" value="" onchange="changedStyleField(this);" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="topmargin">{#fullpage_dlg.top_margin}</label></td>
|
|
||||||
<td><input id="topmargin" name="topmargin" type="text" value="" onchange="changedStyleField(this);" /></td>
|
|
||||||
<td class="column1"><label for="bottommargin">{#fullpage_dlg.bottom_margin}</label></td>
|
|
||||||
<td><input id="bottommargin" name="bottommargin" type="text" value="" onchange="changedStyleField(this);" /></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{#fullpage_dlg.appearance_linkprops}</legend>
|
|
||||||
|
|
||||||
<table border="0" cellpadding="4" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="link_color">{#fullpage_dlg.link_color}</label></td>
|
|
||||||
<td>
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td><input id="link_color" name="link_color" type="text" value="" size="9" onchange="updateColor('link_color_pick','link_color');changedStyleField(this);" /></td>
|
|
||||||
<td id="link_color_pickcontainer"> </td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td class="column1"><label for="visited_color">{#fullpage_dlg.visited_color}</label></td>
|
|
||||||
<td>
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td><input id="visited_color" name="visited_color" type="text" value="" size="9" onchange="updateColor('visited_color_pick','visited_color');changedStyleField(this);" /></td>
|
|
||||||
<td id="visited_color_pickcontainer"> </td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="active_color">{#fullpage_dlg.active_color}</label></td>
|
|
||||||
<td>
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td><input id="active_color" name="active_color" type="text" value="" size="9" onchange="updateColor('active_color_pick','active_color');changedStyleField(this);" /></td>
|
|
||||||
<td id="active_color_pickcontainer"> </td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td> </td>
|
|
||||||
<td> </td>
|
|
||||||
|
|
||||||
<!-- <td class="column1"><label for="hover_color">{#fullpage_dlg.hover_color}</label></td>
|
|
||||||
<td>
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td><input id="hover_color" name="hover_color" type="text" value="" size="9" onchange="changedStyleField(this);" /></td>
|
|
||||||
<td id="hover_color_pickcontainer"> </td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td> -->
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{#fullpage_dlg.appearance_style}</legend>
|
|
||||||
|
|
||||||
<table border="0" cellpadding="4" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="stylesheet">{#fullpage_dlg.stylesheet}</label></td>
|
|
||||||
<td><table border="0" cellpadding="0" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td><input id="stylesheet" name="stylesheet" type="text" value="" /></td>
|
|
||||||
<td id="stylesheet_browsercontainer"> </td>
|
|
||||||
</tr>
|
|
||||||
</table></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="style">{#fullpage_dlg.style}</label></td>
|
|
||||||
<td><input id="style" name="style" type="text" value="" onchange="changedStyleField(this);" /></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="advanced_panel" class="panel">
|
|
||||||
<div id="addmenu">
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0">
|
|
||||||
<tr><td><a href="javascript:addHeadElm('title');" onmousedown="return false;"><span>{#fullpage_dlg.add_title}</span></a></td></tr>
|
|
||||||
<tr><td><a href="javascript:addHeadElm('meta');" onmousedown="return false;"><span>{#fullpage_dlg.add_meta}</span></a></td></tr>
|
|
||||||
<tr><td><a href="javascript:addHeadElm('script');" onmousedown="return false;"><span>{#fullpage_dlg.add_script}</span></a></td></tr>
|
|
||||||
<tr><td><a href="javascript:addHeadElm('style');" onmousedown="return false;"><span>{#fullpage_dlg.add_style}</span></a></td></tr>
|
|
||||||
<tr><td><a href="javascript:addHeadElm('link');" onmousedown="return false;"><span>{#fullpage_dlg.add_link}</span></a></td></tr>
|
|
||||||
<tr><td><a href="javascript:addHeadElm('base');" onmousedown="return false;"><span>{#fullpage_dlg.add_base}</span></a></td></tr>
|
|
||||||
<tr><td><a href="javascript:addHeadElm('comment');" onmousedown="return false;"><span>{#fullpage_dlg.add_comment}</span></a></td></tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<legend>{#fullpage_dlg.head_elements}</legend>
|
|
||||||
|
|
||||||
<div class="headlistwrapper">
|
|
||||||
<div class="toolbar">
|
|
||||||
<div style="float: left">
|
|
||||||
<a id="addbutton" href="javascript:showAddMenu();" onmousedown="return false;" class="addbutton" title="{#fullpage_dlg.add}"></a>
|
|
||||||
<a href="#" onmousedown="return false;" class="removebutton" title="{#fullpage_dlg.remove}"></a>
|
|
||||||
</div>
|
|
||||||
<div style="float: right">
|
|
||||||
<a href="#" onmousedown="return false;" class="moveupbutton" title="{#fullpage_dlg.moveup}"></a>
|
|
||||||
<a href="#" onmousedown="return false;" class="movedownbutton" title="{#fullpage_dlg.movedown}"></a>
|
|
||||||
</div>
|
|
||||||
<br style="clear: both" />
|
|
||||||
</div>
|
|
||||||
<select id="headlist" size="26" onchange="updateHeadElm(this.options[this.selectedIndex].value);">
|
|
||||||
<option value="title_0"><title>Some title bla bla bla</title></option>
|
|
||||||
<option value="meta_1"><meta name="keywords">Some bla bla bla</meta></option>
|
|
||||||
<option value="meta_2"><meta name="description">Some bla bla bla bla bla bla bla bla bla</meta></option>
|
|
||||||
<option value="script_3"><script language="javascript">...</script></option>
|
|
||||||
<option value="style_4"><style>...</style></option>
|
|
||||||
<option value="base_5"><base href="." /></option>
|
|
||||||
<option value="comment_6"><!-- ... --></option>
|
|
||||||
<option value="link_7"><link href="." /></option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset id="meta_element">
|
|
||||||
<legend>{#fullpage_dlg.meta_element}</legend>
|
|
||||||
|
|
||||||
<table border="0" cellpadding="4" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="element_meta_type">{#fullpage_dlg.type}</label></td>
|
|
||||||
<td><select id="element_meta_type">
|
|
||||||
<option value="name">name</option>
|
|
||||||
<option value="http-equiv">http-equiv</option>
|
|
||||||
</select></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="element_meta_name">{#fullpage_dlg.name}</label></td>
|
|
||||||
<td><input id="element_meta_name" name="element_meta_name" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="element_meta_content">{#fullpage_dlg.content}</label></td>
|
|
||||||
<td><input id="element_meta_content" name="element_meta_content" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<input type="button" id="meta_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset id="title_element">
|
|
||||||
<legend>{#fullpage_dlg.title_element}</legend>
|
|
||||||
|
|
||||||
<table border="0" cellpadding="4" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="element_title">{#fullpage_dlg.meta_title}</label></td>
|
|
||||||
<td><input id="element_title" name="element_title" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<input type="button" id="title_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset id="script_element">
|
|
||||||
<legend>{#fullpage_dlg.script_element}</legend>
|
|
||||||
|
|
||||||
<div class="tabs">
|
|
||||||
<ul>
|
|
||||||
<li id="script_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('script_props_tab','script_props_panel');" onmousedown="return false;">{#fullpage_dlg.properties}</a></span></li>
|
|
||||||
<li id="script_value_tab"><span><a href="javascript:mcTabs.displayTab('script_value_tab','script_value_panel');" onmousedown="return false;">{#fullpage_dlg.value}</a></span></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<br style="clear: both" />
|
|
||||||
|
|
||||||
<div class="panel_wrapper">
|
|
||||||
<div id="script_props_panel" class="panel current">
|
|
||||||
<table border="0" cellpadding="4" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="element_script_type">{#fullpage_dlg.type}</label></td>
|
|
||||||
<td><select id="element_script_type">
|
|
||||||
<option value="text/javascript">text/javascript</option>
|
|
||||||
<option value="text/jscript">text/jscript</option>
|
|
||||||
<option value="text/vbscript">text/vbscript</option>
|
|
||||||
<option value="text/vbs">text/vbs</option>
|
|
||||||
<option value="text/ecmascript">text/ecmascript</option>
|
|
||||||
<option value="text/xml">text/xml</option>
|
|
||||||
</select></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="element_script_src">{#fullpage_dlg.src}</label></td>
|
|
||||||
<td><table border="0" cellpadding="0" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td><input id="element_script_src" name="element_script_src" type="text" value="" /></td>
|
|
||||||
<td id="script_src_pickcontainer"> </td>
|
|
||||||
</tr>
|
|
||||||
</table></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="element_script_charset">{#fullpage_dlg.charset}</label></td>
|
|
||||||
<td><select id="element_script_charset"><option value="">{#not_set}</option></select></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="element_script_defer">{#fullpage_dlg.defer}</label></td>
|
|
||||||
<td><input type="checkbox" id="element_script_defer" name="element_script_defer" class="checkbox" /></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="script_value_panel" class="panel">
|
|
||||||
<textarea id="element_script_value"></textarea>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<input type="button" id="script_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset id="style_element">
|
|
||||||
<legend>{#fullpage_dlg.style_element}</legend>
|
|
||||||
|
|
||||||
<div class="tabs">
|
|
||||||
<ul>
|
|
||||||
<li id="style_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('style_props_tab','style_props_panel');" onmousedown="return false;">{#fullpage_dlg.properties}</a></span></li>
|
|
||||||
<li id="style_value_tab"><span><a href="javascript:mcTabs.displayTab('style_value_tab','style_value_panel');" onmousedown="return false;">{#fullpage_dlg.value}</a></span></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<br style="clear: both" />
|
|
||||||
|
|
||||||
<div class="panel_wrapper">
|
|
||||||
<div id="style_props_panel" class="panel current">
|
|
||||||
<table border="0" cellpadding="4" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="element_style_type">{#fullpage_dlg.type}</label></td>
|
|
||||||
<td><select id="element_style_type">
|
|
||||||
<option value="text/css">text/css</option>
|
|
||||||
</select></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="element_style_media">{#fullpage_dlg.media}</label></td>
|
|
||||||
<td><select id="element_style_media"></select></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="style_value_panel" class="panel">
|
|
||||||
<textarea id="element_style_value"></textarea>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<input type="button" id="style_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset id="base_element">
|
|
||||||
<legend>{#fullpage_dlg.base_element}</legend>
|
|
||||||
|
|
||||||
<table border="0" cellpadding="4" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="element_base_href">{#fullpage_dlg.href}</label></td>
|
|
||||||
<td><input id="element_base_href" name="element_base_href" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="element_base_target">{#fullpage_dlg.target}</label></td>
|
|
||||||
<td><input id="element_base_target" name="element_base_target" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<input type="button" id="base_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset id="link_element">
|
|
||||||
<legend>{#fullpage_dlg.link_element}</legend>
|
|
||||||
|
|
||||||
<div class="tabs">
|
|
||||||
<ul>
|
|
||||||
<li id="link_general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('link_general_tab','link_general_panel');" onmousedown="return false;">{#fullpage_dlg.general_props}</a></span></li>
|
|
||||||
<li id="link_advanced_tab"><span><a href="javascript:mcTabs.displayTab('link_advanced_tab','link_advanced_panel');" onmousedown="return false;">{#fullpage_dlg.advanced_props}</a></span></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<br style="clear: both" />
|
|
||||||
|
|
||||||
<div class="panel_wrapper">
|
|
||||||
<div id="link_general_panel" class="panel current">
|
|
||||||
<table border="0" cellpadding="4" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="element_link_href">{#fullpage_dlg.href}</label></td>
|
|
||||||
<td><table border="0" cellpadding="0" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td><input id="element_link_href" name="element_link_href" type="text" value="" /></td>
|
|
||||||
<td id="link_href_pickcontainer"> </td>
|
|
||||||
</tr>
|
|
||||||
</table></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="element_link_title">{#fullpage_dlg.meta_title}</label></td>
|
|
||||||
<td><input id="element_link_title" name="element_link_title" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="element_link_type">{#fullpage_dlg.type}</label></td>
|
|
||||||
<td><select id="element_link_type" name="element_link_type">
|
|
||||||
<option value="text/css">text/css</option>
|
|
||||||
<option value="text/javascript">text/javascript</option>
|
|
||||||
</select></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="element_link_media">{#fullpage_dlg.media}</label></td>
|
|
||||||
<td><select id="element_link_media" name="element_link_media"></select></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><label for="element_style_rel">{#fullpage_dlg.rel}</label></td>
|
|
||||||
<td><select id="element_style_rel" name="element_style_rel">
|
|
||||||
<option value="">{#not_set}</option>
|
|
||||||
<option value="stylesheet">Stylesheet</option>
|
|
||||||
<option value="alternate">Alternate</option>
|
|
||||||
<option value="designates">Designates</option>
|
|
||||||
<option value="start">Start</option>
|
|
||||||
<option value="next">Next</option>
|
|
||||||
<option value="prev">Prev</option>
|
|
||||||
<option value="contents">Contents</option>
|
|
||||||
<option value="index">Index</option>
|
|
||||||
<option value="glossary">Glossary</option>
|
|
||||||
<option value="copyright">Copyright</option>
|
|
||||||
<option value="chapter">Chapter</option>
|
|
||||||
<option value="subsection">Subsection</option>
|
|
||||||
<option value="appendix">Appendix</option>
|
|
||||||
<option value="help">Help</option>
|
|
||||||
<option value="bookmark">Bookmark</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="link_advanced_panel" class="panel">
|
|
||||||
<table border="0" cellpadding="4" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="element_link_charset">{#fullpage_dlg.charset}</label></td>
|
|
||||||
<td><select id="element_link_charset"><option value="">{#not_set}</option></select></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="element_link_hreflang">{#fullpage_dlg.hreflang}</label></td>
|
|
||||||
<td><input id="element_link_hreflang" name="element_link_hreflang" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="column1"><label for="element_link_target">{#fullpage_dlg.target}</label></td>
|
|
||||||
<td><input id="element_link_target" name="element_link_target" type="text" value="" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><label for="element_style_rev">{#fullpage_dlg.rev}</label></td>
|
|
||||||
<td><select id="element_style_rev" name="element_style_rev">
|
|
||||||
<option value="">{#not_set}</option>
|
|
||||||
<option value="alternate">Alternate</option>
|
|
||||||
<option value="designates">Designates</option>
|
|
||||||
<option value="stylesheet">Stylesheet</option>
|
|
||||||
<option value="start">Start</option>
|
|
||||||
<option value="next">Next</option>
|
|
||||||
<option value="prev">Prev</option>
|
|
||||||
<option value="contents">Contents</option>
|
|
||||||
<option value="index">Index</option>
|
|
||||||
<option value="glossary">Glossary</option>
|
|
||||||
<option value="copyright">Copyright</option>
|
|
||||||
<option value="chapter">Chapter</option>
|
|
||||||
<option value="subsection">Subsection</option>
|
|
||||||
<option value="appendix">Appendix</option>
|
|
||||||
<option value="help">Help</option>
|
|
||||||
<option value="bookmark">Bookmark</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<input type="button" id="link_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset id="comment_element">
|
|
||||||
<legend>{#fullpage_dlg.comment_element}</legend>
|
|
||||||
|
|
||||||
<textarea id="element_comment_value"></textarea>
|
|
||||||
|
|
||||||
<input type="button" id="comment_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceActionPanel">
|
|
||||||
<input type="submit" id="insert" name="update" value="{#update}" />
|
|
||||||
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
471
tools/tiny_mce/plugins/fullpage/js/fullpage.js
vendored
@ -1,471 +0,0 @@
|
|||||||
/**
|
|
||||||
* fullpage.js
|
|
||||||
*
|
|
||||||
* Copyright 2009, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*/
|
|
||||||
|
|
||||||
tinyMCEPopup.requireLangPack();
|
|
||||||
|
|
||||||
var doc;
|
|
||||||
|
|
||||||
var defaultDocTypes =
|
|
||||||
'XHTML 1.0 Transitional=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">,' +
|
|
||||||
'XHTML 1.0 Frameset=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">,' +
|
|
||||||
'XHTML 1.0 Strict=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">,' +
|
|
||||||
'XHTML 1.1=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">,' +
|
|
||||||
'HTML 4.01 Transitional=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">,' +
|
|
||||||
'HTML 4.01 Strict=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">,' +
|
|
||||||
'HTML 4.01 Frameset=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">';
|
|
||||||
|
|
||||||
var defaultEncodings =
|
|
||||||
'Western european (iso-8859-1)=iso-8859-1,' +
|
|
||||||
'Central European (iso-8859-2)=iso-8859-2,' +
|
|
||||||
'Unicode (UTF-8)=utf-8,' +
|
|
||||||
'Chinese traditional (Big5)=big5,' +
|
|
||||||
'Cyrillic (iso-8859-5)=iso-8859-5,' +
|
|
||||||
'Japanese (iso-2022-jp)=iso-2022-jp,' +
|
|
||||||
'Greek (iso-8859-7)=iso-8859-7,' +
|
|
||||||
'Korean (iso-2022-kr)=iso-2022-kr,' +
|
|
||||||
'ASCII (us-ascii)=us-ascii';
|
|
||||||
|
|
||||||
var defaultMediaTypes =
|
|
||||||
'all=all,' +
|
|
||||||
'screen=screen,' +
|
|
||||||
'print=print,' +
|
|
||||||
'tty=tty,' +
|
|
||||||
'tv=tv,' +
|
|
||||||
'projection=projection,' +
|
|
||||||
'handheld=handheld,' +
|
|
||||||
'braille=braille,' +
|
|
||||||
'aural=aural';
|
|
||||||
|
|
||||||
var defaultFontNames = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';
|
|
||||||
var defaultFontSizes = '10px,11px,12px,13px,14px,15px,16px';
|
|
||||||
|
|
||||||
function init() {
|
|
||||||
var f = document.forms['fullpage'], el = f.elements, e, i, p, doctypes, encodings, mediaTypes, fonts, ed = tinyMCEPopup.editor, dom = tinyMCEPopup.dom, style;
|
|
||||||
|
|
||||||
// Setup doctype select box
|
|
||||||
doctypes = ed.getParam("fullpage_doctypes", defaultDocTypes).split(',');
|
|
||||||
for (i=0; i<doctypes.length; i++) {
|
|
||||||
p = doctypes[i].split('=');
|
|
||||||
|
|
||||||
if (p.length > 1)
|
|
||||||
addSelectValue(f, 'doctypes', p[0], p[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setup fonts select box
|
|
||||||
fonts = ed.getParam("fullpage_fonts", defaultFontNames).split(';');
|
|
||||||
for (i=0; i<fonts.length; i++) {
|
|
||||||
p = fonts[i].split('=');
|
|
||||||
|
|
||||||
if (p.length > 1)
|
|
||||||
addSelectValue(f, 'fontface', p[0], p[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setup fontsize select box
|
|
||||||
fonts = ed.getParam("fullpage_fontsizes", defaultFontSizes).split(',');
|
|
||||||
for (i=0; i<fonts.length; i++)
|
|
||||||
addSelectValue(f, 'fontsize', fonts[i], fonts[i]);
|
|
||||||
|
|
||||||
// Setup mediatype select boxs
|
|
||||||
mediaTypes = ed.getParam("fullpage_media_types", defaultMediaTypes).split(',');
|
|
||||||
for (i=0; i<mediaTypes.length; i++) {
|
|
||||||
p = mediaTypes[i].split('=');
|
|
||||||
|
|
||||||
if (p.length > 1) {
|
|
||||||
addSelectValue(f, 'element_style_media', p[0], p[1]);
|
|
||||||
addSelectValue(f, 'element_link_media', p[0], p[1]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setup encodings select box
|
|
||||||
encodings = ed.getParam("fullpage_encodings", defaultEncodings).split(',');
|
|
||||||
for (i=0; i<encodings.length; i++) {
|
|
||||||
p = encodings[i].split('=');
|
|
||||||
|
|
||||||
if (p.length > 1) {
|
|
||||||
addSelectValue(f, 'docencoding', p[0], p[1]);
|
|
||||||
addSelectValue(f, 'element_script_charset', p[0], p[1]);
|
|
||||||
addSelectValue(f, 'element_link_charset', p[0], p[1]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
|
|
||||||
document.getElementById('link_color_pickcontainer').innerHTML = getColorPickerHTML('link_color_pick','link_color');
|
|
||||||
//document.getElementById('hover_color_pickcontainer').innerHTML = getColorPickerHTML('hover_color_pick','hover_color');
|
|
||||||
document.getElementById('visited_color_pickcontainer').innerHTML = getColorPickerHTML('visited_color_pick','visited_color');
|
|
||||||
document.getElementById('active_color_pickcontainer').innerHTML = getColorPickerHTML('active_color_pick','active_color');
|
|
||||||
document.getElementById('textcolor_pickcontainer').innerHTML = getColorPickerHTML('textcolor_pick','textcolor');
|
|
||||||
document.getElementById('stylesheet_browsercontainer').innerHTML = getBrowserHTML('stylesheetbrowser','stylesheet','file','fullpage');
|
|
||||||
document.getElementById('link_href_pickcontainer').innerHTML = getBrowserHTML('link_href_browser','element_link_href','file','fullpage');
|
|
||||||
document.getElementById('script_src_pickcontainer').innerHTML = getBrowserHTML('script_src_browser','element_script_src','file','fullpage');
|
|
||||||
document.getElementById('bgimage_pickcontainer').innerHTML = getBrowserHTML('bgimage_browser','bgimage','image','fullpage');
|
|
||||||
|
|
||||||
// Resize some elements
|
|
||||||
if (isVisible('stylesheetbrowser'))
|
|
||||||
document.getElementById('stylesheet').style.width = '220px';
|
|
||||||
|
|
||||||
if (isVisible('link_href_browser'))
|
|
||||||
document.getElementById('element_link_href').style.width = '230px';
|
|
||||||
|
|
||||||
if (isVisible('bgimage_browser'))
|
|
||||||
document.getElementById('bgimage').style.width = '210px';
|
|
||||||
|
|
||||||
// Add iframe
|
|
||||||
dom.add(document.body, 'iframe', {id : 'documentIframe', src : 'javascript:""', style : {display : 'none'}});
|
|
||||||
doc = dom.get('documentIframe').contentWindow.document;
|
|
||||||
h = tinyMCEPopup.getWindowArg('head_html');
|
|
||||||
|
|
||||||
// Preprocess the HTML disable scripts and urls
|
|
||||||
h = h.replace(/<script>/gi, '<script type="text/javascript">');
|
|
||||||
h = h.replace(/type=([\"\'])?/gi, 'type=$1-mce-');
|
|
||||||
h = h.replace(/(src=|href=)/g, '_mce_$1');
|
|
||||||
|
|
||||||
// Write in the content in the iframe
|
|
||||||
doc.write(h + '</body></html>');
|
|
||||||
doc.close();
|
|
||||||
|
|
||||||
// Parse xml and doctype
|
|
||||||
xmlVer = getReItem(/<\?\s*?xml.*?version\s*?=\s*?"(.*?)".*?\?>/gi, h, 1);
|
|
||||||
xmlEnc = getReItem(/<\?\s*?xml.*?encoding\s*?=\s*?"(.*?)".*?\?>/gi, h, 1);
|
|
||||||
docType = getReItem(/<\!DOCTYPE.*?>/gi, h.replace(/\n/g, ''), 0).replace(/ +/g, ' ');
|
|
||||||
f.langcode.value = getReItem(/lang="(.*?)"/gi, h, 1);
|
|
||||||
|
|
||||||
// Parse title
|
|
||||||
if (e = doc.getElementsByTagName('title')[0])
|
|
||||||
el.metatitle.value = e.textContent || e.text;
|
|
||||||
|
|
||||||
// Parse meta
|
|
||||||
tinymce.each(doc.getElementsByTagName('meta'), function(n) {
|
|
||||||
var na = (n.getAttribute('name', 2) || '').toLowerCase(), va = n.getAttribute('content', 2), eq = n.getAttribute('httpEquiv', 2) || '';
|
|
||||||
|
|
||||||
e = el['meta' + na];
|
|
||||||
|
|
||||||
if (na == 'robots') {
|
|
||||||
selectByValue(f, 'metarobots', tinymce.trim(va), true, true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (eq.toLowerCase()) {
|
|
||||||
case "content-type":
|
|
||||||
tmp = getReItem(/charset\s*=\s*(.*)\s*/gi, va, 1);
|
|
||||||
|
|
||||||
// Override XML encoding
|
|
||||||
if (tmp != "")
|
|
||||||
xmlEnc = tmp;
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (e)
|
|
||||||
e.value = va;
|
|
||||||
});
|
|
||||||
|
|
||||||
selectByValue(f, 'doctypes', docType, true, true);
|
|
||||||
selectByValue(f, 'docencoding', xmlEnc, true, true);
|
|
||||||
selectByValue(f, 'langdir', doc.body.getAttribute('dir', 2) || '', true, true);
|
|
||||||
|
|
||||||
if (xmlVer != '')
|
|
||||||
el.xml_pi.checked = true;
|
|
||||||
|
|
||||||
// Parse appearance
|
|
||||||
|
|
||||||
// Parse primary stylesheet
|
|
||||||
tinymce.each(doc.getElementsByTagName("link"), function(l) {
|
|
||||||
var m = l.getAttribute('media', 2) || '', t = l.getAttribute('type', 2) || '';
|
|
||||||
|
|
||||||
if (t == "-mce-text/css" && (m == "" || m == "screen" || m == "all") && (l.getAttribute('rel', 2) || '') == "stylesheet") {
|
|
||||||
f.stylesheet.value = l.getAttribute('_mce_href', 2) || '';
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Get from style elements
|
|
||||||
tinymce.each(doc.getElementsByTagName("style"), function(st) {
|
|
||||||
var tmp = parseStyleElement(st);
|
|
||||||
|
|
||||||
for (x=0; x<tmp.length; x++) {
|
|
||||||
if (tmp[x].rule.indexOf('a:visited') != -1 && tmp[x].data['color'])
|
|
||||||
f.visited_color.value = tmp[x].data['color'];
|
|
||||||
|
|
||||||
if (tmp[x].rule.indexOf('a:link') != -1 && tmp[x].data['color'])
|
|
||||||
f.link_color.value = tmp[x].data['color'];
|
|
||||||
|
|
||||||
if (tmp[x].rule.indexOf('a:active') != -1 && tmp[x].data['color'])
|
|
||||||
f.active_color.value = tmp[x].data['color'];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
f.textcolor.value = tinyMCEPopup.dom.getAttrib(doc.body, "text");
|
|
||||||
f.active_color.value = tinyMCEPopup.dom.getAttrib(doc.body, "alink");
|
|
||||||
f.link_color.value = tinyMCEPopup.dom.getAttrib(doc.body, "link");
|
|
||||||
f.visited_color.value = tinyMCEPopup.dom.getAttrib(doc.body, "vlink");
|
|
||||||
f.bgcolor.value = tinyMCEPopup.dom.getAttrib(doc.body, "bgcolor");
|
|
||||||
f.bgimage.value = tinyMCEPopup.dom.getAttrib(doc.body, "background");
|
|
||||||
|
|
||||||
// Get from style info
|
|
||||||
style = tinyMCEPopup.dom.parseStyle(tinyMCEPopup.dom.getAttrib(doc.body, 'style'));
|
|
||||||
|
|
||||||
if (style['font-family'])
|
|
||||||
selectByValue(f, 'fontface', style['font-family'], true, true);
|
|
||||||
else
|
|
||||||
selectByValue(f, 'fontface', ed.getParam("fullpage_default_fontface", ""), true, true);
|
|
||||||
|
|
||||||
if (style['font-size'])
|
|
||||||
selectByValue(f, 'fontsize', style['font-size'], true, true);
|
|
||||||
else
|
|
||||||
selectByValue(f, 'fontsize', ed.getParam("fullpage_default_fontsize", ""), true, true);
|
|
||||||
|
|
||||||
if (style['color'])
|
|
||||||
f.textcolor.value = convertRGBToHex(style['color']);
|
|
||||||
|
|
||||||
if (style['background-image'])
|
|
||||||
f.bgimage.value = style['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
|
|
||||||
|
|
||||||
if (style['background-color'])
|
|
||||||
f.bgcolor.value = style['background-color'];
|
|
||||||
|
|
||||||
if (style['margin']) {
|
|
||||||
tmp = style['margin'].replace(/[^0-9 ]/g, '');
|
|
||||||
tmp = tmp.split(/ +/);
|
|
||||||
f.topmargin.value = tmp.length > 0 ? tmp[0] : '';
|
|
||||||
f.rightmargin.value = tmp.length > 1 ? tmp[1] : tmp[0];
|
|
||||||
f.bottommargin.value = tmp.length > 2 ? tmp[2] : tmp[0];
|
|
||||||
f.leftmargin.value = tmp.length > 3 ? tmp[3] : tmp[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (style['margin-left'])
|
|
||||||
f.leftmargin.value = style['margin-left'].replace(/[^0-9]/g, '');
|
|
||||||
|
|
||||||
if (style['margin-right'])
|
|
||||||
f.rightmargin.value = style['margin-right'].replace(/[^0-9]/g, '');
|
|
||||||
|
|
||||||
if (style['margin-top'])
|
|
||||||
f.topmargin.value = style['margin-top'].replace(/[^0-9]/g, '');
|
|
||||||
|
|
||||||
if (style['margin-bottom'])
|
|
||||||
f.bottommargin.value = style['margin-bottom'].replace(/[^0-9]/g, '');
|
|
||||||
|
|
||||||
f.style.value = tinyMCEPopup.dom.serializeStyle(style);
|
|
||||||
|
|
||||||
// Update colors
|
|
||||||
updateColor('textcolor_pick', 'textcolor');
|
|
||||||
updateColor('bgcolor_pick', 'bgcolor');
|
|
||||||
updateColor('visited_color_pick', 'visited_color');
|
|
||||||
updateColor('active_color_pick', 'active_color');
|
|
||||||
updateColor('link_color_pick', 'link_color');
|
|
||||||
}
|
|
||||||
|
|
||||||
function getReItem(r, s, i) {
|
|
||||||
var c = r.exec(s);
|
|
||||||
|
|
||||||
if (c && c.length > i)
|
|
||||||
return c[i];
|
|
||||||
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateAction() {
|
|
||||||
var f = document.forms[0], nl, i, h, v, s, head, html, l, tmp, addlink = true, ser;
|
|
||||||
|
|
||||||
head = doc.getElementsByTagName('head')[0];
|
|
||||||
|
|
||||||
// Fix scripts without a type
|
|
||||||
nl = doc.getElementsByTagName('script');
|
|
||||||
for (i=0; i<nl.length; i++) {
|
|
||||||
if (tinyMCEPopup.dom.getAttrib(nl[i], '_mce_type') == '')
|
|
||||||
nl[i].setAttribute('_mce_type', 'text/javascript');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get primary stylesheet
|
|
||||||
nl = doc.getElementsByTagName("link");
|
|
||||||
for (i=0; i<nl.length; i++) {
|
|
||||||
l = nl[i];
|
|
||||||
|
|
||||||
tmp = tinyMCEPopup.dom.getAttrib(l, 'media');
|
|
||||||
|
|
||||||
if (tinyMCEPopup.dom.getAttrib(l, '_mce_type') == "text/css" && (tmp == "" || tmp == "screen" || tmp == "all") && tinyMCEPopup.dom.getAttrib(l, 'rel') == "stylesheet") {
|
|
||||||
addlink = false;
|
|
||||||
|
|
||||||
if (f.stylesheet.value == '')
|
|
||||||
l.parentNode.removeChild(l);
|
|
||||||
else
|
|
||||||
l.setAttribute('_mce_href', f.stylesheet.value);
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add new link
|
|
||||||
if (f.stylesheet.value != '') {
|
|
||||||
l = doc.createElement('link');
|
|
||||||
|
|
||||||
l.setAttribute('type', 'text/css');
|
|
||||||
l.setAttribute('_mce_href', f.stylesheet.value);
|
|
||||||
l.setAttribute('rel', 'stylesheet');
|
|
||||||
|
|
||||||
head.appendChild(l);
|
|
||||||
}
|
|
||||||
|
|
||||||
setMeta(head, 'keywords', f.metakeywords.value);
|
|
||||||
setMeta(head, 'description', f.metadescription.value);
|
|
||||||
setMeta(head, 'author', f.metaauthor.value);
|
|
||||||
setMeta(head, 'copyright', f.metacopyright.value);
|
|
||||||
setMeta(head, 'robots', getSelectValue(f, 'metarobots'));
|
|
||||||
setMeta(head, 'Content-Type', getSelectValue(f, 'docencoding'));
|
|
||||||
|
|
||||||
doc.body.dir = getSelectValue(f, 'langdir');
|
|
||||||
doc.body.style.cssText = f.style.value;
|
|
||||||
|
|
||||||
doc.body.setAttribute('vLink', f.visited_color.value);
|
|
||||||
doc.body.setAttribute('link', f.link_color.value);
|
|
||||||
doc.body.setAttribute('text', f.textcolor.value);
|
|
||||||
doc.body.setAttribute('aLink', f.active_color.value);
|
|
||||||
|
|
||||||
doc.body.style.fontFamily = getSelectValue(f, 'fontface');
|
|
||||||
doc.body.style.fontSize = getSelectValue(f, 'fontsize');
|
|
||||||
doc.body.style.backgroundColor = f.bgcolor.value;
|
|
||||||
|
|
||||||
if (f.leftmargin.value != '')
|
|
||||||
doc.body.style.marginLeft = f.leftmargin.value + 'px';
|
|
||||||
|
|
||||||
if (f.rightmargin.value != '')
|
|
||||||
doc.body.style.marginRight = f.rightmargin.value + 'px';
|
|
||||||
|
|
||||||
if (f.bottommargin.value != '')
|
|
||||||
doc.body.style.marginBottom = f.bottommargin.value + 'px';
|
|
||||||
|
|
||||||
if (f.topmargin.value != '')
|
|
||||||
doc.body.style.marginTop = f.topmargin.value + 'px';
|
|
||||||
|
|
||||||
html = doc.getElementsByTagName('html')[0];
|
|
||||||
html.setAttribute('lang', f.langcode.value);
|
|
||||||
html.setAttribute('xml:lang', f.langcode.value);
|
|
||||||
|
|
||||||
if (f.bgimage.value != '')
|
|
||||||
doc.body.style.backgroundImage = "url('" + f.bgimage.value + "')";
|
|
||||||
else
|
|
||||||
doc.body.style.backgroundImage = '';
|
|
||||||
|
|
||||||
ser = tinyMCEPopup.editor.plugins.fullpage._createSerializer();
|
|
||||||
ser.setRules('-title,meta[http-equiv|name|content],base[href|target],link[href|rel|type|title|media],style[type],script[type|language|src],html[lang|xml::lang|xmlns],body[style|dir|vlink|link|text|alink],head');
|
|
||||||
|
|
||||||
h = ser.serialize(doc.documentElement);
|
|
||||||
h = h.substring(0, h.lastIndexOf('</body>'));
|
|
||||||
|
|
||||||
if (h.indexOf('<title>') == -1)
|
|
||||||
h = h.replace(/<head.*?>/, '$&\n' + '<title>' + tinyMCEPopup.dom.encode(f.metatitle.value) + '</title>');
|
|
||||||
else
|
|
||||||
h = h.replace(/<title>(.*?)<\/title>/, '<title>' + tinyMCEPopup.dom.encode(f.metatitle.value) + '</title>');
|
|
||||||
|
|
||||||
if ((v = getSelectValue(f, 'doctypes')) != '')
|
|
||||||
h = v + '\n' + h;
|
|
||||||
|
|
||||||
if (f.xml_pi.checked) {
|
|
||||||
s = '<?xml version="1.0"';
|
|
||||||
|
|
||||||
if ((v = getSelectValue(f, 'docencoding')) != '')
|
|
||||||
s += ' encoding="' + v + '"';
|
|
||||||
|
|
||||||
s += '?>\n';
|
|
||||||
h = s + h;
|
|
||||||
}
|
|
||||||
|
|
||||||
h = h.replace(/type=\"\-mce\-/gi, 'type="');
|
|
||||||
|
|
||||||
tinyMCEPopup.editor.plugins.fullpage.head = h;
|
|
||||||
tinyMCEPopup.editor.plugins.fullpage._setBodyAttribs(tinyMCEPopup.editor, {});
|
|
||||||
tinyMCEPopup.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
function changedStyleField(field) {
|
|
||||||
}
|
|
||||||
|
|
||||||
function setMeta(he, k, v) {
|
|
||||||
var nl, i, m;
|
|
||||||
|
|
||||||
nl = he.getElementsByTagName('meta');
|
|
||||||
for (i=0; i<nl.length; i++) {
|
|
||||||
if (k == 'Content-Type' && tinyMCEPopup.dom.getAttrib(nl[i], 'http-equiv') == k) {
|
|
||||||
if (v == '')
|
|
||||||
nl[i].parentNode.removeChild(nl[i]);
|
|
||||||
else
|
|
||||||
nl[i].setAttribute('content', "text/html; charset=" + v);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tinyMCEPopup.dom.getAttrib(nl[i], 'name') == k) {
|
|
||||||
if (v == '')
|
|
||||||
nl[i].parentNode.removeChild(nl[i]);
|
|
||||||
else
|
|
||||||
nl[i].setAttribute('content', v);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (v == '')
|
|
||||||
return;
|
|
||||||
|
|
||||||
m = doc.createElement('meta');
|
|
||||||
|
|
||||||
if (k == 'Content-Type')
|
|
||||||
m.httpEquiv = k;
|
|
||||||
else
|
|
||||||
m.setAttribute('name', k);
|
|
||||||
|
|
||||||
m.setAttribute('content', v);
|
|
||||||
he.appendChild(m);
|
|
||||||
}
|
|
||||||
|
|
||||||
function parseStyleElement(e) {
|
|
||||||
var v = e.innerHTML;
|
|
||||||
var p, i, r;
|
|
||||||
|
|
||||||
v = v.replace(/<!--/gi, '');
|
|
||||||
v = v.replace(/-->/gi, '');
|
|
||||||
v = v.replace(/[\n\r]/gi, '');
|
|
||||||
v = v.replace(/\s+/gi, ' ');
|
|
||||||
|
|
||||||
r = [];
|
|
||||||
p = v.split(/{|}/);
|
|
||||||
|
|
||||||
for (i=0; i<p.length; i+=2) {
|
|
||||||
if (p[i] != "")
|
|
||||||
r[r.length] = {rule : tinymce.trim(p[i]), data : tinyMCEPopup.dom.parseStyle(p[i+1])};
|
|
||||||
}
|
|
||||||
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
function serializeStyleElement(d) {
|
|
||||||
var i, s, st;
|
|
||||||
|
|
||||||
s = '<!--\n';
|
|
||||||
|
|
||||||
for (i=0; i<d.length; i++) {
|
|
||||||
s += d[i].rule + ' {\n';
|
|
||||||
|
|
||||||
st = tinyMCE.serializeStyle(d[i].data);
|
|
||||||
|
|
||||||
if (st != '')
|
|
||||||
st += ';';
|
|
||||||
|
|
||||||
s += st.replace(/;/g, ';\n');
|
|
||||||
s += '}\n';
|
|
||||||
|
|
||||||
if (i != d.length - 1)
|
|
||||||
s += '\n';
|
|
||||||
}
|
|
||||||
|
|
||||||
s += '\n-->';
|
|
||||||
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
|
|
||||||
tinyMCEPopup.onInit.add(init);
|
|
85
tools/tiny_mce/plugins/fullpage/langs/en_dlg.js
vendored
@ -1,85 +0,0 @@
|
|||||||
tinyMCE.addI18n('en.fullpage_dlg',{
|
|
||||||
title:"Document properties",
|
|
||||||
meta_tab:"General",
|
|
||||||
appearance_tab:"Appearance",
|
|
||||||
advanced_tab:"Advanced",
|
|
||||||
meta_props:"Meta information",
|
|
||||||
langprops:"Language and encoding",
|
|
||||||
meta_title:"Title",
|
|
||||||
meta_keywords:"Keywords",
|
|
||||||
meta_description:"Description",
|
|
||||||
meta_robots:"Robots",
|
|
||||||
doctypes:"Doctype",
|
|
||||||
langcode:"Language code",
|
|
||||||
langdir:"Language direction",
|
|
||||||
ltr:"Left to right",
|
|
||||||
rtl:"Right to left",
|
|
||||||
xml_pi:"XML declaration",
|
|
||||||
encoding:"Character encoding",
|
|
||||||
appearance_bgprops:"Background properties",
|
|
||||||
appearance_marginprops:"Body margins",
|
|
||||||
appearance_linkprops:"Link colors",
|
|
||||||
appearance_textprops:"Text properties",
|
|
||||||
bgcolor:"Background color",
|
|
||||||
bgimage:"Background image",
|
|
||||||
left_margin:"Left margin",
|
|
||||||
right_margin:"Right margin",
|
|
||||||
top_margin:"Top margin",
|
|
||||||
bottom_margin:"Bottom margin",
|
|
||||||
text_color:"Text color",
|
|
||||||
font_size:"Font size",
|
|
||||||
font_face:"Font face",
|
|
||||||
link_color:"Link color",
|
|
||||||
hover_color:"Hover color",
|
|
||||||
visited_color:"Visited color",
|
|
||||||
active_color:"Active color",
|
|
||||||
textcolor:"Color",
|
|
||||||
fontsize:"Font size",
|
|
||||||
fontface:"Font family",
|
|
||||||
meta_index_follow:"Index and follow the links",
|
|
||||||
meta_index_nofollow:"Index and don't follow the links",
|
|
||||||
meta_noindex_follow:"Do not index but follow the links",
|
|
||||||
meta_noindex_nofollow:"Do not index and don\'t follow the links",
|
|
||||||
appearance_style:"Stylesheet and style properties",
|
|
||||||
stylesheet:"Stylesheet",
|
|
||||||
style:"Style",
|
|
||||||
author:"Author",
|
|
||||||
copyright:"Copyright",
|
|
||||||
add:"Add new element",
|
|
||||||
remove:"Remove selected element",
|
|
||||||
moveup:"Move selected element up",
|
|
||||||
movedown:"Move selected element down",
|
|
||||||
head_elements:"Head elements",
|
|
||||||
info:"Information",
|
|
||||||
add_title:"Title element",
|
|
||||||
add_meta:"Meta element",
|
|
||||||
add_script:"Script element",
|
|
||||||
add_style:"Style element",
|
|
||||||
add_link:"Link element",
|
|
||||||
add_base:"Base element",
|
|
||||||
add_comment:"Comment node",
|
|
||||||
title_element:"Title element",
|
|
||||||
script_element:"Script element",
|
|
||||||
style_element:"Style element",
|
|
||||||
base_element:"Base element",
|
|
||||||
link_element:"Link element",
|
|
||||||
meta_element:"Meta element",
|
|
||||||
comment_element:"Comment",
|
|
||||||
src:"Src",
|
|
||||||
language:"Language",
|
|
||||||
href:"Href",
|
|
||||||
target:"Target",
|
|
||||||
type:"Type",
|
|
||||||
charset:"Charset",
|
|
||||||
defer:"Defer",
|
|
||||||
media:"Media",
|
|
||||||
properties:"Properties",
|
|
||||||
name:"Name",
|
|
||||||
value:"Value",
|
|
||||||
content:"Content",
|
|
||||||
rel:"Rel",
|
|
||||||
rev:"Rev",
|
|
||||||
hreflang:"Href lang",
|
|
||||||
general_props:"General",
|
|
||||||
advanced_props:"Advanced"
|
|
||||||
});
|
|
@ -1 +0,0 @@
|
|||||||
(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(c,d){var e=this,f={},b;e.editor=c;c.addCommand("mceFullScreen",function(){var h,i=a.doc.documentElement;if(c.getParam("fullscreen_is_enabled")){if(c.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",e.resizeFunc);tinyMCE.get(c.getParam("fullscreen_editor_id")).setContent(c.getContent({format:"raw"}),{format:"raw"});tinyMCE.remove(c);a.remove("mce_fullscreen_container");i.style.overflow=c.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",c.getParam("fullscreen_overflow"));a.win.scrollTo(c.getParam("fullscreen_scrollx"),c.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(c.getParam("fullscreen_new_window")){h=a.win.open(d+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{h.resizeTo(screen.availWidth,screen.availHeight)}catch(g){}}else{tinyMCE.oldSettings=tinyMCE.settings;f.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";f.fullscreen_html_overflow=a.getStyle(i,"overflow",1);b=a.getViewPort();f.fullscreen_scrollx=b.x;f.fullscreen_scrolly=b.y;if(tinymce.isOpera&&f.fullscreen_overflow=="visible"){f.fullscreen_overflow="auto"}if(tinymce.isIE&&f.fullscreen_overflow=="scroll"){f.fullscreen_overflow="auto"}if(tinymce.isIE&&(f.fullscreen_html_overflow=="visible"||f.fullscreen_html_overflow=="scroll")){f.fullscreen_html_overflow="auto"}if(f.fullscreen_overflow=="0px"){f.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");i.style.overflow="hidden";b=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){b.h-=1}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+(tinymce.isIE6||(tinymce.isIE&&!a.boxModel)?"absolute":"fixed")+";top:0;left:0;width:"+b.w+"px;height:"+b.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(c.settings,function(j,k){f[k]=j});f.id="mce_fullscreen";f.width=n.clientWidth;f.height=n.clientHeight-15;f.fullscreen_is_enabled=true;f.fullscreen_editor_id=c.id;f.theme_advanced_resizing=false;f.save_onsavecallback=function(){c.setContent(tinyMCE.get(f.id).getContent({format:"raw"}),{format:"raw"});c.execCommand("mceSave")};tinymce.each(c.getParam("fullscreen_settings"),function(l,j){f[j]=l});if(f.theme_advanced_toolbar_location==="external"){f.theme_advanced_toolbar_location="top"}e.fullscreenEditor=new tinymce.Editor("mce_fullscreen",f);e.fullscreenEditor.onInit.add(function(){e.fullscreenEditor.setContent(c.getContent());e.fullscreenEditor.focus()});e.fullscreenEditor.render();e.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");e.fullscreenElement.update();e.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var m=tinymce.DOM.getViewPort(),k=e.fullscreenEditor,j,l;j=k.dom.getSize(k.getContainer().firstChild);l=k.dom.getSize(k.getContainer().getElementsByTagName("iframe")[0]);k.theme.resizeTo(m.w-j.w+l.w,m.h-j.h+l.h)})}});c.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});c.onNodeChange.add(function(h,g){g.setActive("fullscreen",h.getParam("fullscreen_is_enabled"))})},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})();
|
|
@ -1,151 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2009, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
var DOM = tinymce.DOM;
|
|
||||||
|
|
||||||
tinymce.create('tinymce.plugins.FullScreenPlugin', {
|
|
||||||
init : function(ed, url) {
|
|
||||||
var t = this, s = {}, vp;
|
|
||||||
|
|
||||||
t.editor = ed;
|
|
||||||
|
|
||||||
// Register commands
|
|
||||||
ed.addCommand('mceFullScreen', function() {
|
|
||||||
var win, de = DOM.doc.documentElement;
|
|
||||||
|
|
||||||
if (ed.getParam('fullscreen_is_enabled')) {
|
|
||||||
if (ed.getParam('fullscreen_new_window'))
|
|
||||||
closeFullscreen(); // Call to close in new window
|
|
||||||
else {
|
|
||||||
DOM.win.setTimeout(function() {
|
|
||||||
tinymce.dom.Event.remove(DOM.win, 'resize', t.resizeFunc);
|
|
||||||
tinyMCE.get(ed.getParam('fullscreen_editor_id')).setContent(ed.getContent({format : 'raw'}), {format : 'raw'});
|
|
||||||
tinyMCE.remove(ed);
|
|
||||||
DOM.remove('mce_fullscreen_container');
|
|
||||||
de.style.overflow = ed.getParam('fullscreen_html_overflow');
|
|
||||||
DOM.setStyle(DOM.doc.body, 'overflow', ed.getParam('fullscreen_overflow'));
|
|
||||||
DOM.win.scrollTo(ed.getParam('fullscreen_scrollx'), ed.getParam('fullscreen_scrolly'));
|
|
||||||
tinyMCE.settings = tinyMCE.oldSettings; // Restore old settings
|
|
||||||
}, 10);
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ed.getParam('fullscreen_new_window')) {
|
|
||||||
win = DOM.win.open(url + "/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight);
|
|
||||||
try {
|
|
||||||
win.resizeTo(screen.availWidth, screen.availHeight);
|
|
||||||
} catch (e) {
|
|
||||||
// Ignore
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
tinyMCE.oldSettings = tinyMCE.settings; // Store old settings
|
|
||||||
s.fullscreen_overflow = DOM.getStyle(DOM.doc.body, 'overflow', 1) || 'auto';
|
|
||||||
s.fullscreen_html_overflow = DOM.getStyle(de, 'overflow', 1);
|
|
||||||
vp = DOM.getViewPort();
|
|
||||||
s.fullscreen_scrollx = vp.x;
|
|
||||||
s.fullscreen_scrolly = vp.y;
|
|
||||||
|
|
||||||
// Fixes an Opera bug where the scrollbars doesn't reappear
|
|
||||||
if (tinymce.isOpera && s.fullscreen_overflow == 'visible')
|
|
||||||
s.fullscreen_overflow = 'auto';
|
|
||||||
|
|
||||||
// Fixes an IE bug where horizontal scrollbars would appear
|
|
||||||
if (tinymce.isIE && s.fullscreen_overflow == 'scroll')
|
|
||||||
s.fullscreen_overflow = 'auto';
|
|
||||||
|
|
||||||
// Fixes an IE bug where the scrollbars doesn't reappear
|
|
||||||
if (tinymce.isIE && (s.fullscreen_html_overflow == 'visible' || s.fullscreen_html_overflow == 'scroll'))
|
|
||||||
s.fullscreen_html_overflow = 'auto';
|
|
||||||
|
|
||||||
if (s.fullscreen_overflow == '0px')
|
|
||||||
s.fullscreen_overflow = '';
|
|
||||||
|
|
||||||
DOM.setStyle(DOM.doc.body, 'overflow', 'hidden');
|
|
||||||
de.style.overflow = 'hidden'; //Fix for IE6/7
|
|
||||||
vp = DOM.getViewPort();
|
|
||||||
DOM.win.scrollTo(0, 0);
|
|
||||||
|
|
||||||
if (tinymce.isIE)
|
|
||||||
vp.h -= 1;
|
|
||||||
|
|
||||||
n = DOM.add(DOM.doc.body, 'div', {id : 'mce_fullscreen_container', style : 'position:' + (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel) ? 'absolute' : 'fixed') + ';top:0;left:0;width:' + vp.w + 'px;height:' + vp.h + 'px;z-index:200000;'});
|
|
||||||
DOM.add(n, 'div', {id : 'mce_fullscreen'});
|
|
||||||
|
|
||||||
tinymce.each(ed.settings, function(v, n) {
|
|
||||||
s[n] = v;
|
|
||||||
});
|
|
||||||
|
|
||||||
s.id = 'mce_fullscreen';
|
|
||||||
s.width = n.clientWidth;
|
|
||||||
s.height = n.clientHeight - 15;
|
|
||||||
s.fullscreen_is_enabled = true;
|
|
||||||
s.fullscreen_editor_id = ed.id;
|
|
||||||
s.theme_advanced_resizing = false;
|
|
||||||
s.save_onsavecallback = function() {
|
|
||||||
ed.setContent(tinyMCE.get(s.id).getContent({format : 'raw'}), {format : 'raw'});
|
|
||||||
ed.execCommand('mceSave');
|
|
||||||
};
|
|
||||||
|
|
||||||
tinymce.each(ed.getParam('fullscreen_settings'), function(v, k) {
|
|
||||||
s[k] = v;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (s.theme_advanced_toolbar_location === 'external')
|
|
||||||
s.theme_advanced_toolbar_location = 'top';
|
|
||||||
|
|
||||||
t.fullscreenEditor = new tinymce.Editor('mce_fullscreen', s);
|
|
||||||
t.fullscreenEditor.onInit.add(function() {
|
|
||||||
t.fullscreenEditor.setContent(ed.getContent());
|
|
||||||
t.fullscreenEditor.focus();
|
|
||||||
});
|
|
||||||
|
|
||||||
t.fullscreenEditor.render();
|
|
||||||
|
|
||||||
t.fullscreenElement = new tinymce.dom.Element('mce_fullscreen_container');
|
|
||||||
t.fullscreenElement.update();
|
|
||||||
//document.body.overflow = 'hidden';
|
|
||||||
|
|
||||||
t.resizeFunc = tinymce.dom.Event.add(DOM.win, 'resize', function() {
|
|
||||||
var vp = tinymce.DOM.getViewPort(), fed = t.fullscreenEditor, outerSize, innerSize;
|
|
||||||
|
|
||||||
// Get outer/inner size to get a delta size that can be used to calc the new iframe size
|
|
||||||
outerSize = fed.dom.getSize(fed.getContainer().firstChild);
|
|
||||||
innerSize = fed.dom.getSize(fed.getContainer().getElementsByTagName('iframe')[0]);
|
|
||||||
|
|
||||||
fed.theme.resizeTo(vp.w - outerSize.w + innerSize.w, vp.h - outerSize.h + innerSize.h);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register buttons
|
|
||||||
ed.addButton('fullscreen', {title : 'fullscreen.desc', cmd : 'mceFullScreen'});
|
|
||||||
|
|
||||||
ed.onNodeChange.add(function(ed, cm) {
|
|
||||||
cm.setActive('fullscreen', ed.getParam('fullscreen_is_enabled'));
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
getInfo : function() {
|
|
||||||
return {
|
|
||||||
longname : 'Fullscreen',
|
|
||||||
author : 'Moxiecode Systems AB',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',
|
|
||||||
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register plugin
|
|
||||||
tinymce.PluginManager.add('fullscreen', tinymce.plugins.FullScreenPlugin);
|
|
||||||
})();
|
|
109
tools/tiny_mce/plugins/fullscreen/fullscreen.htm
vendored
@ -1,109 +0,0 @@
|
|||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title></title>
|
|
||||||
<script type="text/javascript" src="../../tiny_mce.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
function patchCallback(settings, key) {
|
|
||||||
if (settings[key])
|
|
||||||
settings[key] = "window.opener." + settings[key];
|
|
||||||
}
|
|
||||||
|
|
||||||
var settings = {}, paSe = window.opener.tinyMCE.activeEditor.settings, oeID = window.opener.tinyMCE.activeEditor.id;
|
|
||||||
|
|
||||||
// Clone array
|
|
||||||
for (var n in paSe)
|
|
||||||
settings[n] = paSe[n];
|
|
||||||
|
|
||||||
// Override options for fullscreen
|
|
||||||
for (var n in paSe.fullscreen_settings)
|
|
||||||
settings[n] = paSe.fullscreen_settings[n];
|
|
||||||
|
|
||||||
// Patch callbacks, make them point to window.opener
|
|
||||||
patchCallback(settings, 'urlconverter_callback');
|
|
||||||
patchCallback(settings, 'insertlink_callback');
|
|
||||||
patchCallback(settings, 'insertimage_callback');
|
|
||||||
patchCallback(settings, 'setupcontent_callback');
|
|
||||||
patchCallback(settings, 'save_callback');
|
|
||||||
patchCallback(settings, 'onchange_callback');
|
|
||||||
patchCallback(settings, 'init_instance_callback');
|
|
||||||
patchCallback(settings, 'file_browser_callback');
|
|
||||||
patchCallback(settings, 'cleanup_callback');
|
|
||||||
patchCallback(settings, 'execcommand_callback');
|
|
||||||
patchCallback(settings, 'oninit');
|
|
||||||
|
|
||||||
// Set options
|
|
||||||
delete settings.id;
|
|
||||||
settings['mode'] = 'exact';
|
|
||||||
settings['elements'] = 'fullscreenarea';
|
|
||||||
settings['add_unload_trigger'] = false;
|
|
||||||
settings['ask'] = false;
|
|
||||||
settings['document_base_url'] = window.opener.tinyMCE.activeEditor.documentBaseURI.getURI();
|
|
||||||
settings['fullscreen_is_enabled'] = true;
|
|
||||||
settings['fullscreen_editor_id'] = oeID;
|
|
||||||
settings['theme_advanced_resizing'] = false;
|
|
||||||
settings['strict_loading_mode'] = true;
|
|
||||||
|
|
||||||
settings.save_onsavecallback = function() {
|
|
||||||
window.opener.tinyMCE.get(oeID).setContent(tinyMCE.get('fullscreenarea').getContent({format : 'raw'}), {format : 'raw'});
|
|
||||||
window.opener.tinyMCE.get(oeID).execCommand('mceSave');
|
|
||||||
window.close();
|
|
||||||
};
|
|
||||||
|
|
||||||
function unloadHandler(e) {
|
|
||||||
moveContent();
|
|
||||||
}
|
|
||||||
|
|
||||||
function moveContent() {
|
|
||||||
window.opener.tinyMCE.get(oeID).setContent(tinyMCE.activeEditor.getContent());
|
|
||||||
}
|
|
||||||
|
|
||||||
function closeFullscreen() {
|
|
||||||
moveContent();
|
|
||||||
window.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
function doParentSubmit() {
|
|
||||||
moveContent();
|
|
||||||
|
|
||||||
if (window.opener.tinyMCE.selectedInstance.formElement.form)
|
|
||||||
window.opener.tinyMCE.selectedInstance.formElement.form.submit();
|
|
||||||
|
|
||||||
window.close();
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function render() {
|
|
||||||
var e = document.getElementById('fullscreenarea'), vp, ed, ow, oh, dom = tinymce.DOM;
|
|
||||||
|
|
||||||
e.value = window.opener.tinyMCE.get(oeID).getContent();
|
|
||||||
|
|
||||||
vp = dom.getViewPort();
|
|
||||||
settings.width = vp.w;
|
|
||||||
settings.height = vp.h - 15;
|
|
||||||
|
|
||||||
tinymce.dom.Event.add(window, 'resize', function() {
|
|
||||||
var vp = dom.getViewPort();
|
|
||||||
|
|
||||||
tinyMCE.activeEditor.theme.resizeTo(vp.w, vp.h);
|
|
||||||
});
|
|
||||||
|
|
||||||
tinyMCE.init(settings);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add onunload
|
|
||||||
tinymce.dom.Event.add(window, "beforeunload", unloadHandler);
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body style="margin:0;overflow:hidden;width:100%;height:100%" scrolling="no" scroll="no">
|
|
||||||
<form onsubmit="doParentSubmit();">
|
|
||||||
<textarea id="fullscreenarea" style="width:100%; height:100%"></textarea>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
render();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1 +0,0 @@
|
|||||||
(function(){tinymce.create("tinymce.plugins.IESpell",{init:function(a,b){var c=this,d;if(!tinymce.isIE){return}c.editor=a;a.addCommand("mceIESpell",function(){try{d=new ActiveXObject("ieSpell.ieSpellExtension");d.CheckDocumentNode(a.getDoc().documentElement)}catch(f){if(f.number==-2146827859){a.windowManager.confirm(a.getLang("iespell.download"),function(e){if(e){window.open("http://www.iespell.com/download.php","ieSpellDownload","")}})}else{a.windowManager.alert("Error Loading ieSpell: Exception "+f.number)}}});a.addButton("iespell",{title:"iespell.iespell_desc",cmd:"mceIESpell"})},getInfo:function(){return{longname:"IESpell (IE Only)",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("iespell",tinymce.plugins.IESpell)})();
|
|
@ -1,54 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2009, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
tinymce.create('tinymce.plugins.IESpell', {
|
|
||||||
init : function(ed, url) {
|
|
||||||
var t = this, sp;
|
|
||||||
|
|
||||||
if (!tinymce.isIE)
|
|
||||||
return;
|
|
||||||
|
|
||||||
t.editor = ed;
|
|
||||||
|
|
||||||
// Register commands
|
|
||||||
ed.addCommand('mceIESpell', function() {
|
|
||||||
try {
|
|
||||||
sp = new ActiveXObject("ieSpell.ieSpellExtension");
|
|
||||||
sp.CheckDocumentNode(ed.getDoc().documentElement);
|
|
||||||
} catch (e) {
|
|
||||||
if (e.number == -2146827859) {
|
|
||||||
ed.windowManager.confirm(ed.getLang("iespell.download"), function(s) {
|
|
||||||
if (s)
|
|
||||||
window.open('http://www.iespell.com/download.php', 'ieSpellDownload', '');
|
|
||||||
});
|
|
||||||
} else
|
|
||||||
ed.windowManager.alert("Error Loading ieSpell: Exception " + e.number);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register buttons
|
|
||||||
ed.addButton('iespell', {title : 'iespell.iespell_desc', cmd : 'mceIESpell'});
|
|
||||||
},
|
|
||||||
|
|
||||||
getInfo : function() {
|
|
||||||
return {
|
|
||||||
longname : 'IESpell (IE Only)',
|
|
||||||
author : 'Moxiecode Systems AB',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell',
|
|
||||||
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register plugin
|
|
||||||
tinymce.PluginManager.add('iespell', tinymce.plugins.IESpell);
|
|
||||||
})();
|
|
@ -1,696 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2009, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
var DOM = tinymce.DOM, Element = tinymce.dom.Element, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is;
|
|
||||||
|
|
||||||
tinymce.create('tinymce.plugins.InlinePopups', {
|
|
||||||
init : function(ed, url) {
|
|
||||||
// Replace window manager
|
|
||||||
ed.onBeforeRenderUI.add(function() {
|
|
||||||
ed.windowManager = new tinymce.InlineWindowManager(ed);
|
|
||||||
DOM.loadCSS(url + '/skins/' + (ed.settings.inlinepopups_skin || 'clearlooks2') + "/window.css");
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
getInfo : function() {
|
|
||||||
return {
|
|
||||||
longname : 'InlinePopups',
|
|
||||||
author : 'Moxiecode Systems AB',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',
|
|
||||||
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
tinymce.create('tinymce.InlineWindowManager:tinymce.WindowManager', {
|
|
||||||
InlineWindowManager : function(ed) {
|
|
||||||
var t = this;
|
|
||||||
|
|
||||||
t.parent(ed);
|
|
||||||
t.zIndex = 300000;
|
|
||||||
t.count = 0;
|
|
||||||
t.windows = {};
|
|
||||||
},
|
|
||||||
|
|
||||||
open : function(f, p) {
|
|
||||||
var t = this, id, opt = '', ed = t.editor, dw = 0, dh = 0, vp, po, mdf, clf, we, w, u, parentWindow;
|
|
||||||
|
|
||||||
f = f || {};
|
|
||||||
p = p || {};
|
|
||||||
|
|
||||||
// Run native windows
|
|
||||||
if (!f.inline)
|
|
||||||
return t.parent(f, p);
|
|
||||||
|
|
||||||
parentWindow = t._frontWindow();
|
|
||||||
if (parentWindow && DOM.get(parentWindow.id + '_ifr')) {
|
|
||||||
parentWindow.focussedElement = DOM.get(parentWindow.id + '_ifr').contentWindow.document.activeElement;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Only store selection if the type is a normal window
|
|
||||||
if (!f.type)
|
|
||||||
t.bookmark = ed.selection.getBookmark(1);
|
|
||||||
|
|
||||||
id = DOM.uniqueId();
|
|
||||||
vp = DOM.getViewPort();
|
|
||||||
f.width = parseInt(f.width || 320);
|
|
||||||
f.height = parseInt(f.height || 240) + (tinymce.isIE ? 8 : 0);
|
|
||||||
f.min_width = parseInt(f.min_width || 150);
|
|
||||||
f.min_height = parseInt(f.min_height || 100);
|
|
||||||
f.max_width = parseInt(f.max_width || 2000);
|
|
||||||
f.max_height = parseInt(f.max_height || 2000);
|
|
||||||
f.left = f.left || Math.round(Math.max(vp.x, vp.x + (vp.w / 2.0) - (f.width / 2.0)));
|
|
||||||
f.top = f.top || Math.round(Math.max(vp.y, vp.y + (vp.h / 2.0) - (f.height / 2.0)));
|
|
||||||
f.movable = f.resizable = true;
|
|
||||||
p.mce_width = f.width;
|
|
||||||
p.mce_height = f.height;
|
|
||||||
p.mce_inline = true;
|
|
||||||
p.mce_window_id = id;
|
|
||||||
p.mce_auto_focus = f.auto_focus;
|
|
||||||
|
|
||||||
// Transpose
|
|
||||||
// po = DOM.getPos(ed.getContainer());
|
|
||||||
// f.left -= po.x;
|
|
||||||
// f.top -= po.y;
|
|
||||||
|
|
||||||
t.features = f;
|
|
||||||
t.params = p;
|
|
||||||
t.onOpen.dispatch(t, f, p);
|
|
||||||
|
|
||||||
if (f.type) {
|
|
||||||
opt += ' mceModal';
|
|
||||||
|
|
||||||
if (f.type)
|
|
||||||
opt += ' mce' + f.type.substring(0, 1).toUpperCase() + f.type.substring(1);
|
|
||||||
|
|
||||||
f.resizable = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (f.statusbar)
|
|
||||||
opt += ' mceStatusbar';
|
|
||||||
|
|
||||||
if (f.resizable)
|
|
||||||
opt += ' mceResizable';
|
|
||||||
|
|
||||||
if (f.minimizable)
|
|
||||||
opt += ' mceMinimizable';
|
|
||||||
|
|
||||||
if (f.maximizable)
|
|
||||||
opt += ' mceMaximizable';
|
|
||||||
|
|
||||||
if (f.movable)
|
|
||||||
opt += ' mceMovable';
|
|
||||||
|
|
||||||
// Create DOM objects
|
|
||||||
t._addAll(DOM.doc.body,
|
|
||||||
['div', {id : id, role : 'dialog', 'aria-labelledby': f.type ? id + '_content' : id + '_title', 'class' : (ed.settings.inlinepopups_skin || 'clearlooks2') + (tinymce.isIE && window.getSelection ? ' ie9' : ''), style : 'width:100px;height:100px'},
|
|
||||||
['div', {id : id + '_wrapper', 'class' : 'mceWrapper' + opt},
|
|
||||||
['div', {id : id + '_top', 'class' : 'mceTop'},
|
|
||||||
['div', {'class' : 'mceLeft'}],
|
|
||||||
['div', {'class' : 'mceCenter'}],
|
|
||||||
['div', {'class' : 'mceRight'}],
|
|
||||||
['span', {id : id + '_title'}, f.title || '']
|
|
||||||
],
|
|
||||||
|
|
||||||
['div', {id : id + '_middle', 'class' : 'mceMiddle'},
|
|
||||||
['div', {id : id + '_left', 'class' : 'mceLeft', tabindex : '0'}],
|
|
||||||
['span', {id : id + '_content'}],
|
|
||||||
['div', {id : id + '_right', 'class' : 'mceRight', tabindex : '0'}]
|
|
||||||
],
|
|
||||||
|
|
||||||
['div', {id : id + '_bottom', 'class' : 'mceBottom'},
|
|
||||||
['div', {'class' : 'mceLeft'}],
|
|
||||||
['div', {'class' : 'mceCenter'}],
|
|
||||||
['div', {'class' : 'mceRight'}],
|
|
||||||
['span', {id : id + '_status'}, 'Content']
|
|
||||||
],
|
|
||||||
|
|
||||||
['a', {'class' : 'mceMove', tabindex : '-1', href : 'javascript:;'}],
|
|
||||||
['a', {'class' : 'mceMin', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
|
|
||||||
['a', {'class' : 'mceMax', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
|
|
||||||
['a', {'class' : 'mceMed', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
|
|
||||||
['a', {'class' : 'mceClose', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
|
|
||||||
['a', {id : id + '_resize_n', 'class' : 'mceResize mceResizeN', tabindex : '-1', href : 'javascript:;'}],
|
|
||||||
['a', {id : id + '_resize_s', 'class' : 'mceResize mceResizeS', tabindex : '-1', href : 'javascript:;'}],
|
|
||||||
['a', {id : id + '_resize_w', 'class' : 'mceResize mceResizeW', tabindex : '-1', href : 'javascript:;'}],
|
|
||||||
['a', {id : id + '_resize_e', 'class' : 'mceResize mceResizeE', tabindex : '-1', href : 'javascript:;'}],
|
|
||||||
['a', {id : id + '_resize_nw', 'class' : 'mceResize mceResizeNW', tabindex : '-1', href : 'javascript:;'}],
|
|
||||||
['a', {id : id + '_resize_ne', 'class' : 'mceResize mceResizeNE', tabindex : '-1', href : 'javascript:;'}],
|
|
||||||
['a', {id : id + '_resize_sw', 'class' : 'mceResize mceResizeSW', tabindex : '-1', href : 'javascript:;'}],
|
|
||||||
['a', {id : id + '_resize_se', 'class' : 'mceResize mceResizeSE', tabindex : '-1', href : 'javascript:;'}]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
DOM.setStyles(id, {top : -10000, left : -10000});
|
|
||||||
|
|
||||||
// Fix gecko rendering bug, where the editors iframe messed with window contents
|
|
||||||
if (tinymce.isGecko)
|
|
||||||
DOM.setStyle(id, 'overflow', 'auto');
|
|
||||||
|
|
||||||
// Measure borders
|
|
||||||
if (!f.type) {
|
|
||||||
dw += DOM.get(id + '_left').clientWidth;
|
|
||||||
dw += DOM.get(id + '_right').clientWidth;
|
|
||||||
dh += DOM.get(id + '_top').clientHeight;
|
|
||||||
dh += DOM.get(id + '_bottom').clientHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Resize window
|
|
||||||
DOM.setStyles(id, {top : f.top, left : f.left, width : f.width + dw, height : f.height + dh});
|
|
||||||
|
|
||||||
u = f.url || f.file;
|
|
||||||
if (u) {
|
|
||||||
if (tinymce.relaxedDomain)
|
|
||||||
u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain;
|
|
||||||
|
|
||||||
u = tinymce._addVer(u);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!f.type) {
|
|
||||||
DOM.add(id + '_content', 'iframe', {id : id + '_ifr', src : 'javascript:""', frameBorder : 0, style : 'border:0;width:10px;height:10px'});
|
|
||||||
DOM.setStyles(id + '_ifr', {width : f.width, height : f.height});
|
|
||||||
DOM.setAttrib(id + '_ifr', 'src', u);
|
|
||||||
} else {
|
|
||||||
DOM.add(id + '_wrapper', 'a', {id : id + '_ok', 'class' : 'mceButton mceOk', href : 'javascript:;', onmousedown : 'return false;'}, 'Ok');
|
|
||||||
|
|
||||||
if (f.type == 'confirm')
|
|
||||||
DOM.add(id + '_wrapper', 'a', {'class' : 'mceButton mceCancel', href : 'javascript:;', onmousedown : 'return false;'}, 'Cancel');
|
|
||||||
|
|
||||||
DOM.add(id + '_middle', 'div', {'class' : 'mceIcon'});
|
|
||||||
DOM.setHTML(id + '_content', f.content.replace('\n', '<br />'));
|
|
||||||
|
|
||||||
Event.add(id, 'keyup', function(evt) {
|
|
||||||
var VK_ESCAPE = 27;
|
|
||||||
if (evt.keyCode === VK_ESCAPE) {
|
|
||||||
f.button_func(false);
|
|
||||||
return Event.cancel(evt);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
Event.add(id, 'keydown', function(evt) {
|
|
||||||
var cancelButton, VK_TAB = 9;
|
|
||||||
if (evt.keyCode === VK_TAB) {
|
|
||||||
cancelButton = DOM.select('a.mceCancel', id + '_wrapper')[0];
|
|
||||||
if (cancelButton && cancelButton !== evt.target) {
|
|
||||||
cancelButton.focus();
|
|
||||||
} else {
|
|
||||||
DOM.get(id + '_ok').focus();
|
|
||||||
}
|
|
||||||
return Event.cancel(evt);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Register events
|
|
||||||
mdf = Event.add(id, 'mousedown', function(e) {
|
|
||||||
var n = e.target, w, vp;
|
|
||||||
|
|
||||||
w = t.windows[id];
|
|
||||||
t.focus(id);
|
|
||||||
|
|
||||||
if (n.nodeName == 'A' || n.nodeName == 'a') {
|
|
||||||
if (n.className == 'mceMax') {
|
|
||||||
w.oldPos = w.element.getXY();
|
|
||||||
w.oldSize = w.element.getSize();
|
|
||||||
|
|
||||||
vp = DOM.getViewPort();
|
|
||||||
|
|
||||||
// Reduce viewport size to avoid scrollbars
|
|
||||||
vp.w -= 2;
|
|
||||||
vp.h -= 2;
|
|
||||||
|
|
||||||
w.element.moveTo(vp.x, vp.y);
|
|
||||||
w.element.resizeTo(vp.w, vp.h);
|
|
||||||
DOM.setStyles(id + '_ifr', {width : vp.w - w.deltaWidth, height : vp.h - w.deltaHeight});
|
|
||||||
DOM.addClass(id + '_wrapper', 'mceMaximized');
|
|
||||||
} else if (n.className == 'mceMed') {
|
|
||||||
// Reset to old size
|
|
||||||
w.element.moveTo(w.oldPos.x, w.oldPos.y);
|
|
||||||
w.element.resizeTo(w.oldSize.w, w.oldSize.h);
|
|
||||||
w.iframeElement.resizeTo(w.oldSize.w - w.deltaWidth, w.oldSize.h - w.deltaHeight);
|
|
||||||
|
|
||||||
DOM.removeClass(id + '_wrapper', 'mceMaximized');
|
|
||||||
} else if (n.className == 'mceMove')
|
|
||||||
return t._startDrag(id, e, n.className);
|
|
||||||
else if (DOM.hasClass(n, 'mceResize'))
|
|
||||||
return t._startDrag(id, e, n.className.substring(13));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
clf = Event.add(id, 'click', function(e) {
|
|
||||||
var n = e.target;
|
|
||||||
|
|
||||||
t.focus(id);
|
|
||||||
|
|
||||||
if (n.nodeName == 'A' || n.nodeName == 'a') {
|
|
||||||
switch (n.className) {
|
|
||||||
case 'mceClose':
|
|
||||||
t.close(null, id);
|
|
||||||
return Event.cancel(e);
|
|
||||||
|
|
||||||
case 'mceButton mceOk':
|
|
||||||
case 'mceButton mceCancel':
|
|
||||||
f.button_func(n.className == 'mceButton mceOk');
|
|
||||||
return Event.cancel(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Make sure the tab order loops within the dialog.
|
|
||||||
Event.add([id + '_left', id + '_right'], 'focus', function(evt) {
|
|
||||||
var iframe = DOM.get(id + '_ifr');
|
|
||||||
if (iframe) {
|
|
||||||
var body = iframe.contentWindow.document.body;
|
|
||||||
var focusable = DOM.select(':input:enabled,*[tabindex=0]', body);
|
|
||||||
if (evt.target.id === (id + '_left')) {
|
|
||||||
focusable[focusable.length - 1].focus();
|
|
||||||
} else {
|
|
||||||
focusable[0].focus();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
DOM.get(id + '_ok').focus();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Add window
|
|
||||||
w = t.windows[id] = {
|
|
||||||
id : id,
|
|
||||||
mousedown_func : mdf,
|
|
||||||
click_func : clf,
|
|
||||||
element : new Element(id, {blocker : 1, container : ed.getContainer()}),
|
|
||||||
iframeElement : new Element(id + '_ifr'),
|
|
||||||
features : f,
|
|
||||||
deltaWidth : dw,
|
|
||||||
deltaHeight : dh
|
|
||||||
};
|
|
||||||
|
|
||||||
w.iframeElement.on('focus', function() {
|
|
||||||
t.focus(id);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Setup blocker
|
|
||||||
if (t.count == 0 && t.editor.getParam('dialog_type', 'modal') == 'modal') {
|
|
||||||
DOM.add(DOM.doc.body, 'div', {
|
|
||||||
id : 'mceModalBlocker',
|
|
||||||
'class' : (t.editor.settings.inlinepopups_skin || 'clearlooks2') + '_modalBlocker',
|
|
||||||
style : {zIndex : t.zIndex - 1}
|
|
||||||
});
|
|
||||||
|
|
||||||
DOM.show('mceModalBlocker'); // Reduces flicker in IE
|
|
||||||
DOM.setAttrib(DOM.doc.body, 'aria-hidden', 'true');
|
|
||||||
} else
|
|
||||||
DOM.setStyle('mceModalBlocker', 'z-index', t.zIndex - 1);
|
|
||||||
|
|
||||||
if (tinymce.isIE6 || /Firefox\/2\./.test(navigator.userAgent) || (tinymce.isIE && !DOM.boxModel))
|
|
||||||
DOM.setStyles('mceModalBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2});
|
|
||||||
|
|
||||||
DOM.setAttrib(id, 'aria-hidden', 'false');
|
|
||||||
t.focus(id);
|
|
||||||
t._fixIELayout(id, 1);
|
|
||||||
|
|
||||||
// Focus ok button
|
|
||||||
if (DOM.get(id + '_ok'))
|
|
||||||
DOM.get(id + '_ok').focus();
|
|
||||||
t.count++;
|
|
||||||
|
|
||||||
return w;
|
|
||||||
},
|
|
||||||
|
|
||||||
focus : function(id) {
|
|
||||||
var t = this, w;
|
|
||||||
|
|
||||||
if (w = t.windows[id]) {
|
|
||||||
w.zIndex = this.zIndex++;
|
|
||||||
w.element.setStyle('zIndex', w.zIndex);
|
|
||||||
w.element.update();
|
|
||||||
|
|
||||||
id = id + '_wrapper';
|
|
||||||
DOM.removeClass(t.lastId, 'mceFocus');
|
|
||||||
DOM.addClass(id, 'mceFocus');
|
|
||||||
t.lastId = id;
|
|
||||||
|
|
||||||
if (w.focussedElement) {
|
|
||||||
w.focussedElement.focus();
|
|
||||||
} else if (DOM.get(id + '_ok')) {
|
|
||||||
DOM.get(w.id + '_ok').focus();
|
|
||||||
} else if (DOM.get(w.id + '_ifr')) {
|
|
||||||
DOM.get(w.id + '_ifr').focus();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_addAll : function(te, ne) {
|
|
||||||
var i, n, t = this, dom = tinymce.DOM;
|
|
||||||
|
|
||||||
if (is(ne, 'string'))
|
|
||||||
te.appendChild(dom.doc.createTextNode(ne));
|
|
||||||
else if (ne.length) {
|
|
||||||
te = te.appendChild(dom.create(ne[0], ne[1]));
|
|
||||||
|
|
||||||
for (i=2; i<ne.length; i++)
|
|
||||||
t._addAll(te, ne[i]);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_startDrag : function(id, se, ac) {
|
|
||||||
var t = this, mu, mm, d = DOM.doc, eb, w = t.windows[id], we = w.element, sp = we.getXY(), p, sz, ph, cp, vp, sx, sy, sex, sey, dx, dy, dw, dh;
|
|
||||||
|
|
||||||
// Get positons and sizes
|
|
||||||
// cp = DOM.getPos(t.editor.getContainer());
|
|
||||||
cp = {x : 0, y : 0};
|
|
||||||
vp = DOM.getViewPort();
|
|
||||||
|
|
||||||
// Reduce viewport size to avoid scrollbars while dragging
|
|
||||||
vp.w -= 2;
|
|
||||||
vp.h -= 2;
|
|
||||||
|
|
||||||
sex = se.screenX;
|
|
||||||
sey = se.screenY;
|
|
||||||
dx = dy = dw = dh = 0;
|
|
||||||
|
|
||||||
// Handle mouse up
|
|
||||||
mu = Event.add(d, 'mouseup', function(e) {
|
|
||||||
Event.remove(d, 'mouseup', mu);
|
|
||||||
Event.remove(d, 'mousemove', mm);
|
|
||||||
|
|
||||||
if (eb)
|
|
||||||
eb.remove();
|
|
||||||
|
|
||||||
we.moveBy(dx, dy);
|
|
||||||
we.resizeBy(dw, dh);
|
|
||||||
sz = we.getSize();
|
|
||||||
DOM.setStyles(id + '_ifr', {width : sz.w - w.deltaWidth, height : sz.h - w.deltaHeight});
|
|
||||||
t._fixIELayout(id, 1);
|
|
||||||
|
|
||||||
return Event.cancel(e);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (ac != 'Move')
|
|
||||||
startMove();
|
|
||||||
|
|
||||||
function startMove() {
|
|
||||||
if (eb)
|
|
||||||
return;
|
|
||||||
|
|
||||||
t._fixIELayout(id, 0);
|
|
||||||
|
|
||||||
// Setup event blocker
|
|
||||||
DOM.add(d.body, 'div', {
|
|
||||||
id : 'mceEventBlocker',
|
|
||||||
'class' : 'mceEventBlocker ' + (t.editor.settings.inlinepopups_skin || 'clearlooks2'),
|
|
||||||
style : {zIndex : t.zIndex + 1}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel))
|
|
||||||
DOM.setStyles('mceEventBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2});
|
|
||||||
|
|
||||||
eb = new Element('mceEventBlocker');
|
|
||||||
eb.update();
|
|
||||||
|
|
||||||
// Setup placeholder
|
|
||||||
p = we.getXY();
|
|
||||||
sz = we.getSize();
|
|
||||||
sx = cp.x + p.x - vp.x;
|
|
||||||
sy = cp.y + p.y - vp.y;
|
|
||||||
DOM.add(eb.get(), 'div', {id : 'mcePlaceHolder', 'class' : 'mcePlaceHolder', style : {left : sx, top : sy, width : sz.w, height : sz.h}});
|
|
||||||
ph = new Element('mcePlaceHolder');
|
|
||||||
};
|
|
||||||
|
|
||||||
// Handle mouse move/drag
|
|
||||||
mm = Event.add(d, 'mousemove', function(e) {
|
|
||||||
var x, y, v;
|
|
||||||
|
|
||||||
startMove();
|
|
||||||
|
|
||||||
x = e.screenX - sex;
|
|
||||||
y = e.screenY - sey;
|
|
||||||
|
|
||||||
switch (ac) {
|
|
||||||
case 'ResizeW':
|
|
||||||
dx = x;
|
|
||||||
dw = 0 - x;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'ResizeE':
|
|
||||||
dw = x;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'ResizeN':
|
|
||||||
case 'ResizeNW':
|
|
||||||
case 'ResizeNE':
|
|
||||||
if (ac == "ResizeNW") {
|
|
||||||
dx = x;
|
|
||||||
dw = 0 - x;
|
|
||||||
} else if (ac == "ResizeNE")
|
|
||||||
dw = x;
|
|
||||||
|
|
||||||
dy = y;
|
|
||||||
dh = 0 - y;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'ResizeS':
|
|
||||||
case 'ResizeSW':
|
|
||||||
case 'ResizeSE':
|
|
||||||
if (ac == "ResizeSW") {
|
|
||||||
dx = x;
|
|
||||||
dw = 0 - x;
|
|
||||||
} else if (ac == "ResizeSE")
|
|
||||||
dw = x;
|
|
||||||
|
|
||||||
dh = y;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'mceMove':
|
|
||||||
dx = x;
|
|
||||||
dy = y;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Boundary check
|
|
||||||
if (dw < (v = w.features.min_width - sz.w)) {
|
|
||||||
if (dx !== 0)
|
|
||||||
dx += dw - v;
|
|
||||||
|
|
||||||
dw = v;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dh < (v = w.features.min_height - sz.h)) {
|
|
||||||
if (dy !== 0)
|
|
||||||
dy += dh - v;
|
|
||||||
|
|
||||||
dh = v;
|
|
||||||
}
|
|
||||||
|
|
||||||
dw = Math.min(dw, w.features.max_width - sz.w);
|
|
||||||
dh = Math.min(dh, w.features.max_height - sz.h);
|
|
||||||
dx = Math.max(dx, vp.x - (sx + vp.x));
|
|
||||||
dy = Math.max(dy, vp.y - (sy + vp.y));
|
|
||||||
dx = Math.min(dx, (vp.w + vp.x) - (sx + sz.w + vp.x));
|
|
||||||
dy = Math.min(dy, (vp.h + vp.y) - (sy + sz.h + vp.y));
|
|
||||||
|
|
||||||
// Move if needed
|
|
||||||
if (dx + dy !== 0) {
|
|
||||||
if (sx + dx < 0)
|
|
||||||
dx = 0;
|
|
||||||
|
|
||||||
if (sy + dy < 0)
|
|
||||||
dy = 0;
|
|
||||||
|
|
||||||
ph.moveTo(sx + dx, sy + dy);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Resize if needed
|
|
||||||
if (dw + dh !== 0)
|
|
||||||
ph.resizeTo(sz.w + dw, sz.h + dh);
|
|
||||||
|
|
||||||
return Event.cancel(e);
|
|
||||||
});
|
|
||||||
|
|
||||||
return Event.cancel(se);
|
|
||||||
},
|
|
||||||
|
|
||||||
resizeBy : function(dw, dh, id) {
|
|
||||||
var w = this.windows[id];
|
|
||||||
|
|
||||||
if (w) {
|
|
||||||
w.element.resizeBy(dw, dh);
|
|
||||||
w.iframeElement.resizeBy(dw, dh);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
close : function(win, id) {
|
|
||||||
var t = this, w, d = DOM.doc, fw, id;
|
|
||||||
|
|
||||||
id = t._findId(id || win);
|
|
||||||
|
|
||||||
// Probably not inline
|
|
||||||
if (!t.windows[id]) {
|
|
||||||
t.parent(win);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
t.count--;
|
|
||||||
|
|
||||||
if (t.count == 0) {
|
|
||||||
DOM.remove('mceModalBlocker');
|
|
||||||
DOM.setAttrib(DOM.doc.body, 'aria-hidden', 'false');
|
|
||||||
t.editor.focus();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (w = t.windows[id]) {
|
|
||||||
t.onClose.dispatch(t);
|
|
||||||
Event.remove(d, 'mousedown', w.mousedownFunc);
|
|
||||||
Event.remove(d, 'click', w.clickFunc);
|
|
||||||
Event.clear(id);
|
|
||||||
Event.clear(id + '_ifr');
|
|
||||||
|
|
||||||
DOM.setAttrib(id + '_ifr', 'src', 'javascript:""'); // Prevent leak
|
|
||||||
w.element.remove();
|
|
||||||
delete t.windows[id];
|
|
||||||
|
|
||||||
fw = t._frontWindow();
|
|
||||||
|
|
||||||
if (fw)
|
|
||||||
t.focus(fw.id);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// Find front most window
|
|
||||||
_frontWindow : function() {
|
|
||||||
var fw, ix = 0;
|
|
||||||
// Find front most window and focus that
|
|
||||||
each (this.windows, function(w) {
|
|
||||||
if (w.zIndex > ix) {
|
|
||||||
fw = w;
|
|
||||||
ix = w.zIndex;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return fw;
|
|
||||||
},
|
|
||||||
|
|
||||||
setTitle : function(w, ti) {
|
|
||||||
var e;
|
|
||||||
|
|
||||||
w = this._findId(w);
|
|
||||||
|
|
||||||
if (e = DOM.get(w + '_title'))
|
|
||||||
e.innerHTML = DOM.encode(ti);
|
|
||||||
},
|
|
||||||
|
|
||||||
alert : function(txt, cb, s) {
|
|
||||||
var t = this, w;
|
|
||||||
|
|
||||||
w = t.open({
|
|
||||||
title : t,
|
|
||||||
type : 'alert',
|
|
||||||
button_func : function(s) {
|
|
||||||
if (cb)
|
|
||||||
cb.call(s || t, s);
|
|
||||||
|
|
||||||
t.close(null, w.id);
|
|
||||||
},
|
|
||||||
content : DOM.encode(t.editor.getLang(txt, txt)),
|
|
||||||
inline : 1,
|
|
||||||
width : 400,
|
|
||||||
height : 130
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
confirm : function(txt, cb, s) {
|
|
||||||
var t = this, w;
|
|
||||||
|
|
||||||
w = t.open({
|
|
||||||
title : t,
|
|
||||||
type : 'confirm',
|
|
||||||
button_func : function(s) {
|
|
||||||
if (cb)
|
|
||||||
cb.call(s || t, s);
|
|
||||||
|
|
||||||
t.close(null, w.id);
|
|
||||||
},
|
|
||||||
content : DOM.encode(t.editor.getLang(txt, txt)),
|
|
||||||
inline : 1,
|
|
||||||
width : 400,
|
|
||||||
height : 130
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// Internal functions
|
|
||||||
|
|
||||||
_findId : function(w) {
|
|
||||||
var t = this;
|
|
||||||
|
|
||||||
if (typeof(w) == 'string')
|
|
||||||
return w;
|
|
||||||
|
|
||||||
each(t.windows, function(wo) {
|
|
||||||
var ifr = DOM.get(wo.id + '_ifr');
|
|
||||||
|
|
||||||
if (ifr && w == ifr.contentWindow) {
|
|
||||||
w = wo.id;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return w;
|
|
||||||
},
|
|
||||||
|
|
||||||
_fixIELayout : function(id, s) {
|
|
||||||
var w, img;
|
|
||||||
|
|
||||||
if (!tinymce.isIE6)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Fixes the bug where hover flickers and does odd things in IE6
|
|
||||||
each(['n','s','w','e','nw','ne','sw','se'], function(v) {
|
|
||||||
var e = DOM.get(id + '_resize_' + v);
|
|
||||||
|
|
||||||
DOM.setStyles(e, {
|
|
||||||
width : s ? e.clientWidth : '',
|
|
||||||
height : s ? e.clientHeight : '',
|
|
||||||
cursor : DOM.getStyle(e, 'cursor', 1)
|
|
||||||
});
|
|
||||||
|
|
||||||
DOM.setStyle(id + "_bottom", 'bottom', '-1px');
|
|
||||||
|
|
||||||
e = 0;
|
|
||||||
});
|
|
||||||
|
|
||||||
// Fixes graphics glitch
|
|
||||||
if (w = this.windows[id]) {
|
|
||||||
// Fixes rendering bug after resize
|
|
||||||
w.element.hide();
|
|
||||||
w.element.show();
|
|
||||||
|
|
||||||
// Forced a repaint of the window
|
|
||||||
//DOM.get(id).style.filter = '';
|
|
||||||
|
|
||||||
// IE has a bug where images used in CSS won't get loaded
|
|
||||||
// sometimes when the cache in the browser is disabled
|
|
||||||
// This fix tries to solve it by loading the images using the image object
|
|
||||||
each(DOM.select('div,a', id), function(e, i) {
|
|
||||||
if (e.currentStyle.backgroundImage != 'none') {
|
|
||||||
img = new Image();
|
|
||||||
img.src = e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/, '$1');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
DOM.get(id).style.filter = '';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register plugin
|
|
||||||
tinymce.PluginManager.add('inlinepopups', tinymce.plugins.InlinePopups);
|
|
||||||
})();
|
|
||||||
|
|
Before Width: | Height: | Size: 818 B |
Before Width: | Height: | Size: 280 B |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 915 B |
Before Width: | Height: | Size: 911 B |
Before Width: | Height: | Size: 769 B |
Before Width: | Height: | Size: 92 B |
@ -1,100 +0,0 @@
|
|||||||
/* Clearlooks 2 */
|
|
||||||
|
|
||||||
/* Reset */
|
|
||||||
.clearlooks2, .clearlooks2 div, .clearlooks2 span, .clearlooks2 a {vertical-align:baseline; text-align:left; position:absolute; border:0; padding:0; margin:0; background:transparent; font-family:Arial,Verdana; font-size:11px; color:#000; text-decoration:none; font-weight:normal; width:auto; height:auto; overflow:hidden; display:block}
|
|
||||||
|
|
||||||
/* General */
|
|
||||||
.clearlooks2 {position:absolute; direction:ltr}
|
|
||||||
.clearlooks2 .mceWrapper {position:static}
|
|
||||||
.mceEventBlocker {position:fixed; left:0; top:0; background:url(img/horizontal.gif) no-repeat 0 -75px; width:100%; height:100%}
|
|
||||||
.clearlooks2 .mcePlaceHolder {border:1px solid #000; background:#888; top:0; left:0; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50)}
|
|
||||||
.clearlooks2_modalBlocker {position:fixed; left:0; top:0; width:100%; height:100%; background:#FFF; opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60); display:none}
|
|
||||||
|
|
||||||
/* Top */
|
|
||||||
.clearlooks2 .mceTop, .clearlooks2 .mceTop div {top:0; width:100%; height:23px}
|
|
||||||
.clearlooks2 .mceTop .mceLeft {width:6px; background:url(img/corners.gif)}
|
|
||||||
.clearlooks2 .mceTop .mceCenter {right:6px; width:100%; height:23px; background:url(img/horizontal.gif) 12px 0; clip:rect(auto auto auto 12px)}
|
|
||||||
.clearlooks2 .mceTop .mceRight {right:0; width:6px; height:23px; background:url(img/corners.gif) -12px 0}
|
|
||||||
.clearlooks2 .mceTop span {width:100%; text-align:center; vertical-align:middle; line-height:23px; font-weight:bold}
|
|
||||||
.clearlooks2 .mceFocus .mceTop .mceLeft {background:url(img/corners.gif) -6px 0}
|
|
||||||
.clearlooks2 .mceFocus .mceTop .mceCenter {background:url(img/horizontal.gif) 0 -23px}
|
|
||||||
.clearlooks2 .mceFocus .mceTop .mceRight {background:url(img/corners.gif) -18px 0}
|
|
||||||
.clearlooks2 .mceFocus .mceTop span {color:#FFF}
|
|
||||||
|
|
||||||
/* Middle */
|
|
||||||
.clearlooks2 .mceMiddle, .clearlooks2 .mceMiddle div {top:0}
|
|
||||||
.clearlooks2 .mceMiddle {width:100%; height:100%; clip:rect(23px auto auto auto)}
|
|
||||||
.clearlooks2 .mceMiddle .mceLeft {left:0; width:5px; height:100%; background:url(img/vertical.gif) -5px 0}
|
|
||||||
.clearlooks2 .mceMiddle span {top:23px; left:5px; width:100%; height:100%; background:#FFF}
|
|
||||||
.clearlooks2 .mceMiddle .mceRight {right:0; width:5px; height:100%; background:url(img/vertical.gif)}
|
|
||||||
|
|
||||||
/* Bottom */
|
|
||||||
.clearlooks2 .mceBottom, .clearlooks2 .mceBottom div {height:6px}
|
|
||||||
.clearlooks2 .mceBottom {left:0; bottom:0; width:100%}
|
|
||||||
.clearlooks2 .mceBottom div {top:0}
|
|
||||||
.clearlooks2 .mceBottom .mceLeft {left:0; width:5px; background:url(img/corners.gif) -34px -6px}
|
|
||||||
.clearlooks2 .mceBottom .mceCenter {left:5px; width:100%; background:url(img/horizontal.gif) 0 -46px}
|
|
||||||
.clearlooks2 .mceBottom .mceRight {right:0; width:5px; background: url(img/corners.gif) -34px 0}
|
|
||||||
.clearlooks2 .mceBottom span {display:none}
|
|
||||||
.clearlooks2 .mceStatusbar .mceBottom, .clearlooks2 .mceStatusbar .mceBottom div {height:23px}
|
|
||||||
.clearlooks2 .mceStatusbar .mceBottom .mceLeft {background:url(img/corners.gif) -29px 0}
|
|
||||||
.clearlooks2 .mceStatusbar .mceBottom .mceCenter {background:url(img/horizontal.gif) 0 -52px}
|
|
||||||
.clearlooks2 .mceStatusbar .mceBottom .mceRight {background:url(img/corners.gif) -24px 0}
|
|
||||||
.clearlooks2 .mceStatusbar .mceBottom span {display:block; left:7px; font-family:Arial, Verdana; font-size:11px; line-height:23px}
|
|
||||||
|
|
||||||
/* Actions */
|
|
||||||
.clearlooks2 a {width:29px; height:16px; top:3px;}
|
|
||||||
.clearlooks2 .mceClose {right:6px; background:url(img/buttons.gif) -87px 0}
|
|
||||||
.clearlooks2 .mceMin {display:none; right:68px; background:url(img/buttons.gif) 0 0}
|
|
||||||
.clearlooks2 .mceMed {display:none; right:37px; background:url(img/buttons.gif) -29px 0}
|
|
||||||
.clearlooks2 .mceMax {display:none; right:37px; background:url(img/buttons.gif) -58px 0}
|
|
||||||
.clearlooks2 .mceMove {display:none;width:100%;cursor:move;background:url(img/corners.gif) no-repeat -100px -100px}
|
|
||||||
.clearlooks2 .mceMovable .mceMove {display:block}
|
|
||||||
.clearlooks2 .mceFocus .mceClose {right:6px; background:url(img/buttons.gif) -87px -16px}
|
|
||||||
.clearlooks2 .mceFocus .mceMin {right:68px; background:url(img/buttons.gif) 0 -16px}
|
|
||||||
.clearlooks2 .mceFocus .mceMed {right:37px; background:url(img/buttons.gif) -29px -16px}
|
|
||||||
.clearlooks2 .mceFocus .mceMax {right:37px; background:url(img/buttons.gif) -58px -16px}
|
|
||||||
.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px}
|
|
||||||
.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px}
|
|
||||||
.clearlooks2 .mceFocus .mceMin:hover {right:68px; background:url(img/buttons.gif) 0 -32px}
|
|
||||||
.clearlooks2 .mceFocus .mceMed:hover {right:37px; background:url(img/buttons.gif) -29px -32px}
|
|
||||||
.clearlooks2 .mceFocus .mceMax:hover {right:37px; background:url(img/buttons.gif) -58px -32px}
|
|
||||||
|
|
||||||
/* Resize */
|
|
||||||
.clearlooks2 .mceResize {top:auto; left:auto; display:none; width:5px; height:5px; background:url(img/horizontal.gif) no-repeat 0 -75px}
|
|
||||||
.clearlooks2 .mceResizable .mceResize {display:block}
|
|
||||||
.clearlooks2 .mceResizable .mceMin, .clearlooks2 .mceMax {display:none}
|
|
||||||
.clearlooks2 .mceMinimizable .mceMin {display:block}
|
|
||||||
.clearlooks2 .mceMaximizable .mceMax {display:block}
|
|
||||||
.clearlooks2 .mceMaximized .mceMed {display:block}
|
|
||||||
.clearlooks2 .mceMaximized .mceMax {display:none}
|
|
||||||
.clearlooks2 a.mceResizeN {top:0; left:0; width:100%; cursor:n-resize}
|
|
||||||
.clearlooks2 a.mceResizeNW {top:0; left:0; cursor:nw-resize}
|
|
||||||
.clearlooks2 a.mceResizeNE {top:0; right:0; cursor:ne-resize}
|
|
||||||
.clearlooks2 a.mceResizeW {top:0; left:0; height:100%; cursor:w-resize;}
|
|
||||||
.clearlooks2 a.mceResizeE {top:0; right:0; height:100%; cursor:e-resize}
|
|
||||||
.clearlooks2 a.mceResizeS {bottom:0; left:0; width:100%; cursor:s-resize}
|
|
||||||
.clearlooks2 a.mceResizeSW {bottom:0; left:0; cursor:sw-resize}
|
|
||||||
.clearlooks2 a.mceResizeSE {bottom:0; right:0; cursor:se-resize}
|
|
||||||
|
|
||||||
/* Alert/Confirm */
|
|
||||||
.clearlooks2 .mceButton {font-weight:bold; bottom:10px; width:80px; height:30px; background:url(img/button.gif); line-height:30px; vertical-align:middle; text-align:center; outline:0}
|
|
||||||
.clearlooks2 .mceMiddle .mceIcon {left:15px; top:35px; width:32px; height:32px}
|
|
||||||
.clearlooks2 .mceAlert .mceMiddle span, .clearlooks2 .mceConfirm .mceMiddle span {background:transparent;left:60px; top:35px; width:320px; height:50px; font-weight:bold; overflow:auto; white-space:normal}
|
|
||||||
.clearlooks2 a:hover {font-weight:bold;}
|
|
||||||
.clearlooks2 .mceAlert .mceMiddle, .clearlooks2 .mceConfirm .mceMiddle {background:#D6D7D5}
|
|
||||||
.clearlooks2 .mceAlert .mceOk {left:50%; top:auto; margin-left: -40px}
|
|
||||||
.clearlooks2 .mceAlert .mceIcon {background:url(img/alert.gif)}
|
|
||||||
.clearlooks2 .mceConfirm .mceOk {left:50%; top:auto; margin-left: -90px}
|
|
||||||
.clearlooks2 .mceConfirm .mceCancel {left:50%; top:auto}
|
|
||||||
.clearlooks2 .mceConfirm .mceIcon {background:url(img/confirm.gif)}
|
|
||||||
|
|
||||||
/* IE9 fixes */
|
|
||||||
.clearlooks2.ie9 .mceTop .mceCenter {clip:auto;}
|
|
||||||
.clearlooks2.ie9 .mceMiddle {clip:auto;}
|
|
||||||
.clearlooks2.ie9 .mceMiddle .mceLeft, .clearlooks2.ie9 .mceMiddle .mceRight {top: 23px;}
|
|
||||||
.clearlooks2.ie9 .mceAlert .mceMiddle span, .clearlooks2.ie9 .mceConfirm .mceMiddle span {top:13px;}
|
|
||||||
.clearlooks2.ie9 .mceModal .mceMiddle {top:23px}
|
|
||||||
.clearlooks2.ie9 .mceModal .mceMiddle .mceLeft, .clearlooks2.ie9 .mceModal .mceMiddle .mceRight {top: 0}
|
|
||||||
.clearlooks2.ie9 .mceMiddle .mceIcon {top:13px}
|
|
||||||
.clearlooks2.ie9 .mceTop .mceCenter {top:0; right:auto; left:6px; width:calc(100%-12px)}
|
|
387
tools/tiny_mce/plugins/inlinepopups/template.htm
vendored
@ -1,387 +0,0 @@
|
|||||||
<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -->
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title>Template for dialogs</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="skins/clearlooks2/window.css" />
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div class="mceEditor">
|
|
||||||
<div class="clearlooks2" style="width:400px; height:100px; left:10px;">
|
|
||||||
<div class="mceWrapper">
|
|
||||||
<div class="mceTop">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<span>Blured</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceMiddle">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<span>Content</span>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceBottom">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<span>Statusbar text.</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a class="mceMove" href="#"></a>
|
|
||||||
<a class="mceMin" href="#"></a>
|
|
||||||
<a class="mceMax" href="#"></a>
|
|
||||||
<a class="mceMed" href="#"></a>
|
|
||||||
<a class="mceClose" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeN" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeS" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeE" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeNW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeNE" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeSW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeSE" href="#"></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="clearlooks2" style="width:400px; height:100px; left:420px;">
|
|
||||||
<div class="mceWrapper mceMovable mceFocus">
|
|
||||||
<div class="mceTop">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<span>Focused</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceMiddle">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<span>Content</span>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceBottom">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<span>Statusbar text.</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a class="mceMove" href="#"></a>
|
|
||||||
<a class="mceMin" href="#"></a>
|
|
||||||
<a class="mceMax" href="#"></a>
|
|
||||||
<a class="mceMed" href="#"></a>
|
|
||||||
<a class="mceClose" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeN" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeS" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeE" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeNW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeNE" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeSW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeSE" href="#"></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="clearlooks2" style="width:400px; height:100px; left:10px; top:120px;">
|
|
||||||
<div class="mceWrapper mceMovable mceFocus mceStatusbar">
|
|
||||||
<div class="mceTop">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<span>Statusbar</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceMiddle">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<span>Content</span>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceBottom">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<span>Statusbar text.</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a class="mceMove" href="#"></a>
|
|
||||||
<a class="mceMin" href="#"></a>
|
|
||||||
<a class="mceMax" href="#"></a>
|
|
||||||
<a class="mceMed" href="#"></a>
|
|
||||||
<a class="mceClose" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeN" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeS" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeE" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeNW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeNE" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeSW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeSE" href="#"></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="clearlooks2" style="width:400px; height:100px; left:420px; top:120px;">
|
|
||||||
<div class="mceWrapper mceMovable mceFocus mceStatusbar mceResizable">
|
|
||||||
<div class="mceTop">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<span>Statusbar, Resizable</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceMiddle">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<span>Content</span>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceBottom">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<span>Statusbar text.</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a class="mceMove" href="#"></a>
|
|
||||||
<a class="mceMin" href="#"></a>
|
|
||||||
<a class="mceMax" href="#"></a>
|
|
||||||
<a class="mceMed" href="#"></a>
|
|
||||||
<a class="mceClose" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeN" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeS" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeE" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeNW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeNE" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeSW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeSE" href="#"></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="clearlooks2" style="width:400px; height:100px; left:10px; top:230px;">
|
|
||||||
<div class="mceWrapper mceMovable mceFocus mceResizable mceMaximizable">
|
|
||||||
<div class="mceTop">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<span>Resizable, Maximizable</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceMiddle">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<span>Content</span>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceBottom">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<span>Statusbar text.</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a class="mceMove" href="#"></a>
|
|
||||||
<a class="mceMin" href="#"></a>
|
|
||||||
<a class="mceMax" href="#"></a>
|
|
||||||
<a class="mceMed" href="#"></a>
|
|
||||||
<a class="mceClose" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeN" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeS" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeE" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeNW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeNE" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeSW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeSE" href="#"></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="clearlooks2" style="width:400px; height:100px; left:420px; top:230px;">
|
|
||||||
<div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximizable">
|
|
||||||
<div class="mceTop">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<span>Blurred, Maximizable, Statusbar, Resizable</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceMiddle">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<span>Content</span>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceBottom">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<span>Statusbar text.</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a class="mceMove" href="#"></a>
|
|
||||||
<a class="mceMin" href="#"></a>
|
|
||||||
<a class="mceMax" href="#"></a>
|
|
||||||
<a class="mceMed" href="#"></a>
|
|
||||||
<a class="mceClose" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeN" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeS" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeE" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeNW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeNE" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeSW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeSE" href="#"></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="clearlooks2" style="width:400px; height:100px; left:10px; top:340px;">
|
|
||||||
<div class="mceWrapper mceMovable mceFocus mceResizable mceMaximized mceMinimizable mceMaximizable">
|
|
||||||
<div class="mceTop">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<span>Maximized, Maximizable, Minimizable</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceMiddle">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<span>Content</span>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceBottom">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<span>Statusbar text.</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a class="mceMove" href="#"></a>
|
|
||||||
<a class="mceMin" href="#"></a>
|
|
||||||
<a class="mceMax" href="#"></a>
|
|
||||||
<a class="mceMed" href="#"></a>
|
|
||||||
<a class="mceClose" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeN" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeS" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeE" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeNW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeNE" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeSW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeSE" href="#"></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="clearlooks2" style="width:400px; height:100px; left:420px; top:340px;">
|
|
||||||
<div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximized mceMinimizable mceMaximizable">
|
|
||||||
<div class="mceTop">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<span>Blured</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceMiddle">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<span>Content</span>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceBottom">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<span>Statusbar text.</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a class="mceMove" href="#"></a>
|
|
||||||
<a class="mceMin" href="#"></a>
|
|
||||||
<a class="mceMax" href="#"></a>
|
|
||||||
<a class="mceMed" href="#"></a>
|
|
||||||
<a class="mceClose" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeN" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeS" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeE" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeNW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeNE" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeSW" href="#"></a>
|
|
||||||
<a class="mceResize mceResizeSE" href="#"></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="clearlooks2" style="width:400px; height:130px; left:10px; top:450px;">
|
|
||||||
<div class="mceWrapper mceMovable mceFocus mceModal mceAlert">
|
|
||||||
<div class="mceTop">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<span>Alert</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceMiddle">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<span>
|
|
||||||
This is a very long error message. This is a very long error message.
|
|
||||||
This is a very long error message. This is a very long error message.
|
|
||||||
This is a very long error message. This is a very long error message.
|
|
||||||
This is a very long error message. This is a very long error message.
|
|
||||||
This is a very long error message. This is a very long error message.
|
|
||||||
This is a very long error message. This is a very long error message.
|
|
||||||
</span>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<div class="mceIcon"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceBottom">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a class="mceMove" href="#"></a>
|
|
||||||
<a class="mceButton mceOk" href="#">Ok</a>
|
|
||||||
<a class="mceClose" href="#"></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="clearlooks2" style="width:400px; height:130px; left:420px; top:450px;">
|
|
||||||
<div class="mceWrapper mceMovable mceFocus mceModal mceConfirm">
|
|
||||||
<div class="mceTop">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<span>Confirm</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceMiddle">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<span>
|
|
||||||
This is a very long error message. This is a very long error message.
|
|
||||||
This is a very long error message. This is a very long error message.
|
|
||||||
This is a very long error message. This is a very long error message.
|
|
||||||
This is a very long error message. This is a very long error message.
|
|
||||||
This is a very long error message. This is a very long error message.
|
|
||||||
This is a very long error message. This is a very long error message.
|
|
||||||
</span>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
<div class="mceIcon"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mceBottom">
|
|
||||||
<div class="mceLeft"></div>
|
|
||||||
<div class="mceCenter"></div>
|
|
||||||
<div class="mceRight"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a class="mceMove" href="#"></a>
|
|
||||||
<a class="mceButton mceOk" href="#">Ok</a>
|
|
||||||
<a class="mceButton mceCancel" href="#">Cancel</a>
|
|
||||||
<a class="mceClose" href="#"></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1 +0,0 @@
|
|||||||
(function(){tinymce.create("tinymce.plugins.InsertDateTime",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceInsertDate",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_dateFormat",a.getLang("insertdatetime.date_fmt")));a.execCommand("mceInsertContent",false,d)});a.addCommand("mceInsertTime",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_timeFormat",a.getLang("insertdatetime.time_fmt")));a.execCommand("mceInsertContent",false,d)});a.addButton("insertdate",{title:"insertdatetime.insertdate_desc",cmd:"mceInsertDate"});a.addButton("inserttime",{title:"insertdatetime.inserttime_desc",cmd:"mceInsertTime"})},getInfo:function(){return{longname:"Insert date/time",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getDateTime:function(e,a){var c=this.editor;function b(g,d){g=""+g;if(g.length<d){for(var f=0;f<(d-g.length);f++){g="0"+g}}return g}a=a.replace("%D","%m/%d/%y");a=a.replace("%r","%I:%M:%S %p");a=a.replace("%Y",""+e.getFullYear());a=a.replace("%y",""+e.getYear());a=a.replace("%m",b(e.getMonth()+1,2));a=a.replace("%d",b(e.getDate(),2));a=a.replace("%H",""+b(e.getHours(),2));a=a.replace("%M",""+b(e.getMinutes(),2));a=a.replace("%S",""+b(e.getSeconds(),2));a=a.replace("%I",""+((e.getHours()+11)%12+1));a=a.replace("%p",""+(e.getHours()<12?"AM":"PM"));a=a.replace("%B",""+c.getLang("insertdatetime.months_long").split(",")[e.getMonth()]);a=a.replace("%b",""+c.getLang("insertdatetime.months_short").split(",")[e.getMonth()]);a=a.replace("%A",""+c.getLang("insertdatetime.day_long").split(",")[e.getDay()]);a=a.replace("%a",""+c.getLang("insertdatetime.day_short").split(",")[e.getDay()]);a=a.replace("%%","%");return a}});tinymce.PluginManager.add("insertdatetime",tinymce.plugins.InsertDateTime)})();
|
|
@ -1,83 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2009, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
tinymce.create('tinymce.plugins.InsertDateTime', {
|
|
||||||
init : function(ed, url) {
|
|
||||||
var t = this;
|
|
||||||
|
|
||||||
t.editor = ed;
|
|
||||||
|
|
||||||
ed.addCommand('mceInsertDate', function() {
|
|
||||||
var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_dateFormat", ed.getLang('insertdatetime.date_fmt')));
|
|
||||||
|
|
||||||
ed.execCommand('mceInsertContent', false, str);
|
|
||||||
});
|
|
||||||
|
|
||||||
ed.addCommand('mceInsertTime', function() {
|
|
||||||
var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_timeFormat", ed.getLang('insertdatetime.time_fmt')));
|
|
||||||
|
|
||||||
ed.execCommand('mceInsertContent', false, str);
|
|
||||||
});
|
|
||||||
|
|
||||||
ed.addButton('insertdate', {title : 'insertdatetime.insertdate_desc', cmd : 'mceInsertDate'});
|
|
||||||
ed.addButton('inserttime', {title : 'insertdatetime.inserttime_desc', cmd : 'mceInsertTime'});
|
|
||||||
},
|
|
||||||
|
|
||||||
getInfo : function() {
|
|
||||||
return {
|
|
||||||
longname : 'Insert date/time',
|
|
||||||
author : 'Moxiecode Systems AB',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',
|
|
||||||
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
// Private methods
|
|
||||||
|
|
||||||
_getDateTime : function(d, fmt) {
|
|
||||||
var ed = this.editor;
|
|
||||||
|
|
||||||
function addZeros(value, len) {
|
|
||||||
value = "" + value;
|
|
||||||
|
|
||||||
if (value.length < len) {
|
|
||||||
for (var i=0; i<(len-value.length); i++)
|
|
||||||
value = "0" + value;
|
|
||||||
}
|
|
||||||
|
|
||||||
return value;
|
|
||||||
};
|
|
||||||
|
|
||||||
fmt = fmt.replace("%D", "%m/%d/%y");
|
|
||||||
fmt = fmt.replace("%r", "%I:%M:%S %p");
|
|
||||||
fmt = fmt.replace("%Y", "" + d.getFullYear());
|
|
||||||
fmt = fmt.replace("%y", "" + d.getYear());
|
|
||||||
fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
|
|
||||||
fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
|
|
||||||
fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
|
|
||||||
fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
|
|
||||||
fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
|
|
||||||
fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
|
|
||||||
fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
|
|
||||||
fmt = fmt.replace("%B", "" + ed.getLang("insertdatetime.months_long").split(',')[d.getMonth()]);
|
|
||||||
fmt = fmt.replace("%b", "" + ed.getLang("insertdatetime.months_short").split(',')[d.getMonth()]);
|
|
||||||
fmt = fmt.replace("%A", "" + ed.getLang("insertdatetime.day_long").split(',')[d.getDay()]);
|
|
||||||
fmt = fmt.replace("%a", "" + ed.getLang("insertdatetime.day_short").split(',')[d.getDay()]);
|
|
||||||
fmt = fmt.replace("%%", "%");
|
|
||||||
|
|
||||||
return fmt;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register plugin
|
|
||||||
tinymce.PluginManager.add('insertdatetime', tinymce.plugins.InsertDateTime);
|
|
||||||
})();
|
|
@ -1 +0,0 @@
|
|||||||
(function(){tinymce.create("tinymce.plugins.Layer",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceInsertLayer",c._insertLayer,c);a.addCommand("mceMoveForward",function(){c._move(1)});a.addCommand("mceMoveBackward",function(){c._move(-1)});a.addCommand("mceMakeAbsolute",function(){c._toggleAbsolute()});a.addButton("moveforward",{title:"layer.forward_desc",cmd:"mceMoveForward"});a.addButton("movebackward",{title:"layer.backward_desc",cmd:"mceMoveBackward"});a.addButton("absolute",{title:"layer.absolute_desc",cmd:"mceMakeAbsolute"});a.addButton("insertlayer",{title:"layer.insertlayer_desc",cmd:"mceInsertLayer"});a.onInit.add(function(){if(tinymce.isIE){a.getDoc().execCommand("2D-Position",false,true)}});a.onNodeChange.add(c._nodeChange,c);a.onVisualAid.add(c._visualAid,c)},getInfo:function(){return{longname:"Layer",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,e){var c,d;c=this._getParentLayer(e);d=b.dom.getParent(e,"DIV,P,IMG");if(!d){a.setDisabled("absolute",1);a.setDisabled("moveforward",1);a.setDisabled("movebackward",1)}else{a.setDisabled("absolute",0);a.setDisabled("moveforward",!c);a.setDisabled("movebackward",!c);a.setActive("absolute",c&&c.style.position.toLowerCase()=="absolute")}},_visualAid:function(a,c,b){var d=a.dom;tinymce.each(d.select("div,p",c),function(f){if(/^(absolute|relative|static)$/i.test(f.style.position)){if(b){d.addClass(f,"mceItemVisualAid")}else{d.removeClass(f,"mceItemVisualAid")}}})},_move:function(h){var b=this.editor,f,g=[],e=this._getParentLayer(b.selection.getNode()),c=-1,j=-1,a;a=[];tinymce.walk(b.getBody(),function(d){if(d.nodeType==1&&/^(absolute|relative|static)$/i.test(d.style.position)){a.push(d)}},"childNodes");for(f=0;f<a.length;f++){g[f]=a[f].style.zIndex?parseInt(a[f].style.zIndex):0;if(c<0&&a[f]==e){c=f}}if(h<0){for(f=0;f<g.length;f++){if(g[f]<g[c]){j=f;break}}if(j>-1){a[c].style.zIndex=g[j];a[j].style.zIndex=g[c]}else{if(g[c]>0){a[c].style.zIndex=g[c]-1}}}else{for(f=0;f<g.length;f++){if(g[f]>g[c]){j=f;break}}if(j>-1){a[c].style.zIndex=g[j];a[j].style.zIndex=g[c]}else{a[c].style.zIndex=g[c]+1}}b.execCommand("mceRepaint")},_getParentLayer:function(a){return this.editor.dom.getParent(a,function(b){return b.nodeType==1&&/^(absolute|relative|static)$/i.test(b.style.position)})},_insertLayer:function(){var a=this.editor,b=a.dom.getPos(a.dom.getParent(a.selection.getNode(),"*"));a.dom.add(a.getBody(),"div",{style:{position:"absolute",left:b.x,top:(b.y>20?b.y:20),width:100,height:100},"class":"mceItemVisualAid"},a.selection.getContent()||a.getLang("layer.content"))},_toggleAbsolute:function(){var a=this.editor,b=this._getParentLayer(a.selection.getNode());if(!b){b=a.dom.getParent(a.selection.getNode(),"DIV,P,IMG")}if(b){if(b.style.position.toLowerCase()=="absolute"){a.dom.setStyles(b,{position:"",left:"",top:"",width:"",height:""});a.dom.removeClass(b,"mceItemVisualAid")}else{if(b.style.left==""){b.style.left=20+"px"}if(b.style.top==""){b.style.top=20+"px"}if(b.style.width==""){b.style.width=b.width?(b.width+"px"):"100px"}if(b.style.height==""){b.style.height=b.height?(b.height+"px"):"100px"}b.style.position="absolute";a.addVisual(a.getBody())}a.execCommand("mceRepaint");a.nodeChanged()}}});tinymce.PluginManager.add("layer",tinymce.plugins.Layer)})();
|
|
212
tools/tiny_mce/plugins/layer/editor_plugin_src.js
vendored
@ -1,212 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2009, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
tinymce.create('tinymce.plugins.Layer', {
|
|
||||||
init : function(ed, url) {
|
|
||||||
var t = this;
|
|
||||||
|
|
||||||
t.editor = ed;
|
|
||||||
|
|
||||||
// Register commands
|
|
||||||
ed.addCommand('mceInsertLayer', t._insertLayer, t);
|
|
||||||
|
|
||||||
ed.addCommand('mceMoveForward', function() {
|
|
||||||
t._move(1);
|
|
||||||
});
|
|
||||||
|
|
||||||
ed.addCommand('mceMoveBackward', function() {
|
|
||||||
t._move(-1);
|
|
||||||
});
|
|
||||||
|
|
||||||
ed.addCommand('mceMakeAbsolute', function() {
|
|
||||||
t._toggleAbsolute();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register buttons
|
|
||||||
ed.addButton('moveforward', {title : 'layer.forward_desc', cmd : 'mceMoveForward'});
|
|
||||||
ed.addButton('movebackward', {title : 'layer.backward_desc', cmd : 'mceMoveBackward'});
|
|
||||||
ed.addButton('absolute', {title : 'layer.absolute_desc', cmd : 'mceMakeAbsolute'});
|
|
||||||
ed.addButton('insertlayer', {title : 'layer.insertlayer_desc', cmd : 'mceInsertLayer'});
|
|
||||||
|
|
||||||
ed.onInit.add(function() {
|
|
||||||
if (tinymce.isIE)
|
|
||||||
ed.getDoc().execCommand('2D-Position', false, true);
|
|
||||||
});
|
|
||||||
|
|
||||||
ed.onNodeChange.add(t._nodeChange, t);
|
|
||||||
ed.onVisualAid.add(t._visualAid, t);
|
|
||||||
},
|
|
||||||
|
|
||||||
getInfo : function() {
|
|
||||||
return {
|
|
||||||
longname : 'Layer',
|
|
||||||
author : 'Moxiecode Systems AB',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',
|
|
||||||
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
// Private methods
|
|
||||||
|
|
||||||
_nodeChange : function(ed, cm, n) {
|
|
||||||
var le, p;
|
|
||||||
|
|
||||||
le = this._getParentLayer(n);
|
|
||||||
p = ed.dom.getParent(n, 'DIV,P,IMG');
|
|
||||||
|
|
||||||
if (!p) {
|
|
||||||
cm.setDisabled('absolute', 1);
|
|
||||||
cm.setDisabled('moveforward', 1);
|
|
||||||
cm.setDisabled('movebackward', 1);
|
|
||||||
} else {
|
|
||||||
cm.setDisabled('absolute', 0);
|
|
||||||
cm.setDisabled('moveforward', !le);
|
|
||||||
cm.setDisabled('movebackward', !le);
|
|
||||||
cm.setActive('absolute', le && le.style.position.toLowerCase() == "absolute");
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// Private methods
|
|
||||||
|
|
||||||
_visualAid : function(ed, e, s) {
|
|
||||||
var dom = ed.dom;
|
|
||||||
|
|
||||||
tinymce.each(dom.select('div,p', e), function(e) {
|
|
||||||
if (/^(absolute|relative|static)$/i.test(e.style.position)) {
|
|
||||||
if (s)
|
|
||||||
dom.addClass(e, 'mceItemVisualAid');
|
|
||||||
else
|
|
||||||
dom.removeClass(e, 'mceItemVisualAid');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
_move : function(d) {
|
|
||||||
var ed = this.editor, i, z = [], le = this._getParentLayer(ed.selection.getNode()), ci = -1, fi = -1, nl;
|
|
||||||
|
|
||||||
nl = [];
|
|
||||||
tinymce.walk(ed.getBody(), function(n) {
|
|
||||||
if (n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position))
|
|
||||||
nl.push(n);
|
|
||||||
}, 'childNodes');
|
|
||||||
|
|
||||||
// Find z-indexes
|
|
||||||
for (i=0; i<nl.length; i++) {
|
|
||||||
z[i] = nl[i].style.zIndex ? parseInt(nl[i].style.zIndex) : 0;
|
|
||||||
|
|
||||||
if (ci < 0 && nl[i] == le)
|
|
||||||
ci = i;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (d < 0) {
|
|
||||||
// Move back
|
|
||||||
|
|
||||||
// Try find a lower one
|
|
||||||
for (i=0; i<z.length; i++) {
|
|
||||||
if (z[i] < z[ci]) {
|
|
||||||
fi = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fi > -1) {
|
|
||||||
nl[ci].style.zIndex = z[fi];
|
|
||||||
nl[fi].style.zIndex = z[ci];
|
|
||||||
} else {
|
|
||||||
if (z[ci] > 0)
|
|
||||||
nl[ci].style.zIndex = z[ci] - 1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Move forward
|
|
||||||
|
|
||||||
// Try find a higher one
|
|
||||||
for (i=0; i<z.length; i++) {
|
|
||||||
if (z[i] > z[ci]) {
|
|
||||||
fi = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fi > -1) {
|
|
||||||
nl[ci].style.zIndex = z[fi];
|
|
||||||
nl[fi].style.zIndex = z[ci];
|
|
||||||
} else
|
|
||||||
nl[ci].style.zIndex = z[ci] + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
ed.execCommand('mceRepaint');
|
|
||||||
},
|
|
||||||
|
|
||||||
_getParentLayer : function(n) {
|
|
||||||
return this.editor.dom.getParent(n, function(n) {
|
|
||||||
return n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
_insertLayer : function() {
|
|
||||||
var ed = this.editor, p = ed.dom.getPos(ed.dom.getParent(ed.selection.getNode(), '*'));
|
|
||||||
|
|
||||||
ed.dom.add(ed.getBody(), 'div', {
|
|
||||||
style : {
|
|
||||||
position : 'absolute',
|
|
||||||
left : p.x,
|
|
||||||
top : (p.y > 20 ? p.y : 20),
|
|
||||||
width : 100,
|
|
||||||
height : 100
|
|
||||||
},
|
|
||||||
'class' : 'mceItemVisualAid'
|
|
||||||
}, ed.selection.getContent() || ed.getLang('layer.content'));
|
|
||||||
},
|
|
||||||
|
|
||||||
_toggleAbsolute : function() {
|
|
||||||
var ed = this.editor, le = this._getParentLayer(ed.selection.getNode());
|
|
||||||
|
|
||||||
if (!le)
|
|
||||||
le = ed.dom.getParent(ed.selection.getNode(), 'DIV,P,IMG');
|
|
||||||
|
|
||||||
if (le) {
|
|
||||||
if (le.style.position.toLowerCase() == "absolute") {
|
|
||||||
ed.dom.setStyles(le, {
|
|
||||||
position : '',
|
|
||||||
left : '',
|
|
||||||
top : '',
|
|
||||||
width : '',
|
|
||||||
height : ''
|
|
||||||
});
|
|
||||||
|
|
||||||
ed.dom.removeClass(le, 'mceItemVisualAid');
|
|
||||||
} else {
|
|
||||||
if (le.style.left == "")
|
|
||||||
le.style.left = 20 + 'px';
|
|
||||||
|
|
||||||
if (le.style.top == "")
|
|
||||||
le.style.top = 20 + 'px';
|
|
||||||
|
|
||||||
if (le.style.width == "")
|
|
||||||
le.style.width = le.width ? (le.width + 'px') : '100px';
|
|
||||||
|
|
||||||
if (le.style.height == "")
|
|
||||||
le.style.height = le.height ? (le.height + 'px') : '100px';
|
|
||||||
|
|
||||||
le.style.position = "absolute";
|
|
||||||
ed.addVisual(ed.getBody());
|
|
||||||
}
|
|
||||||
|
|
||||||
ed.execCommand('mceRepaint');
|
|
||||||
ed.nodeChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register plugin
|
|
||||||
tinymce.PluginManager.add('layer', tinymce.plugins.Layer);
|
|
||||||
})();
|
|
@ -1 +0,0 @@
|
|||||||
(function(a){a.onAddEditor.addToTop(function(c,b){b.settings.inline_styles=false});a.create("tinymce.plugins.LegacyOutput",{init:function(b){b.onInit.add(function(){var c="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",e=a.explode(b.settings.font_size_style_values),d=b.serializer;b.formatter.register({alignleft:{selector:c,attributes:{align:"left"}},aligncenter:{selector:c,attributes:{align:"center"}},alignright:{selector:c,attributes:{align:"right"}},alignfull:{selector:c,attributes:{align:"full"}},bold:{inline:"b"},italic:{inline:"i"},underline:{inline:"u"},strikethrough:{inline:"strike"},fontname:{inline:"font",attributes:{face:"%value"}},fontsize:{inline:"font",attributes:{size:function(f){return a.inArray(e,f.value)+1}}},forecolor:{inline:"font",styles:{color:"%value"}},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"}}});d._setup();a.each("b,i,u,strike".split(","),function(f){var g=d.rules[f];if(!g){d.addRules(f)}});if(!d.rules.font){d.addRules("font[face|size|color|style]")}a.each(c.split(","),function(f){var h=d.rules[f],g;if(h){a.each(h.attribs,function(j,i){if(i.name=="align"){g=true;return false}});if(!g){h.attribs.push({name:"align"})}}});b.onNodeChange.add(function(g,k){var j,f,h,i;f=g.dom.getParent(g.selection.getNode(),"font");if(f){h=f.face;i=f.size}if(j=k.get("fontselect")){j.select(function(l){return l==h})}if(j=k.get("fontsizeselect")){j.select(function(m){var l=a.inArray(e,m.fontSize);return l+1==i})}})})},getInfo:function(){return{longname:"LegacyOutput",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/legacyoutput",version:a.majorVersion+"."+a.minorVersion}}});a.PluginManager.add("legacyoutput",a.plugins.LegacyOutput)})(tinymce);
|
|
@ -1,136 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2009, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*
|
|
||||||
* This plugin will force TinyMCE to produce deprecated legacy output such as font elements, u elements, align
|
|
||||||
* attributes and so forth. There are a few cases where these old items might be needed for example in email applications or with Flash
|
|
||||||
*
|
|
||||||
* However you should NOT use this plugin if you are building some system that produces web contents such as a CMS. All these elements are
|
|
||||||
* not apart of the newer specifications for HTML and XHTML.
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function(tinymce) {
|
|
||||||
// Override inline_styles setting to force TinyMCE to produce deprecated contents
|
|
||||||
tinymce.onAddEditor.addToTop(function(tinymce, editor) {
|
|
||||||
editor.settings.inline_styles = false;
|
|
||||||
});
|
|
||||||
|
|
||||||
// Create the legacy ouput plugin
|
|
||||||
tinymce.create('tinymce.plugins.LegacyOutput', {
|
|
||||||
init : function(editor) {
|
|
||||||
editor.onInit.add(function() {
|
|
||||||
var alignElements = 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img',
|
|
||||||
fontSizes = tinymce.explode(editor.settings.font_size_style_values),
|
|
||||||
serializer = editor.serializer;
|
|
||||||
|
|
||||||
// Override some internal formats to produce legacy elements and attributes
|
|
||||||
editor.formatter.register({
|
|
||||||
// Change alignment formats to use the deprecated align attribute
|
|
||||||
alignleft : {selector : alignElements, attributes : {align : 'left'}},
|
|
||||||
aligncenter : {selector : alignElements, attributes : {align : 'center'}},
|
|
||||||
alignright : {selector : alignElements, attributes : {align : 'right'}},
|
|
||||||
alignfull : {selector : alignElements, attributes : {align : 'full'}},
|
|
||||||
|
|
||||||
// Change the basic formatting elements to use deprecated element types
|
|
||||||
bold : {inline : 'b'},
|
|
||||||
italic : {inline : 'i'},
|
|
||||||
underline : {inline : 'u'},
|
|
||||||
strikethrough : {inline : 'strike'},
|
|
||||||
|
|
||||||
// Change font size and font family to use the deprecated font element
|
|
||||||
fontname : {inline : 'font', attributes : {face : '%value'}},
|
|
||||||
fontsize : {
|
|
||||||
inline : 'font',
|
|
||||||
attributes : {
|
|
||||||
size : function(vars) {
|
|
||||||
return tinymce.inArray(fontSizes, vars.value) + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// Setup font elements for colors as well
|
|
||||||
forecolor : {inline : 'font', styles : {color : '%value'}},
|
|
||||||
hilitecolor : {inline : 'font', styles : {backgroundColor : '%value'}}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Force parsing of the serializer rules
|
|
||||||
serializer._setup();
|
|
||||||
|
|
||||||
// Check that deprecated elements are allowed if not add them
|
|
||||||
tinymce.each('b,i,u,strike'.split(','), function(name) {
|
|
||||||
var rule = serializer.rules[name];
|
|
||||||
|
|
||||||
if (!rule)
|
|
||||||
serializer.addRules(name);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Add font element if it's missing
|
|
||||||
if (!serializer.rules["font"])
|
|
||||||
serializer.addRules("font[face|size|color|style]");
|
|
||||||
|
|
||||||
// Add the missing and depreacted align attribute for the serialization engine
|
|
||||||
tinymce.each(alignElements.split(','), function(name) {
|
|
||||||
var rule = serializer.rules[name], found;
|
|
||||||
|
|
||||||
if (rule) {
|
|
||||||
tinymce.each(rule.attribs, function(name, attr) {
|
|
||||||
if (attr.name == 'align') {
|
|
||||||
found = true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!found)
|
|
||||||
rule.attribs.push({name : 'align'});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Listen for the onNodeChange event so that we can do special logic for the font size and font name drop boxes
|
|
||||||
editor.onNodeChange.add(function(editor, control_manager) {
|
|
||||||
var control, fontElm, fontName, fontSize;
|
|
||||||
|
|
||||||
// Find font element get it's name and size
|
|
||||||
fontElm = editor.dom.getParent(editor.selection.getNode(), 'font');
|
|
||||||
if (fontElm) {
|
|
||||||
fontName = fontElm.face;
|
|
||||||
fontSize = fontElm.size;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Select/unselect the font name in droplist
|
|
||||||
if (control = control_manager.get('fontselect')) {
|
|
||||||
control.select(function(value) {
|
|
||||||
return value == fontName;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Select/unselect the font size in droplist
|
|
||||||
if (control = control_manager.get('fontsizeselect')) {
|
|
||||||
control.select(function(value) {
|
|
||||||
var index = tinymce.inArray(fontSizes, value.fontSize);
|
|
||||||
|
|
||||||
return index + 1 == fontSize;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
getInfo : function() {
|
|
||||||
return {
|
|
||||||
longname : 'LegacyOutput',
|
|
||||||
author : 'Moxiecode Systems AB',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/legacyoutput',
|
|
||||||
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register plugin
|
|
||||||
tinymce.PluginManager.add('legacyoutput', tinymce.plugins.LegacyOutput);
|
|
||||||
})(tinymce);
|
|
617
tools/tiny_mce/plugins/lists/editor_plugin_src.js
vendored
@ -1,617 +0,0 @@
|
|||||||
/**
|
|
||||||
* editor_plugin_src.js
|
|
||||||
*
|
|
||||||
* Copyright 2011, Moxiecode Systems AB
|
|
||||||
* Released under LGPL License.
|
|
||||||
*
|
|
||||||
* License: http://tinymce.moxiecode.com/license
|
|
||||||
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
var each = tinymce.each, Event = tinymce.dom.Event, bookmark;
|
|
||||||
|
|
||||||
// Skips text nodes that only contain whitespace since they aren't semantically important.
|
|
||||||
function skipWhitespaceNodes(e, next) {
|
|
||||||
while (e && (e.nodeType === 8 || (e.nodeType === 3 && /^[ \t\n\r]*$/.test(e.nodeValue)))) {
|
|
||||||
e = next(e);
|
|
||||||
}
|
|
||||||
return e;
|
|
||||||
}
|
|
||||||
|
|
||||||
function skipWhitespaceNodesBackwards(e) {
|
|
||||||
return skipWhitespaceNodes(e, function(e) { return e.previousSibling; });
|
|
||||||
}
|
|
||||||
|
|
||||||
function skipWhitespaceNodesForwards(e) {
|
|
||||||
return skipWhitespaceNodes(e, function(e) { return e.nextSibling; });
|
|
||||||
}
|
|
||||||
|
|
||||||
function hasParentInList(ed, e, list) {
|
|
||||||
return ed.dom.getParent(e, function(p) {
|
|
||||||
return tinymce.inArray(list, p) !== -1;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function isList(e) {
|
|
||||||
return e && (e.tagName === 'OL' || e.tagName === 'UL');
|
|
||||||
}
|
|
||||||
|
|
||||||
function splitNestedLists(element, dom) {
|
|
||||||
var tmp, nested, wrapItem;
|
|
||||||
tmp = skipWhitespaceNodesBackwards(element.lastChild);
|
|
||||||
while (isList(tmp)) {
|
|
||||||
nested = tmp;
|
|
||||||
tmp = skipWhitespaceNodesBackwards(nested.previousSibling);
|
|
||||||
}
|
|
||||||
if (nested) {
|
|
||||||
wrapItem = dom.create('li', { style: 'list-style-type: none;'});
|
|
||||||
dom.split(element, nested);
|
|
||||||
dom.insertAfter(wrapItem, nested);
|
|
||||||
wrapItem.appendChild(nested);
|
|
||||||
wrapItem.appendChild(nested);
|
|
||||||
element = wrapItem.previousSibling;
|
|
||||||
}
|
|
||||||
return element;
|
|
||||||
}
|
|
||||||
|
|
||||||
function attemptMergeWithAdjacent(e, allowDifferentListStyles, mergeParagraphs) {
|
|
||||||
e = attemptMergeWithPrevious(e, allowDifferentListStyles, mergeParagraphs);
|
|
||||||
return attemptMergeWithNext(e, allowDifferentListStyles, mergeParagraphs);
|
|
||||||
}
|
|
||||||
|
|
||||||
function attemptMergeWithPrevious(e, allowDifferentListStyles, mergeParagraphs) {
|
|
||||||
var prev = skipWhitespaceNodesBackwards(e.previousSibling);
|
|
||||||
if (prev) {
|
|
||||||
return attemptMerge(prev, e, allowDifferentListStyles ? prev : false, mergeParagraphs);
|
|
||||||
} else {
|
|
||||||
return e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function attemptMergeWithNext(e, allowDifferentListStyles, mergeParagraphs) {
|
|
||||||
var next = skipWhitespaceNodesForwards(e.nextSibling);
|
|
||||||
if (next) {
|
|
||||||
return attemptMerge(e, next, allowDifferentListStyles ? next : false, mergeParagraphs);
|
|
||||||
} else {
|
|
||||||
return e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function attemptMerge(e1, e2, differentStylesMasterElement, mergeParagraphs) {
|
|
||||||
if (canMerge(e1, e2, !!differentStylesMasterElement, mergeParagraphs)) {
|
|
||||||
return merge(e1, e2, differentStylesMasterElement);
|
|
||||||
} else if (e1 && e1.tagName === 'LI' && isList(e2)) {
|
|
||||||
// Fix invalidly nested lists.
|
|
||||||
e1.appendChild(e2);
|
|
||||||
}
|
|
||||||
return e2;
|
|
||||||
}
|
|
||||||
|
|
||||||
function canMerge(e1, e2, allowDifferentListStyles, mergeParagraphs) {
|
|
||||||
if (!e1 || !e2) {
|
|
||||||
return false;
|
|
||||||
} else if (e1.tagName === 'LI' && e2.tagName === 'LI') {
|
|
||||||
return e2.style.listStyleType === 'none' || containsOnlyAList(e2);
|
|
||||||
} else if (isList(e1)) {
|
|
||||||
return (e1.tagName === e2.tagName && (allowDifferentListStyles || e1.style.listStyleType === e2.style.listStyleType)) || isListForIndent(e2);
|
|
||||||
} else if (mergeParagraphs && e1.tagName === 'P' && e2.tagName === 'P') {
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function isListForIndent(e) {
|
|
||||||
var firstLI = skipWhitespaceNodesForwards(e.firstChild), lastLI = skipWhitespaceNodesBackwards(e.lastChild);
|
|
||||||
return firstLI && lastLI && isList(e) && firstLI === lastLI && (isList(firstLI) || firstLI.style.listStyleType === 'none' || containsOnlyAList(firstLI));
|
|
||||||
}
|
|
||||||
|
|
||||||
function containsOnlyAList(e) {
|
|
||||||
var firstChild = skipWhitespaceNodesForwards(e.firstChild), lastChild = skipWhitespaceNodesBackwards(e.lastChild);
|
|
||||||
return firstChild && lastChild && firstChild === lastChild && isList(firstChild);
|
|
||||||
}
|
|
||||||
|
|
||||||
function merge(e1, e2, masterElement) {
|
|
||||||
var lastOriginal = skipWhitespaceNodesBackwards(e1.lastChild), firstNew = skipWhitespaceNodesForwards(e2.firstChild);
|
|
||||||
if (e1.tagName === 'P') {
|
|
||||||
e1.appendChild(e1.ownerDocument.createElement('br'));
|
|
||||||
}
|
|
||||||
while (e2.firstChild) {
|
|
||||||
e1.appendChild(e2.firstChild);
|
|
||||||
}
|
|
||||||
if (masterElement) {
|
|
||||||
e1.style.listStyleType = masterElement.style.listStyleType;
|
|
||||||
}
|
|
||||||
e2.parentNode.removeChild(e2);
|
|
||||||
attemptMerge(lastOriginal, firstNew, false);
|
|
||||||
return e1;
|
|
||||||
}
|
|
||||||
|
|
||||||
function findItemToOperateOn(e, dom) {
|
|
||||||
var item;
|
|
||||||
if (!dom.is(e, 'li,ol,ul')) {
|
|
||||||
item = dom.getParent(e, 'li');
|
|
||||||
if (item) {
|
|
||||||
e = item;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return e;
|
|
||||||
}
|
|
||||||
|
|
||||||
tinymce.create('tinymce.plugins.Lists', {
|
|
||||||
init: function(ed, url) {
|
|
||||||
var enterDownInEmptyList = false;
|
|
||||||
function isTriggerKey(e) {
|
|
||||||
return e.keyCode === 9 && (ed.queryCommandState('InsertUnorderedList') || ed.queryCommandState('InsertOrderedList'));
|
|
||||||
}
|
|
||||||
function isEnterInEmptyListItem(ed, e) {
|
|
||||||
var sel = ed.selection, n;
|
|
||||||
if (e.keyCode === 13) {
|
|
||||||
n = sel.getStart();
|
|
||||||
enterDownInEmptyList = sel.isCollapsed() && n && n.tagName === 'LI' && n.childNodes.length === 0;
|
|
||||||
return enterDownInEmptyList;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function cancelKeys(ed, e) {
|
|
||||||
if (isTriggerKey(e) || isEnterInEmptyListItem(ed, e)) {
|
|
||||||
return Event.cancel(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.ed = ed;
|
|
||||||
ed.addCommand('Indent', this.indent, this);
|
|
||||||
ed.addCommand('Outdent', this.outdent, this);
|
|
||||||
ed.addCommand('InsertUnorderedList', function() {
|
|
||||||
this.applyList('UL', 'OL');
|
|
||||||
}, this);
|
|
||||||
ed.addCommand('InsertOrderedList', function() {
|
|
||||||
this.applyList('OL', 'UL');
|
|
||||||
}, this);
|
|
||||||
|
|
||||||
ed.onInit.add(function() {
|
|
||||||
ed.editorCommands.addCommands({
|
|
||||||
'outdent': function() {
|
|
||||||
var sel = ed.selection, dom = ed.dom;
|
|
||||||
function hasStyleIndent(n) {
|
|
||||||
n = dom.getParent(n, dom.isBlock);
|
|
||||||
return n && (parseInt(ed.dom.getStyle(n, 'margin-left') || 0, 10) + parseInt(ed.dom.getStyle(n, 'padding-left') || 0, 10)) > 0;
|
|
||||||
}
|
|
||||||
return hasStyleIndent(sel.getStart()) || hasStyleIndent(sel.getEnd()) || ed.queryCommandState('InsertOrderedList') || ed.queryCommandState('InsertUnorderedList');
|
|
||||||
}
|
|
||||||
}, 'state');
|
|
||||||
});
|
|
||||||
|
|
||||||
ed.onKeyUp.add(function(ed, e) {
|
|
||||||
var n, rng;
|
|
||||||
if (isTriggerKey(e)) {
|
|
||||||
ed.execCommand(e.shiftKey ? 'Outdent' : 'Indent', true, null);
|
|
||||||
return Event.cancel(e);
|
|
||||||
} else if (enterDownInEmptyList && isEnterInEmptyListItem(ed, e)) {
|
|
||||||
if (ed.queryCommandState('InsertOrderedList')) {
|
|
||||||
ed.execCommand('InsertOrderedList');
|
|
||||||
} else {
|
|
||||||
ed.execCommand('InsertUnorderedList');
|
|
||||||
}
|
|
||||||
n = ed.selection.getStart();
|
|
||||||
if (n && n.tagName === 'LI') {
|
|
||||||
// Fix the caret position on IE since it jumps back up to the previous list item.
|
|
||||||
n = ed.dom.getParent(n, 'ol,ul').nextSibling;
|
|
||||||
if (n && n.tagName === 'P') {
|
|
||||||
if (!n.firstChild) {
|
|
||||||
n.appendChild(ed.getDoc().createTextNode(''));
|
|
||||||
}
|
|
||||||
rng = ed.dom.createRng();
|
|
||||||
rng.setStart(n.firstChild, 1);
|
|
||||||
rng.setEnd(n.firstChild, 1);
|
|
||||||
ed.selection.setRng(rng);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Event.cancel(e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
ed.onKeyPress.add(cancelKeys);
|
|
||||||
ed.onKeyDown.add(cancelKeys);
|
|
||||||
},
|
|
||||||
|
|
||||||
applyList: function(targetListType, oppositeListType) {
|
|
||||||
var t = this, ed = t.ed, dom = ed.dom, applied = [], hasSameType = false, hasOppositeType = false, hasNonList = false, actions,
|
|
||||||
selectedBlocks = ed.selection.getSelectedBlocks();
|
|
||||||
|
|
||||||
function cleanupBr(e) {
|
|
||||||
if (e && e.tagName === 'BR') {
|
|
||||||
dom.remove(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function makeList(element) {
|
|
||||||
var list = dom.create(targetListType), li;
|
|
||||||
function adjustIndentForNewList(element) {
|
|
||||||
// If there's a margin-left, outdent one level to account for the extra list margin.
|
|
||||||
if (element.style.marginLeft || element.style.paddingLeft) {
|
|
||||||
t.adjustPaddingFunction(false)(element);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (element.tagName === 'LI') {
|
|
||||||
// No change required.
|
|
||||||
} else if (element.tagName === 'P' || element.tagName === 'DIV' || element.tagName === 'BODY') {
|
|
||||||
processBrs(element, function(startSection, br, previousBR) {
|
|
||||||
doWrapList(startSection, br, element.tagName === 'BODY' ? null : startSection.parentNode);
|
|
||||||
li = startSection.parentNode;
|
|
||||||
adjustIndentForNewList(li);
|
|
||||||
cleanupBr(br);
|
|
||||||
});
|
|
||||||
if (element.tagName === 'P' || selectedBlocks.length > 1) {
|
|
||||||
dom.split(li.parentNode.parentNode, li.parentNode);
|
|
||||||
}
|
|
||||||
attemptMergeWithAdjacent(li.parentNode, true);
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
// Put the list around the element.
|
|
||||||
li = dom.create('li');
|
|
||||||
dom.insertAfter(li, element);
|
|
||||||
li.appendChild(element);
|
|
||||||
adjustIndentForNewList(element);
|
|
||||||
element = li;
|
|
||||||
}
|
|
||||||
dom.insertAfter(list, element);
|
|
||||||
list.appendChild(element);
|
|
||||||
attemptMergeWithAdjacent(list, true);
|
|
||||||
applied.push(element);
|
|
||||||
}
|
|
||||||
|
|
||||||
function doWrapList(start, end, template) {
|
|
||||||
var li, n = start, tmp, i;
|
|
||||||
while (!dom.isBlock(start.parentNode) && start.parentNode !== dom.getRoot()) {
|
|
||||||
start = dom.split(start.parentNode, start.previousSibling);
|
|
||||||
start = start.nextSibling;
|
|
||||||
n = start;
|
|
||||||
}
|
|
||||||
if (template) {
|
|
||||||
li = template.cloneNode(true);
|
|
||||||
start.parentNode.insertBefore(li, start);
|
|
||||||
while (li.firstChild) dom.remove(li.firstChild);
|
|
||||||
li = dom.rename(li, 'li');
|
|
||||||
} else {
|
|
||||||
li = dom.create('li');
|
|
||||||
start.parentNode.insertBefore(li, start);
|
|
||||||
}
|
|
||||||
while (n && n != end) {
|
|
||||||
tmp = n.nextSibling;
|
|
||||||
li.appendChild(n);
|
|
||||||
n = tmp;
|
|
||||||
}
|
|
||||||
if (li.childNodes.length === 0) {
|
|
||||||
li.innerHTML = '<br _mce_bogus="1" />';
|
|
||||||
}
|
|
||||||
makeList(li);
|
|
||||||
}
|
|
||||||
|
|
||||||
function processBrs(element, callback) {
|
|
||||||
var startSection, previousBR, END_TO_START = 3, START_TO_END = 1,
|
|
||||||
breakElements = 'br,ul,ol,p,div,h1,h2,h3,h4,h5,h6,table,blockquote,address,pre,form,center,dl';
|
|
||||||
function isAnyPartSelected(start, end) {
|
|
||||||
var r = dom.createRng(), sel;
|
|
||||||
bookmark.keep = true;
|
|
||||||
ed.selection.moveToBookmark(bookmark);
|
|
||||||
bookmark.keep = false;
|
|
||||||
sel = ed.selection.getRng(true);
|
|
||||||
if (!end) {
|
|
||||||
end = start.parentNode.lastChild;
|
|
||||||
}
|
|
||||||
r.setStartBefore(start);
|
|
||||||
r.setEndAfter(end);
|
|
||||||
return !(r.compareBoundaryPoints(END_TO_START, sel) > 0 || r.compareBoundaryPoints(START_TO_END, sel) <= 0);
|
|
||||||
}
|
|
||||||
function nextLeaf(br) {
|
|
||||||
if (br.nextSibling)
|
|
||||||
return br.nextSibling;
|
|
||||||
if (!dom.isBlock(br.parentNode) && br.parentNode !== dom.getRoot())
|
|
||||||
return nextLeaf(br.parentNode);
|
|
||||||
}
|
|
||||||
// Split on BRs within the range and process those.
|
|
||||||
startSection = element.firstChild;
|
|
||||||
// First mark the BRs that have any part of the previous section selected.
|
|
||||||
var trailingContentSelected = false;
|
|
||||||
each(dom.select(breakElements, element), function(br) {
|
|
||||||
var b;
|
|
||||||
if (br.hasAttribute && br.hasAttribute('_mce_bogus')) {
|
|
||||||
return true; // Skip the bogus Brs that are put in to appease Firefox and Safari.
|
|
||||||
}
|
|
||||||
if (isAnyPartSelected(startSection, br)) {
|
|
||||||
dom.addClass(br, '_mce_tagged_br');
|
|
||||||
startSection = nextLeaf(br);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
trailingContentSelected = (startSection && isAnyPartSelected(startSection, undefined));
|
|
||||||
startSection = element.firstChild;
|
|
||||||
each(dom.select(breakElements, element), function(br) {
|
|
||||||
// Got a section from start to br.
|
|
||||||
var tmp = nextLeaf(br);
|
|
||||||
if (br.hasAttribute && br.hasAttribute('_mce_bogus')) {
|
|
||||||
return true; // Skip the bogus Brs that are put in to appease Firefox and Safari.
|
|
||||||
}
|
|
||||||
if (dom.hasClass(br, '_mce_tagged_br')) {
|
|
||||||
callback(startSection, br, previousBR);
|
|
||||||
previousBR = null;
|
|
||||||
} else {
|
|
||||||
previousBR = br;
|
|
||||||
}
|
|
||||||
startSection = tmp;
|
|
||||||
});
|
|
||||||
if (trailingContentSelected) {
|
|
||||||
callback(startSection, undefined, previousBR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function wrapList(element) {
|
|
||||||
processBrs(element, function(startSection, br, previousBR) {
|
|
||||||
// Need to indent this part
|
|
||||||
doWrapList(startSection, br);
|
|
||||||
cleanupBr(br);
|
|
||||||
cleanupBr(previousBR);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function changeList(element) {
|
|
||||||
if (tinymce.inArray(applied, element) !== -1) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (element.parentNode.tagName === oppositeListType) {
|
|
||||||
dom.split(element.parentNode, element);
|
|
||||||
makeList(element);
|
|
||||||
attemptMergeWithNext(element.parentNode, false);
|
|
||||||
}
|
|
||||||
applied.push(element);
|
|
||||||
}
|
|
||||||
|
|
||||||
function convertListItemToParagraph(element) {
|
|
||||||
var child, nextChild, mergedElement, splitLast;
|
|
||||||
if (tinymce.inArray(applied, element) !== -1) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
element = splitNestedLists(element, dom);
|
|
||||||
while (dom.is(element.parentNode, 'ol,ul,li')) {
|
|
||||||
dom.split(element.parentNode, element);
|
|
||||||
}
|
|
||||||
// Push the original element we have from the selection, not the renamed one.
|
|
||||||
applied.push(element);
|
|
||||||
element = dom.rename(element, 'p');
|
|
||||||
mergedElement = attemptMergeWithAdjacent(element, false, ed.settings.force_br_newlines);
|
|
||||||
if (mergedElement === element) {
|
|
||||||
// Now split out any block elements that can't be contained within a P.
|
|
||||||
// Manually iterate to ensure we handle modifications correctly (doesn't work with tinymce.each)
|
|
||||||
child = element.firstChild;
|
|
||||||
while (child) {
|
|
||||||
if (dom.isBlock(child)) {
|
|
||||||
child = dom.split(child.parentNode, child);
|
|
||||||
splitLast = true;
|
|
||||||
nextChild = child.nextSibling && child.nextSibling.firstChild;
|
|
||||||
} else {
|
|
||||||
nextChild = child.nextSibling;
|
|
||||||
if (splitLast && child.tagName === 'BR') {
|
|
||||||
dom.remove(child);
|
|
||||||
}
|
|
||||||
splitLast = false;
|
|
||||||
}
|
|
||||||
child = nextChild;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
each(selectedBlocks, function(e) {
|
|
||||||
e = findItemToOperateOn(e, dom);
|
|
||||||
if (e.tagName === oppositeListType || (e.tagName === 'LI' && e.parentNode.tagName === oppositeListType)) {
|
|
||||||
hasOppositeType = true;
|
|
||||||
} else if (e.tagName === targetListType || (e.tagName === 'LI' && e.parentNode.tagName === targetListType)) {
|
|
||||||
hasSameType = true;
|
|
||||||
} else {
|
|
||||||
hasNonList = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (hasNonList || hasOppositeType || selectedBlocks.length === 0) {
|
|
||||||
actions = {
|
|
||||||
'LI': changeList,
|
|
||||||
'H1': makeList,
|
|
||||||
'H2': makeList,
|
|
||||||
'H3': makeList,
|
|
||||||
'H4': makeList,
|
|
||||||
'H5': makeList,
|
|
||||||
'H6': makeList,
|
|
||||||
'P': makeList,
|
|
||||||
'BODY': makeList,
|
|
||||||
'DIV': selectedBlocks.length > 1 ? makeList : wrapList,
|
|
||||||
defaultAction: wrapList
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
actions = {
|
|
||||||
defaultAction: convertListItemToParagraph
|
|
||||||
};
|
|
||||||
}
|
|
||||||
this.process(actions);
|
|
||||||
},
|
|
||||||
|
|
||||||
indent: function() {
|
|
||||||
var ed = this.ed, dom = ed.dom, indented = [];
|
|
||||||
|
|
||||||
function createWrapItem(element) {
|
|
||||||
var wrapItem = dom.create('li', { style: 'list-style-type: none;'});
|
|
||||||
dom.insertAfter(wrapItem, element);
|
|
||||||
return wrapItem;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createWrapList(element) {
|
|
||||||
var wrapItem = createWrapItem(element),
|
|
||||||
list = dom.getParent(element, 'ol,ul'),
|
|
||||||
listType = list.tagName,
|
|
||||||
listStyle = dom.getStyle(list, 'list-style-type'),
|
|
||||||
attrs = {},
|
|
||||||
wrapList;
|
|
||||||
if (listStyle !== '') {
|
|
||||||
attrs.style = 'list-style-type: ' + listStyle + ';';
|
|
||||||
}
|
|
||||||
wrapList = dom.create(listType, attrs);
|
|
||||||
wrapItem.appendChild(wrapList);
|
|
||||||
return wrapList;
|
|
||||||
}
|
|
||||||
|
|
||||||
function indentLI(element) {
|
|
||||||
if (!hasParentInList(ed, element, indented)) {
|
|
||||||
element = splitNestedLists(element, dom);
|
|
||||||
var wrapList = createWrapList(element);
|
|
||||||
wrapList.appendChild(element);
|
|
||||||
attemptMergeWithAdjacent(wrapList.parentNode, false);
|
|
||||||
attemptMergeWithAdjacent(wrapList, false);
|
|
||||||
indented.push(element);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.process({
|
|
||||||
'LI': indentLI,
|
|
||||||
defaultAction: this.adjustPaddingFunction(true)
|
|
||||||
});
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
outdent: function() {
|
|
||||||
var t = this, ed = t.ed, dom = ed.dom, outdented = [];
|
|
||||||
|
|
||||||
function outdentLI(element) {
|
|
||||||
var listElement, targetParent, align;
|
|
||||||
if (!hasParentInList(ed, element, outdented)) {
|
|
||||||
if (dom.getStyle(element, 'margin-left') !== '' || dom.getStyle(element, 'padding-left') !== '') {
|
|
||||||
return t.adjustPaddingFunction(false)(element);
|
|
||||||
}
|
|
||||||
align = dom.getStyle(element, 'text-align', true);
|
|
||||||
if (align === 'center' || align === 'right') {
|
|
||||||
dom.setStyle(element, 'text-align', 'left');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
element = splitNestedLists(element, dom);
|
|
||||||
listElement = element.parentNode;
|
|
||||||
targetParent = element.parentNode.parentNode;
|
|
||||||
if (targetParent.tagName === 'P') {
|
|
||||||
dom.split(targetParent, element.parentNode);
|
|
||||||
} else {
|
|
||||||
dom.split(listElement, element);
|
|
||||||
if (targetParent.tagName === 'LI') {
|
|
||||||
// Nested list, need to split the LI and go back out to the OL/UL element.
|
|
||||||
dom.split(targetParent, element);
|
|
||||||
} else if (!dom.is(targetParent, 'ol,ul')) {
|
|
||||||
dom.rename(element, 'p');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
outdented.push(element);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.process({
|
|
||||||
'LI': outdentLI,
|
|
||||||
defaultAction: this.adjustPaddingFunction(false)
|
|
||||||
});
|
|
||||||
|
|
||||||
each(outdented, attemptMergeWithAdjacent);
|
|
||||||
},
|
|
||||||
|
|
||||||
process: function(actions) {
|
|
||||||
var t = this, sel = t.ed.selection, dom = t.ed.dom, selectedBlocks, r;
|
|
||||||
function processElement(element) {
|
|
||||||
dom.removeClass(element, '_mce_act_on');
|
|
||||||
if (!element || element.nodeType !== 1) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
element = findItemToOperateOn(element, dom);
|
|
||||||
var action = actions[element.tagName];
|
|
||||||
if (!action) {
|
|
||||||
action = actions.defaultAction;
|
|
||||||
}
|
|
||||||
action(element);
|
|
||||||
}
|
|
||||||
function recurse(element) {
|
|
||||||
t.splitSafeEach(element.childNodes, processElement);
|
|
||||||
}
|
|
||||||
function brAtEdgeOfSelection(container, offset) {
|
|
||||||
return offset >= 0 && container.hasChildNodes() && offset < container.childNodes.length &&
|
|
||||||
container.childNodes[offset].tagName === 'BR';
|
|
||||||
}
|
|
||||||
selectedBlocks = sel.getSelectedBlocks();
|
|
||||||
if (selectedBlocks.length === 0) {
|
|
||||||
selectedBlocks = [ dom.getRoot() ];
|
|
||||||
}
|
|
||||||
|
|
||||||
r = sel.getRng(true);
|
|
||||||
if (!r.collapsed) {
|
|
||||||
if (brAtEdgeOfSelection(r.endContainer, r.endOffset - 1)) {
|
|
||||||
r.setEnd(r.endContainer, r.endOffset - 1);
|
|
||||||
sel.setRng(r);
|
|
||||||
}
|
|
||||||
if (brAtEdgeOfSelection(r.startContainer, r.startOffset)) {
|
|
||||||
r.setStart(r.startContainer, r.startOffset + 1);
|
|
||||||
sel.setRng(r);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bookmark = sel.getBookmark();
|
|
||||||
actions.OL = actions.UL = recurse;
|
|
||||||
t.splitSafeEach(selectedBlocks, processElement);
|
|
||||||
sel.moveToBookmark(bookmark);
|
|
||||||
bookmark = null;
|
|
||||||
// Avoids table or image handles being left behind in Firefox.
|
|
||||||
t.ed.execCommand('mceRepaint');
|
|
||||||
},
|
|
||||||
|
|
||||||
splitSafeEach: function(elements, f) {
|
|
||||||
if (tinymce.isGecko && (/Firefox\/[12]\.[0-9]/.test(navigator.userAgent) ||
|
|
||||||
/Firefox\/3\.[0-4]/.test(navigator.userAgent))) {
|
|
||||||
this.classBasedEach(elements, f);
|
|
||||||
} else {
|
|
||||||
each(elements, f);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
classBasedEach: function(elements, f) {
|
|
||||||
var dom = this.ed.dom, nodes, element;
|
|
||||||
// Mark nodes
|
|
||||||
each(elements, function(element) {
|
|
||||||
dom.addClass(element, '_mce_act_on');
|
|
||||||
});
|
|
||||||
nodes = dom.select('._mce_act_on');
|
|
||||||
while (nodes.length > 0) {
|
|
||||||
element = nodes.shift();
|
|
||||||
dom.removeClass(element, '_mce_act_on');
|
|
||||||
f(element);
|
|
||||||
nodes = dom.select('._mce_act_on');
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
adjustPaddingFunction: function(isIndent) {
|
|
||||||
var indentAmount, indentUnits, ed = this.ed;
|
|
||||||
indentAmount = ed.settings.indentation;
|
|
||||||
indentUnits = /[a-z%]+/i.exec(indentAmount);
|
|
||||||
indentAmount = parseInt(indentAmount, 10);
|
|
||||||
return function(element) {
|
|
||||||
var currentIndent, newIndentAmount;
|
|
||||||
currentIndent = parseInt(ed.dom.getStyle(element, 'margin-left') || 0, 10) + parseInt(ed.dom.getStyle(element, 'padding-left') || 0, 10);
|
|
||||||
if (isIndent) {
|
|
||||||
newIndentAmount = currentIndent + indentAmount;
|
|
||||||
} else {
|
|
||||||
newIndentAmount = currentIndent - indentAmount;
|
|
||||||
}
|
|
||||||
ed.dom.setStyle(element, 'padding-left', '');
|
|
||||||
ed.dom.setStyle(element, 'margin-left', newIndentAmount > 0 ? newIndentAmount + indentUnits : '');
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
getInfo: function() {
|
|
||||||
return {
|
|
||||||
longname : 'Lists',
|
|
||||||
author : 'Moxiecode Systems AB',
|
|
||||||
authorurl : 'http://tinymce.moxiecode.com',
|
|
||||||
infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/lists',
|
|
||||||
version : tinymce.majorVersion + "." + tinymce.minorVersion
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
tinymce.PluginManager.add("lists", tinymce.plugins.Lists);
|
|
||||||
}());
|
|
6
tools/tiny_mce/plugins/media/css/content.css
vendored
@ -1,6 +0,0 @@
|
|||||||
.mceItemFlash, .mceItemShockWave, .mceItemQuickTime, .mceItemWindowsMedia, .mceItemRealMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc;}
|
|
||||||
.mceItemShockWave {background-image: url(../img/shockwave.gif);}
|
|
||||||
.mceItemFlash {background-image:url(../img/flash.gif);}
|
|
||||||
.mceItemQuickTime {background-image:url(../img/quicktime.gif);}
|
|
||||||
.mceItemWindowsMedia {background-image:url(../img/windowsmedia.gif);}
|
|
||||||
.mceItemRealMedia {background-image:url(../img/realmedia.gif);}
|
|