update multilingual - see changelog
This commit is contained in:
parent
0e80d13343
commit
cbf395c15c
3 changed files with 64 additions and 55 deletions
|
@ -1,3 +1,19 @@
|
||||||
|
2.24:
|
||||||
|
-----
|
||||||
|
|
||||||
|
* Allow PCRE_DOTALL /s modifier, in case the |multilingual_lang Smarty
|
||||||
|
modifier replacement is used for content body textarea fields having
|
||||||
|
newlines.
|
||||||
|
|
||||||
|
|
||||||
|
2.23 & 1.13 (sidebar):
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
* Load langs by lang API method - requires S9y 1.6+
|
||||||
|
* Fix some plugin inconsistencies
|
||||||
|
* Append the CSS if not already used by theme
|
||||||
|
|
||||||
|
|
||||||
2.22:
|
2.22:
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
|
|
@ -4,13 +4,7 @@ if (IN_serendipity !== true) {
|
||||||
die ("Don't hack!");
|
die ("Don't hack!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Probe for a language include with constants. Still include defines later on, if some constants were missing
|
@serendipity_plugin_api::load_language(dirname(__FILE__));
|
||||||
$probelang = dirname(__FILE__) . '/' . $serendipity['charset'] . 'lang_' . $serendipity['lang'] . '.inc.php';
|
|
||||||
if (file_exists($probelang)) {
|
|
||||||
include $probelang;
|
|
||||||
}
|
|
||||||
|
|
||||||
include_once dirname(__FILE__) . '/lang_en.inc.php';
|
|
||||||
|
|
||||||
class serendipity_event_multilingual extends serendipity_event
|
class serendipity_event_multilingual extends serendipity_event
|
||||||
{
|
{
|
||||||
|
@ -28,12 +22,12 @@ class serendipity_event_multilingual extends serendipity_event
|
||||||
$propbag->add('stackable', false);
|
$propbag->add('stackable', false);
|
||||||
$propbag->add('author', 'Garvin Hicking, Wesley Hwang-Chung, Ian');
|
$propbag->add('author', 'Garvin Hicking, Wesley Hwang-Chung, Ian');
|
||||||
$propbag->add('requirements', array(
|
$propbag->add('requirements', array(
|
||||||
'serendipity' => '0.8',
|
'serendipity' => '1.6',
|
||||||
'smarty' => '2.6.7',
|
'smarty' => '2.6.7',
|
||||||
'php' => '4.1.0'
|
'php' => '4.1.0'
|
||||||
));
|
));
|
||||||
$propbag->add('groups', array('FRONTEND_ENTRY_RELATED', 'BACKEND_EDITOR'));
|
$propbag->add('groups', array('FRONTEND_ENTRY_RELATED', 'BACKEND_EDITOR'));
|
||||||
$propbag->add('version', '2.22');
|
$propbag->add('version', '2.24');
|
||||||
$propbag->add('configuration', array('copytext', 'placement', 'tagged_title', 'tagged_entries', 'tagged_sidebar', 'langswitch'));
|
$propbag->add('configuration', array('copytext', 'placement', 'tagged_title', 'tagged_entries', 'tagged_sidebar', 'langswitch'));
|
||||||
$propbag->add('event_hooks', array(
|
$propbag->add('event_hooks', array(
|
||||||
'frontend_fetchentries' => true,
|
'frontend_fetchentries' => true,
|
||||||
|
@ -164,13 +158,15 @@ class serendipity_event_multilingual extends serendipity_event
|
||||||
} else $this->set_config('db_built', 3);
|
} else $this->set_config('db_built', 3);
|
||||||
}
|
}
|
||||||
if ($built == 3) {
|
if ($built == 3) {
|
||||||
|
// OPS !!!! config set [serendipity_event_multilingual/db_built 2] is/was build without instance ????
|
||||||
$q = "DELETE FROM {$serendipity['dbPrefix']}config WHERE name LIKE '%serendipity_event_multilingual/db_built%'";
|
$q = "DELETE FROM {$serendipity['dbPrefix']}config WHERE name LIKE '%serendipity_event_multilingual/db_built%'";
|
||||||
serendipity_db_schema_import($q);
|
serendipity_db_schema_import($q);
|
||||||
$this->set_config('db_built', 4);
|
$this->set_config('db_built', 4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function cleanheader($string) {
|
function cleanheader($string)
|
||||||
|
{
|
||||||
$string = preg_replace('@[^0-9a-z_-]@imsU', '', $string);
|
$string = preg_replace('@[^0-9a-z_-]@imsU', '', $string);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -223,17 +219,20 @@ class serendipity_event_multilingual extends serendipity_event
|
||||||
$propbag->add('description', PLUGIN_EVENT_MULTILINGUAL_COPYDESC);
|
$propbag->add('description', PLUGIN_EVENT_MULTILINGUAL_COPYDESC);
|
||||||
$propbag->add('default', 'true');
|
$propbag->add('default', 'true');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function generate_content(&$title) {
|
function generate_content(&$title)
|
||||||
|
{
|
||||||
$title = $this->title;
|
$title = $this->title;
|
||||||
}
|
}
|
||||||
|
|
||||||
function urlparam($key) {
|
function urlparam($key)
|
||||||
|
{
|
||||||
static $langswitch = null;
|
static $langswitch = null;
|
||||||
|
|
||||||
if ($langswitch === null) {
|
if ($langswitch === null) {
|
||||||
|
@ -248,7 +247,8 @@ class serendipity_event_multilingual extends serendipity_event
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function &getLang($id, &$properties) {
|
function &getLang($id, &$properties)
|
||||||
|
{
|
||||||
global $serendipity;
|
global $serendipity;
|
||||||
static $default_lang = null;
|
static $default_lang = null;
|
||||||
static $false = false;
|
static $false = false;
|
||||||
|
@ -293,16 +293,18 @@ class serendipity_event_multilingual extends serendipity_event
|
||||||
}
|
}
|
||||||
|
|
||||||
//function neglang($lang) {
|
//function neglang($lang) {
|
||||||
function neglang($lang, $assert = '?!') {
|
function neglang($lang, $assert = '?!')
|
||||||
|
{
|
||||||
/* Creates the negation pattern from a two letter language identifier. */
|
/* Creates the negation pattern from a two letter language identifier. */
|
||||||
// Negative look ahead assertion. ".*" is used because any letter except of the language string shall be allowed, without it, nothing woud ever match */
|
// Negative look ahead assertion. ".*" is used because any letter except of the language string shall be allowed, without it, nothing would ever match */
|
||||||
return '(' . $assert . $lang . ').*';
|
return '(' . $assert . $lang . ').*';
|
||||||
//return '(?!' . $lang . ').*';
|
//return '(?!' . $lang . ').*';
|
||||||
|
|
||||||
//return '[^'.$lang[0].'][^'.$lang[1].']';
|
//return '[^'.$lang[0].'][^'.$lang[1].']';
|
||||||
}
|
}
|
||||||
|
|
||||||
function strip_langs($msg) {
|
function strip_langs($msg)
|
||||||
|
{
|
||||||
global $serendipity;
|
global $serendipity;
|
||||||
|
|
||||||
if (!preg_match('@{{@', $msg)) return $msg;
|
if (!preg_match('@{{@', $msg)) return $msg;
|
||||||
|
@ -323,10 +325,10 @@ class serendipity_event_multilingual extends serendipity_event
|
||||||
if (empty($match)) continue; // Last block part, skip it.
|
if (empty($match)) continue; // Last block part, skip it.
|
||||||
if (stristr($match, '{{!' . $serendipity['lang'] . '}}')) {
|
if (stristr($match, '{{!' . $serendipity['lang'] . '}}')) {
|
||||||
// Current language found. Keep the string, minus the {{!xx}} part.
|
// Current language found. Keep the string, minus the {{!xx}} part.
|
||||||
$out .= preg_replace('@\{\{!' . $serendipity['lang'] . '\}\}@', '', $match);
|
$out .= preg_replace('@\{\{!' . $serendipity['lang'] . '\}\}@s', '', $match);
|
||||||
} else {
|
} else {
|
||||||
// Current language not found. Remove everything after {{!xx}}.
|
// Current language not found. Remove everything after {{!xx}}.
|
||||||
$out .= preg_replace('@\{\{![^\}]+\}\}.+$@', '', $match);
|
$out .= preg_replace('@\{\{![^\}]+\}\}.+$@s', '', $match);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -339,7 +341,8 @@ class serendipity_event_multilingual extends serendipity_event
|
||||||
return $msg;
|
return $msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
function tag_title() {
|
function tag_title()
|
||||||
|
{
|
||||||
global $serendipity;
|
global $serendipity;
|
||||||
|
|
||||||
if (serendipity_db_bool($this->get_config('tagged_title', 'true'))) {
|
if (serendipity_db_bool($this->get_config('tagged_title', 'true'))) {
|
||||||
|
@ -368,7 +371,8 @@ class serendipity_event_multilingual extends serendipity_event
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function event_hook($event, &$bag, &$eventData, $addData = null) {
|
function event_hook($event, &$bag, &$eventData, $addData = null)
|
||||||
|
{
|
||||||
global $serendipity;
|
global $serendipity;
|
||||||
|
|
||||||
$hooks = &$bag->get('event_hooks');
|
$hooks = &$bag->get('event_hooks');
|
||||||
|
@ -379,7 +383,6 @@ class serendipity_event_multilingual extends serendipity_event
|
||||||
if (isset($serendipity['POST']['no_save'])) {
|
if (isset($serendipity['POST']['no_save'])) {
|
||||||
$eventData['error'] = true;
|
$eventData['error'] = true;
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'backend_entry_presave':
|
case 'backend_entry_presave':
|
||||||
|
@ -430,11 +433,10 @@ class serendipity_event_multilingual extends serendipity_event
|
||||||
|
|
||||||
serendipity_db_query($q);
|
serendipity_db_query($q);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'genpage':
|
case 'genpage':
|
||||||
|
|
||||||
if (!is_object($serendipity['smarty'])) {
|
if (!is_object($serendipity['smarty'])) {
|
||||||
// never init in genpage without adding previously set $vars, which is $view etc!
|
// never init in genpage without adding previously set $vars, which is $view etc!
|
||||||
serendipity_smarty_init($serendipity['plugindata']['smartyvars']);
|
serendipity_smarty_init($serendipity['plugindata']['smartyvars']);
|
||||||
|
@ -449,8 +451,6 @@ class serendipity_event_multilingual extends serendipity_event
|
||||||
} else {
|
} else {
|
||||||
$serendipity['smarty']->registerPlugin('modifier', 'multilingual_lang', array($this, 'strip_langs'));
|
$serendipity['smarty']->registerPlugin('modifier', 'multilingual_lang', array($this, 'strip_langs'));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'backend_entryform':
|
case 'backend_entryform':
|
||||||
|
@ -479,16 +479,14 @@ class serendipity_event_multilingual extends serendipity_event
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'css':
|
case 'css':
|
||||||
if (strpos($eventData, '.serendipity_multilingualInfo')) {
|
// CSS class does NOT exist by user customized template styles, include default
|
||||||
// class exists in CSS, so a user has customized it and we don't need default
|
if (strpos($eventData, '.serendipity_multilingualInfo') === false) {
|
||||||
return true;
|
$eventData .= '
|
||||||
}
|
|
||||||
?>
|
/* serendipity_event_multilingual start */
|
||||||
|
|
||||||
.serendipity_multilingualInfo {
|
.serendipity_multilingualInfo {
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
|
@ -509,8 +507,10 @@ class serendipity_event_multilingual extends serendipity_event
|
||||||
color: green;
|
color: green;
|
||||||
}
|
}
|
||||||
|
|
||||||
<?php
|
/* serendipity_event_multilingual end */
|
||||||
return true;
|
|
||||||
|
';
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'frontend_display':
|
case 'frontend_display':
|
||||||
|
@ -597,7 +597,6 @@ class serendipity_event_multilingual extends serendipity_event
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'backend_display':
|
case 'backend_display':
|
||||||
|
@ -643,7 +642,6 @@ class serendipity_event_multilingual extends serendipity_event
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<?php
|
<?php
|
||||||
return true;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'frontend_entryproperties':
|
case 'frontend_entryproperties':
|
||||||
|
@ -659,7 +657,6 @@ class serendipity_event_multilingual extends serendipity_event
|
||||||
foreach($properties AS $idx => $row) {
|
foreach($properties AS $idx => $row) {
|
||||||
$eventData[$addData[$row['entryid']]]['properties'][$row['property']] = $row['value'];
|
$eventData[$addData[$row['entryid']]]['properties'][$row['property']] = $row['value'];
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'frontend_entries_rss':
|
case 'frontend_entries_rss':
|
||||||
|
@ -754,7 +751,6 @@ class serendipity_event_multilingual extends serendipity_event
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'frontend_comment':
|
case 'frontend_comment':
|
||||||
|
@ -764,7 +760,6 @@ class serendipity_event_multilingual extends serendipity_event
|
||||||
if (serendipity_db_bool($this->get_config('tagged_title', 'true'))) {
|
if (serendipity_db_bool($this->get_config('tagged_title', 'true'))) {
|
||||||
$serendipity['smarty']->assign('head_subtitle', $this->strip_langs($serendipity['head_subtitle']));
|
$serendipity['smarty']->assign('head_subtitle', $this->strip_langs($serendipity['head_subtitle']));
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'frontend_sidebar_plugins':
|
case 'frontend_sidebar_plugins':
|
||||||
|
@ -774,17 +769,19 @@ class serendipity_event_multilingual extends serendipity_event
|
||||||
$eventData[$key]['content'] = $this->strip_langs($eventData[$key]['content']);
|
$eventData[$key]['content'] = $this->strip_langs($eventData[$key]['content']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* vim: set sts=4 ts=4 expandtab : */
|
/* vim: set sts=4 ts=4 expandtab : */
|
||||||
|
?>
|
|
@ -4,13 +4,7 @@ if (IN_serendipity !== true) {
|
||||||
die ("Don't hack!");
|
die ("Don't hack!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Probe for a language include with constants. Still include defines later on, if some constants were missing
|
@serendipity_plugin_api::load_language(dirname(__FILE__));
|
||||||
$probelang = dirname(__FILE__) . '/' . $serendipity['charset'] . 'lang_' . $serendipity['lang'] . '.inc.php';
|
|
||||||
if (file_exists($probelang)) {
|
|
||||||
include $probelang;
|
|
||||||
}
|
|
||||||
|
|
||||||
include_once dirname(__FILE__) . '/lang_en.inc.php';
|
|
||||||
|
|
||||||
class serendipity_plugin_multilingual extends serendipity_event
|
class serendipity_plugin_multilingual extends serendipity_event
|
||||||
{
|
{
|
||||||
|
@ -25,23 +19,23 @@ class serendipity_plugin_multilingual extends serendipity_event
|
||||||
$propbag->add('stackable', false);
|
$propbag->add('stackable', false);
|
||||||
$propbag->add('author', 'Garvin Hicking, Wesley Hwang-Chung');
|
$propbag->add('author', 'Garvin Hicking, Wesley Hwang-Chung');
|
||||||
$propbag->add('requirements', array(
|
$propbag->add('requirements', array(
|
||||||
'serendipity' => '0.8',
|
'serendipity' => '1.6',
|
||||||
'smarty' => '2.6.7',
|
'smarty' => '2.6.7',
|
||||||
'php' => '4.1.0'
|
'php' => '4.1.0'
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
||||||
$conf = array('title', 'show_submit', 'size');
|
$conf = array('title', 'show_submit', 'size');
|
||||||
foreach($serendipity['languages'] AS $lkey => $lval) {
|
foreach($serendipity['languages'] AS $lkey => $lval) {
|
||||||
$conf[] = $lkey;
|
$conf[] = $lkey;
|
||||||
}
|
}
|
||||||
$propbag->add('configuration', $conf);
|
$propbag->add('configuration', $conf);
|
||||||
$propbag->add('version', '1.12');
|
$propbag->add('version', '1.13');
|
||||||
$propbag->add('groups', array('FRONTEND_VIEWS'));
|
$propbag->add('groups', array('FRONTEND_VIEWS'));
|
||||||
$this->dependencies = array('serendipity_event_multilingual' => 'remove');
|
$this->dependencies = array('serendipity_event_multilingual' => 'remove');
|
||||||
}
|
}
|
||||||
|
|
||||||
function introspect_config_item($name, &$propbag) {
|
function introspect_config_item($name, &$propbag)
|
||||||
|
{
|
||||||
global $serendipity;
|
global $serendipity;
|
||||||
|
|
||||||
foreach($serendipity['languages'] AS $lkey => $lval) {
|
foreach($serendipity['languages'] AS $lkey => $lval) {
|
||||||
|
@ -49,7 +43,7 @@ class serendipity_plugin_multilingual extends serendipity_event
|
||||||
$propbag->add('type', 'boolean');
|
$propbag->add('type', 'boolean');
|
||||||
$propbag->add('name', $lval);
|
$propbag->add('name', $lval);
|
||||||
$propbag->add('default', 'true');
|
$propbag->add('default', 'true');
|
||||||
return true;
|
#return true; // it does not break the following switch, but why should we need this here?!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +74,8 @@ class serendipity_plugin_multilingual extends serendipity_event
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function generate_content(&$title) {
|
function generate_content(&$title)
|
||||||
|
{
|
||||||
global $serendipity;
|
global $serendipity;
|
||||||
|
|
||||||
$title = $this->get_config('title', $this->title);
|
$title = $this->get_config('title', $this->title);
|
||||||
|
@ -101,6 +96,7 @@ class serendipity_plugin_multilingual extends serendipity_event
|
||||||
}
|
}
|
||||||
echo '</div></form>';
|
echo '</div></form>';
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* vim: set sts=4 ts=4 expandtab : */
|
/* vim: set sts=4 ts=4 expandtab : */
|
||||||
|
|
Loading…
Reference in a new issue