Separated documentation and revised modules info
This commit is contained in:
parent
95cbb8a5f2
commit
4fe068fd14
66 changed files with 149 additions and 1974 deletions
1138
CHANGELOG.txt
1138
CHANGELOG.txt
File diff suppressed because it is too large
Load diff
94
doc/CHANGELOG.txt
Normal file
94
doc/CHANGELOG.txt
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
SuiteDesk 0.1.0, 2017-07-24
|
||||||
|
---------------------------
|
||||||
|
- Initial release:
|
||||||
|
* Based on Drupal 6.38 - Final release (2016-02-24)
|
||||||
|
* Main modules:
|
||||||
|
Advanced CSS/JS Aggregation
|
||||||
|
+ Advanced CSS/JS Aggregation 6.x-1.9
|
||||||
|
|
||||||
|
CCK
|
||||||
|
+ CCK 6.x-3.0-alpha4
|
||||||
|
+ Autocomplete Widgets 6.x-1.4
|
||||||
|
+ Computed Field 6.x-1.0
|
||||||
|
+ Content Taxonomy 6.x-1.0-rc2
|
||||||
|
+ FileField 6.x-3.14
|
||||||
|
+ Link 6.x-2.11
|
||||||
|
+ Viewfield 6.x-2.0
|
||||||
|
|
||||||
|
Core - extended
|
||||||
|
+ Administer Users by Role 6.x-1.4
|
||||||
|
+ Administration menu 6.x-1.9
|
||||||
|
+ Autosave 6.x-2.11
|
||||||
|
+ Better Formats 6.x-1.2
|
||||||
|
+ BookMadeSimple 6.x-3.4
|
||||||
|
+ Clone module 6.x-1.3
|
||||||
|
+ Custom Error 6.x-1.4
|
||||||
|
+ Diff 6.x-2.3
|
||||||
|
+ Extended Path Aliases 6.x-1.3
|
||||||
|
+ Frequently Asked Questions 6.x-1.13
|
||||||
|
+ Lexicon 6.x-1.4
|
||||||
|
+ Link checker 6.x-2.8
|
||||||
|
+ Node Comment 6.x-3.0-beta1
|
||||||
|
+ Pathauto 6.x-1.6
|
||||||
|
+ Recently read 6.x-1.0-beta1
|
||||||
|
+ Role Delegation 6.x-1.4
|
||||||
|
+ Search Restrict 6.x-1.5
|
||||||
|
+ Token 6.x-1.19
|
||||||
|
+ View revisions by content type 6.x-1.1
|
||||||
|
+ Vocabulary Permissions Per Role 6.x-1.1
|
||||||
|
+ Watcher 6.x-1.4
|
||||||
|
|
||||||
|
Custom Breadcrumbs
|
||||||
|
+ Custom Breadcrumbs 6.x-2.0-rc1
|
||||||
|
|
||||||
|
Custom Search
|
||||||
|
+ Custom Search 6.x-1.13
|
||||||
|
|
||||||
|
Date/Time
|
||||||
|
+ Date 6.x-2.10
|
||||||
|
+ Calendar 6.x-2.4
|
||||||
|
|
||||||
|
Image
|
||||||
|
+ ImageAPI 6.x-1.10
|
||||||
|
+ ImageCache 6.x-2.0-rc1
|
||||||
|
|
||||||
|
Input filters
|
||||||
|
+ GeSHi Filter 6.x-1.5
|
||||||
|
+ HTML Purifier 6.x-2.4
|
||||||
|
+ Pathologic 6.x-3.4
|
||||||
|
|
||||||
|
Multilanguage
|
||||||
|
+ Internationalization 6.x-1.10
|
||||||
|
+ Transliteration 6.x-3.1
|
||||||
|
|
||||||
|
Printer, email and PDF versions
|
||||||
|
+ Printer-friendly pages 6.x-1.19
|
||||||
|
|
||||||
|
Security
|
||||||
|
+ Generate Password 6.x-1.4
|
||||||
|
+ Password policy 6.x-1.11
|
||||||
|
+ Secure Password Hashes 6.x-2.1
|
||||||
|
+ Secure Pages 6.x-2.1
|
||||||
|
+ Secure Pages Hijack Prevention 6.x-2.0-rc1
|
||||||
|
|
||||||
|
Storm
|
||||||
|
+ Storm 6.x-2.2
|
||||||
|
+ Storm Quick TimeTracker 6.x-2.x-dev
|
||||||
|
|
||||||
|
User interface
|
||||||
|
+ CKEditor 6.x-1.15
|
||||||
|
+ CKEditor Link 6.x-2.4
|
||||||
|
+ External Links 6.x-1.17
|
||||||
|
+ jQuery UI 6.x-1.5
|
||||||
|
+ Lightbox2 6.x-1.11
|
||||||
|
|
||||||
|
Views
|
||||||
|
+ Views 6.x-2.18
|
||||||
|
|
||||||
|
* Main libraries:
|
||||||
|
+ CKEditor 4.6.1
|
||||||
|
+ GeSHi - Generic Syntax Highlighter 1.0.8.11
|
||||||
|
+ HTML Purifier Library 4.8.0
|
||||||
|
+ jQuery UI 1.6
|
||||||
|
+ TCPDF 6.2.6
|
||||||
|
+ wkhtmltopdf 0.12.4
|
|
@ -1,6 +1,6 @@
|
||||||
name = Administration menu
|
name = Administration menu
|
||||||
description = "Provides a dropdown menu to most administrative tasks and other common destinations (to users with the proper permissions)."
|
description = "Provides a dropdown menu to most administrative tasks and other common destinations (to users with the proper permissions)."
|
||||||
package = Core - optional
|
package = Core - extended
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
; Information added by Drupal.org packaging script on 2015-02-21
|
; Information added by Drupal.org packaging script on 2015-02-21
|
||||||
|
@ -8,4 +8,3 @@ version = "6.x-1.9"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "admin_menu"
|
project = "admin_menu"
|
||||||
datestamp = "1424535792"
|
datestamp = "1424535792"
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
name = Node Comment
|
name = Node Comment
|
||||||
description = Allows users to comment on and discuss published content using nodes.
|
description = Allows users to comment on and discuss published content using nodes.
|
||||||
package = Core - optional
|
package = Core - extended
|
||||||
dependencies[] = views
|
dependencies[] = views
|
||||||
dependencies[] = comment
|
dependencies[] = comment
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
@ -9,4 +9,3 @@ version = "6.x-3.0-beta1"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "nodecomment"
|
project = "nodecomment"
|
||||||
datestamp = "1353097067"
|
datestamp = "1353097067"
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
name = Extended Path Aliases
|
name = Extended Path Aliases
|
||||||
description = Automatically extend path aliases to include tabs, like "about-us/edit" for "node/123/edit". Allow these aliases to be entered in page specification wild-cards ("about-us*"), e.g for block visibility.
|
description = Automatically extend path aliases to include tabs, like "about-us/edit" for "node/123/edit". Allow these aliases to be entered in page specification wild-cards ("about-us*"), e.g for block visibility.
|
||||||
|
package = Core - extended
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
; While you will need to enable the core Path module to enter aliases,
|
; While you will need to enable the core Path module to enter aliases,
|
||||||
; programmatically path_alias_xt has no dependency on it. Existing aliases
|
; programmatically path_alias_xt has no dependency on it. Existing aliases
|
||||||
|
@ -10,4 +11,3 @@ version = "6.x-1.3"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "path_alias_xt"
|
project = "path_alias_xt"
|
||||||
datestamp = "1382565626"
|
datestamp = "1382565626"
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
name = Pathauto
|
name = Pathauto
|
||||||
description = Provides a mechanism for modules to automatically generate aliases for the content they manage.
|
description = Provides a mechanism for modules to automatically generate aliases for the content they manage.
|
||||||
|
package = Core - extended
|
||||||
dependencies[] = path
|
dependencies[] = path
|
||||||
dependencies[] = token
|
dependencies[] = token
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
@ -10,4 +11,3 @@ version = "6.x-1.6"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "pathauto"
|
project = "pathauto"
|
||||||
datestamp = "1320076535"
|
datestamp = "1320076535"
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
name = Transliteration
|
name = Transliteration
|
||||||
description = Converts non-latin text to US-ASCII and sanitizes file names.
|
description = Converts non-latin text to US-ASCII and sanitizes file names.
|
||||||
|
package = Multilanguage
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
|
|
||||||
|
@ -8,4 +9,3 @@ version = "6.x-3.1"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "transliteration"
|
project = "transliteration"
|
||||||
datestamp = "1338540716"
|
datestamp = "1338540716"
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
; $Id: administerusersbyrole.info,v 1.1.2.2 2009/06/29 16:06:09 smokris Exp $
|
; $Id: administerusersbyrole.info,v 1.1.2.2 2009/06/29 16:06:09 smokris Exp $
|
||||||
name = Administer Users by Role
|
name = Administer Users by Role
|
||||||
description = "Allows users with 'administer users' permission and a role (specified in 'Permissions') to edit/delete other users with a specified role. Also provides control over user creation."
|
description = "Allows users with 'administer users' permission and a role (specified in 'Permissions') to edit/delete other users with a specified role. Also provides control over user creation."
|
||||||
|
package = Core - extended
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
; Information added by drupal.org packaging script on 2009-06-29
|
; Information added by drupal.org packaging script on 2009-06-29
|
||||||
|
@ -8,4 +9,3 @@ version = "6.x-1.4"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "administerusersbyrole"
|
project = "administerusersbyrole"
|
||||||
datestamp = "1246292114"
|
datestamp = "1246292114"
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
name = Autosave
|
name = Autosave
|
||||||
description = Saves node edits in the background in case browser dies while editing.
|
description = Saves node edits in the background in case browser dies while editing.
|
||||||
|
|
||||||
package = Other
|
package = Core - extended
|
||||||
project = autosave
|
project = autosave
|
||||||
|
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
@ -13,4 +13,3 @@ version = "6.x-2.11"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "autosave"
|
project = "autosave"
|
||||||
datestamp = "1344266211"
|
datestamp = "1344266211"
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
; $Id: better_formats.info,v 1.1.2.2 2009/02/25 06:44:17 dragonwize Exp $
|
; $Id: better_formats.info,v 1.1.2.2 2009/02/25 06:44:17 dragonwize Exp $
|
||||||
name = Better Formats
|
name = Better Formats
|
||||||
description = Enhances the core input format system by managing input format defaults and settings.
|
description = Enhances the core input format system by managing input format defaults and settings.
|
||||||
|
package = Core - extended
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
; Information added by drupal.org packaging script on 2010-02-05
|
; Information added by drupal.org packaging script on 2010-02-05
|
||||||
|
@ -8,4 +9,3 @@ version = "6.x-1.2"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "better_formats"
|
project = "better_formats"
|
||||||
datestamp = "1265402405"
|
datestamp = "1265402405"
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
name = BookMadeSimple
|
name = BookMadeSimple
|
||||||
description = Automatic creation of a book and simple creation of child pages.
|
description = Automatic creation of a book and simple creation of child pages.
|
||||||
package = Content
|
package = Core - extended
|
||||||
dependencies[] = book
|
dependencies[] = book
|
||||||
core=6.x
|
core=6.x
|
||||||
; Information added by drupal.org packaging script on 2008-01-11
|
; Information added by drupal.org packaging script on 2008-01-11
|
||||||
|
@ -20,4 +20,3 @@ version = "6.x-3.4"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "book_made_simple"
|
project = "book_made_simple"
|
||||||
datestamp = "1348472235"
|
datestamp = "1348472235"
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
name = Custom Error
|
name = Custom Error
|
||||||
description = Enables the creation of custom error pages for 404 and 403 errors, as well as redirects for 404s.
|
description = Enables the creation of custom error pages for 404 and 403 errors, as well as redirects for 404s.
|
||||||
|
package = Core - extended
|
||||||
core=6.x
|
core=6.x
|
||||||
|
|
||||||
; Information added by Drupal.org packaging script on 2014-08-17
|
; Information added by Drupal.org packaging script on 2014-08-17
|
||||||
|
@ -7,4 +8,3 @@ version = "6.x-1.4"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "customerror"
|
project = "customerror"
|
||||||
datestamp = "1408264129"
|
datestamp = "1408264129"
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
name = Diff
|
name = Diff
|
||||||
description = Show difference between node revisions.
|
description = Show difference between node revisions.
|
||||||
|
package = Core - extended
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
; Information added by drupal.org packaging script on 2011-08-07
|
; Information added by drupal.org packaging script on 2011-08-07
|
||||||
|
@ -7,4 +8,3 @@ version = "6.x-2.3"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "diff"
|
project = "diff"
|
||||||
datestamp = "1312697033"
|
datestamp = "1312697033"
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
name = Frequently Asked Questions
|
name = Frequently Asked Questions
|
||||||
description = "Manages configuration of questions for a FAQ page."
|
description = "Manages configuration of questions for a FAQ page."
|
||||||
|
package = Core - extended
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
; Information added by drupal.org packaging script on 2012-02-22
|
; Information added by drupal.org packaging script on 2012-02-22
|
||||||
|
@ -7,4 +8,3 @@ version = "6.x-1.13"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "faq"
|
project = "faq"
|
||||||
datestamp = "1329951344"
|
datestamp = "1329951344"
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
name = "GeSHi field"
|
name = "GeSHi field"
|
||||||
description = "Provides a CCK field for source code with GeSHI syntax highlighting."
|
description = "Provides a CCK field for source code with GeSHI syntax highlighting."
|
||||||
package = "Filters"
|
package = "Input filters"
|
||||||
core = 6.x
|
core = 6.x
|
||||||
dependencies[] = content
|
dependencies[] = content
|
||||||
dependencies[] = geshifilter
|
dependencies[] = geshifilter
|
||||||
|
@ -10,4 +10,3 @@ version = "6.x-1.5"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "geshifilter"
|
project = "geshifilter"
|
||||||
datestamp = "1363644611"
|
datestamp = "1363644611"
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
name = "GeSHi Filter"
|
name = "GeSHi Filter"
|
||||||
description = "Provides a filter to highlight source code using the GeSHi library (Generic Syntax Highlighter)"
|
description = "Provides a filter to highlight source code using the GeSHi library (Generic Syntax Highlighter)"
|
||||||
package = "Filters"
|
package = "Input filters"
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
; Information added by drupal.org packaging script on 2013-03-18
|
; Information added by drupal.org packaging script on 2013-03-18
|
||||||
|
@ -8,4 +8,3 @@ version = "6.x-1.5"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "geshifilter"
|
project = "geshifilter"
|
||||||
datestamp = "1363644611"
|
datestamp = "1363644611"
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
name = "GeSHi node"
|
name = "GeSHi node"
|
||||||
description = "Provides source code node with GeSHi syntax highlighting."
|
description = "Provides source code node with GeSHi syntax highlighting."
|
||||||
package = "Filters"
|
package = "Input filters"
|
||||||
dependencies[] = geshifilter
|
dependencies[] = geshifilter
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
|
@ -9,4 +9,3 @@ version = "6.x-1.5"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "geshifilter"
|
project = "geshifilter"
|
||||||
datestamp = "1363644611"
|
datestamp = "1363644611"
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
; $Id: htmlpurifier.info,v 1.6 2008/04/24 04:13:09 ezyang Exp $
|
; $Id: htmlpurifier.info,v 1.6 2008/04/24 04:13:09 ezyang Exp $
|
||||||
name = "HTML Purifier"
|
name = "HTML Purifier"
|
||||||
description = "Filter that removes malicious HTML and ensures standards compliant output."
|
description = "Filter that removes malicious HTML and ensures standards compliant output."
|
||||||
|
package = "Input filters"
|
||||||
core = 6.x
|
core = 6.x
|
||||||
php = 5.0.5
|
php = 5.0.5
|
||||||
|
|
||||||
|
@ -9,4 +10,3 @@ version = "6.x-2.4"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "htmlpurifier"
|
project = "htmlpurifier"
|
||||||
datestamp = "1287798330"
|
datestamp = "1287798330"
|
||||||
|
|
||||||
|
|
|
@ -1,293 +0,0 @@
|
||||||
<?php
|
|
||||||
// Core: Id: drupal_web_test_case.php,v 1.96 2009/04/22 09:57:10 dries Exp
|
|
||||||
/**
|
|
||||||
* @file
|
|
||||||
* Provide required modifications to Drupal 7 core DrupalWebTestCase in order
|
|
||||||
* for it to function properly in Drupal 6.
|
|
||||||
*
|
|
||||||
* Copyright 2008-2009 by Jimmy Berry ("boombatower", http://drupal.org/user/214218)
|
|
||||||
*/
|
|
||||||
|
|
||||||
require_once drupal_get_path('module', 'simpletest') . '/drupal_web_test_case.php';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test case for typical Drupal tests.
|
|
||||||
*/
|
|
||||||
class Drupali18nTestCase extends DrupalWebTestCase {
|
|
||||||
// We may want to install the site in a different language
|
|
||||||
var $install_locale = 'en';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds a language
|
|
||||||
*
|
|
||||||
* @param $langcode
|
|
||||||
* @param $default
|
|
||||||
* Whether this is the default language
|
|
||||||
* @param $load
|
|
||||||
* Whether to load available translations for that language
|
|
||||||
*/
|
|
||||||
function addLanguage($langcode, $default = FALSE, $load = TRUE) {
|
|
||||||
require_once './includes/locale.inc';
|
|
||||||
// Enable installation language as default site language.
|
|
||||||
locale_add_language($langcode, NULL, NULL, NULL, NULL, NULL, 1, $default);
|
|
||||||
// Reset language list
|
|
||||||
language_list('language', TRUE);
|
|
||||||
// We may need to refresh default language
|
|
||||||
drupal_init_language();
|
|
||||||
// @todo import po files for this language
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create translation set from a node
|
|
||||||
*
|
|
||||||
* @param $source
|
|
||||||
* Source node
|
|
||||||
* @param $languages
|
|
||||||
* Optional list of language codes
|
|
||||||
*/
|
|
||||||
function drupalCreateTranslations(&$source, $languages = NULL) {
|
|
||||||
$languages = $languages ? $languages : array_keys(language_list());
|
|
||||||
if (empty($source->tnid)) {
|
|
||||||
db_query("UPDATE {node} SET tnid = %d, translate = %d WHERE nid = %d", $source->nid, 0, $source->nid);
|
|
||||||
$source->tnid = $source->nid;
|
|
||||||
}
|
|
||||||
$translations[$source->language] = $source;
|
|
||||||
foreach ($languages as $lang) {
|
|
||||||
if ($lang != $source->language) {
|
|
||||||
$translations[$lang] = $this->drupalCreateNode(array('type' => $source->type, 'language' => $lang, 'translation_source' => $source, 'status' => $source->status, 'promote' => $source->promote, 'uid' => $source->uid));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $translations;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Enable language switcher block
|
|
||||||
*/
|
|
||||||
function enableBlock($module, $delta, $region = 'left') {
|
|
||||||
db_query("UPDATE {blocks} SET status = %d, weight = %d, region = '%s', throttle = %d WHERE module = '%s' AND delta = '%s' AND theme = '%s'", 1, 0, $region, 0, $module, $delta, variable_get('theme_default', 'garland'));
|
|
||||||
cache_clear_all();
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Reset theme to default so we can play with blocks
|
|
||||||
*/
|
|
||||||
function initTheme() {
|
|
||||||
global $theme, $theme_key;
|
|
||||||
unset($theme);
|
|
||||||
unset($theme_key);
|
|
||||||
init_theme();
|
|
||||||
_block_rehash();
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Generates a random database prefix, runs the install scripts on the
|
|
||||||
* prefixed database and enable the specified modules. After installation
|
|
||||||
* many caches are flushed and the internal browser is setup so that the
|
|
||||||
* page requests will run on the new prefix. A temporary files directory
|
|
||||||
* is created with the same name as the database prefix.
|
|
||||||
*
|
|
||||||
* @param ...
|
|
||||||
* List of modules to enable for the duration of the test.
|
|
||||||
*/
|
|
||||||
function setUp() {
|
|
||||||
global $db_prefix, $user, $language; // $language (Drupal 6).
|
|
||||||
global $install_locale;
|
|
||||||
|
|
||||||
// Store necessary current values before switching to prefixed database.
|
|
||||||
$this->db_prefix_original = $db_prefix;
|
|
||||||
$clean_url_original = variable_get('clean_url', 0);
|
|
||||||
|
|
||||||
// Generate temporary prefixed database to ensure that tests have a clean starting point.
|
|
||||||
$db_prefix = 'simpletest' . mt_rand(1000, 1000000);
|
|
||||||
|
|
||||||
include_once './includes/install.inc';
|
|
||||||
|
|
||||||
drupal_install_system();
|
|
||||||
|
|
||||||
// Add the specified modules to the list of modules in the default profile.
|
|
||||||
$args = func_get_args();
|
|
||||||
// Add language and basic i18n modules
|
|
||||||
$install_locale = $this->install_locale;
|
|
||||||
$i18n_modules = array('locale', 'translation', 'i18n', 'i18n_test');
|
|
||||||
$modules = array_unique(array_merge(drupal_verify_profile('default', $this->install_locale), $args, $i18n_modules));
|
|
||||||
drupal_install_modules($modules);
|
|
||||||
|
|
||||||
// Install locale
|
|
||||||
if ($this->install_locale != 'en') {
|
|
||||||
$this->addLanguage($this->install_locale, TRUE);
|
|
||||||
}
|
|
||||||
// Run default profile tasks.
|
|
||||||
$task = 'profile';
|
|
||||||
default_profile_tasks($task, '');
|
|
||||||
|
|
||||||
// Rebuild caches.
|
|
||||||
actions_synchronize();
|
|
||||||
_drupal_flush_css_js();
|
|
||||||
$this->refreshVariables();
|
|
||||||
$this->checkPermissions(array(), TRUE);
|
|
||||||
user_access(NULL, NULL, TRUE); // Drupal 6.
|
|
||||||
|
|
||||||
// Log in with a clean $user.
|
|
||||||
$this->originalUser = $user;
|
|
||||||
// drupal_save_session(FALSE);
|
|
||||||
// $user = user_load(1);
|
|
||||||
session_save_session(FALSE);
|
|
||||||
$user = user_load(array('uid' => 1));
|
|
||||||
|
|
||||||
// Restore necessary variables.
|
|
||||||
variable_set('install_profile', 'default');
|
|
||||||
variable_set('install_task', 'profile-finished');
|
|
||||||
variable_set('clean_url', $clean_url_original);
|
|
||||||
variable_set('site_mail', 'simpletest@example.com');
|
|
||||||
|
|
||||||
// Use temporary files directory with the same prefix as database.
|
|
||||||
$this->originalFileDirectory = file_directory_path();
|
|
||||||
variable_set('file_directory_path', file_directory_path() . '/' . $db_prefix);
|
|
||||||
$directory = file_directory_path();
|
|
||||||
// Create the files directory.
|
|
||||||
file_check_directory($directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
|
|
||||||
|
|
||||||
set_time_limit($this->timeLimit);
|
|
||||||
|
|
||||||
// Some more includes
|
|
||||||
require_once 'includes/language.inc';
|
|
||||||
// Refresh theme
|
|
||||||
$this->initTheme();
|
|
||||||
// Set path languages so we can retrieve pages in different languages
|
|
||||||
variable_set('language_negotiation', LANGUAGE_NEGOTIATION_PATH);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Delete created files and temporary files directory, delete the tables created by setUp(),
|
|
||||||
* and reset the database prefix.
|
|
||||||
*/
|
|
||||||
protected function tearDown() {
|
|
||||||
parent::tearDown();
|
|
||||||
|
|
||||||
// Reset language list
|
|
||||||
language_list('language', TRUE);
|
|
||||||
drupal_init_language();
|
|
||||||
if (module_exists('locale')) {
|
|
||||||
locale(NULL, NULL, TRUE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves a Drupal path or an absolute path with language
|
|
||||||
*/
|
|
||||||
protected function i18nGet($langcode, $path = '', array $options = array(), array $headers = array()) {
|
|
||||||
$options += array('language' => $this->getLanguage($langcode));
|
|
||||||
return $this->drupalGet($path, $options, $headers);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Get language object for langcode
|
|
||||||
*/
|
|
||||||
public function getLanguage($langcode) {
|
|
||||||
if (is_object($langcode)) {
|
|
||||||
return $langcode;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$language_list = language_list();
|
|
||||||
return $language_list[$langcode];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Switch global language
|
|
||||||
*/
|
|
||||||
public function switchLanguage($newlang = NULL) {
|
|
||||||
$newlang = $newlang ? $newlang : $this->install_locale;
|
|
||||||
$GLOBALS['language'] = $this->getLanguage($newlang);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get all languages that are not default
|
|
||||||
*/
|
|
||||||
public function getOtherLanguages() {
|
|
||||||
$languages = language_list();
|
|
||||||
unset($languages[language_default('language')]);
|
|
||||||
return $languages;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Create and store one translation into the db
|
|
||||||
*/
|
|
||||||
public function i18nstringsCreateTranslation($name, $lang, $length = 20) {
|
|
||||||
$translation = $this->randomName($length, "i18n-$lang-");
|
|
||||||
$count = self::i18nstringsSaveTranslation($name, $lang, $translation);
|
|
||||||
$this->assertTrue($count, "A translation($lang) has been created for string $name");
|
|
||||||
return $translation;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Translate one string into the db
|
|
||||||
*/
|
|
||||||
public static function i18nstringsSaveTranslation($name, $lang, $translation, $update = FALSE) {
|
|
||||||
$source = i18nstrings_get_source($name);
|
|
||||||
if ($source) {
|
|
||||||
if ($update) {
|
|
||||||
db_query("UPDATE {locales_target} SET translation = '%s' WHERE lid = %d AND language = '%s'", $translation, $source->lid, $lang);
|
|
||||||
} else {
|
|
||||||
db_query("INSERT INTO {locales_target} (translation, lid, language) VALUES ('%s', %d, '%s')", $translation, $source->lid, $lang);
|
|
||||||
}
|
|
||||||
return db_affected_rows();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Print out a variable for debugging
|
|
||||||
*/
|
|
||||||
function printDebug($data, $title = '') {
|
|
||||||
$string = is_array($data) || is_object($data) ? print_r($data, TRUE) : $data;
|
|
||||||
$output = $title ? $title . ':' . $string : $string;
|
|
||||||
//$this->assertTrue(TRUE, $output);
|
|
||||||
$this->assertTrue(TRUE, $output, 'Debug');
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Debug dump object with some formatting
|
|
||||||
*/
|
|
||||||
function printObject($object, $title = 'Object') {
|
|
||||||
$output = $this->formatTable($object);
|
|
||||||
$this->printDebug($output, $title);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Print out current HTML page
|
|
||||||
*/
|
|
||||||
function printPage() {
|
|
||||||
$this->printDebug($this->drupalGetContent());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Dump table contents
|
|
||||||
function dumpTable($table) {
|
|
||||||
$result = db_query('SELECT * FROM {' . $table . '}');
|
|
||||||
$output = 'Table dump <strong>' . $table . '</strong>:';
|
|
||||||
while ($row = db_fetch_array($result)) {
|
|
||||||
$rows[] = $row;
|
|
||||||
if (empty($header)) {
|
|
||||||
$header = array_keys($row);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!empty($rows)) {
|
|
||||||
$output .= theme('table', $header, $rows);
|
|
||||||
} else {
|
|
||||||
$output .= ' No rows';
|
|
||||||
}
|
|
||||||
$this->assertTrue(TRUE, $output);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Format object as table, recursive
|
|
||||||
*/
|
|
||||||
function formatTable($object) {
|
|
||||||
foreach ($object as $key => $value) {
|
|
||||||
$rows[] = array(
|
|
||||||
$key,
|
|
||||||
is_array($value) || is_object($value) ? $this->formatTable($value) : $value,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (!empty($rows)) {
|
|
||||||
return theme('table', array(), $rows);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return 'No properties';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,84 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Class for testing messaging module.
|
|
||||||
*
|
|
||||||
* Tests basic API functions
|
|
||||||
*/
|
|
||||||
|
|
||||||
require_once 'drupal_i18n_test_case.php';
|
|
||||||
|
|
||||||
class i18n_API_Tests extends Drupali18nTestCase {
|
|
||||||
|
|
||||||
function getInfo() {
|
|
||||||
return array(
|
|
||||||
'name' => 'Internationalization API',
|
|
||||||
'group' => 'Internationalization',
|
|
||||||
'description' => 'Internationalization API functions'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function setUp() {
|
|
||||||
parent::setUp('i18n', 'locale');
|
|
||||||
$this->addLanguage('es');
|
|
||||||
$this->addLanguage('de');
|
|
||||||
// A language with two letter code may help too
|
|
||||||
$this->addLanguage('pt-br');
|
|
||||||
|
|
||||||
//variable_set('i18n_variables', array('site_name','site_frontpage',));
|
|
||||||
|
|
||||||
// Log in user with access content permission
|
|
||||||
$user = $this->drupalCreateUser(array('access comments', 'access content'));
|
|
||||||
$this->drupalLogin($user);
|
|
||||||
}
|
|
||||||
|
|
||||||
function testBasicAPI() {
|
|
||||||
$language_count = count(language_list());
|
|
||||||
$this->assertTrue($language_count > 1, 'Multiple languages created: ' . $language_count);
|
|
||||||
$this->assertEqual(i18n_get_lang(), 'en', 'Default language (en) properly set.');
|
|
||||||
|
|
||||||
// Set site name for each language and check pages later
|
|
||||||
foreach (language_list() as $lang) {
|
|
||||||
i18n_variable_set('site_name', "Drupal-$lang->name", $lang->language);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Enable language switcher block
|
|
||||||
//$this->enableBlock('locale', 0);
|
|
||||||
//$this->dumpTable('blocks');
|
|
||||||
|
|
||||||
// Create some content and check selection modes
|
|
||||||
variable_set('language_content_type_story', 1);
|
|
||||||
$neutral = $this->drupalCreateNode(array('type' => 'story', 'promote' => 1));
|
|
||||||
$source = $this->drupalCreateNode(array('type' => 'story', 'promote' => 1, 'language' => i18n_default_language()));
|
|
||||||
$translations = $this->drupalCreateTranslations($source);
|
|
||||||
// This fails because the _get_translations() function has static caching
|
|
||||||
//$this->assertEqual(count(translation_node_get_translations($source->tnid)), $language_count, "Created $language_count $source->type translations.");
|
|
||||||
$this->assertEqual(count($translations), $language_count, "Created $language_count $source->type translations.");
|
|
||||||
|
|
||||||
// Default selection module, only language neutral and current
|
|
||||||
variable_set('i18n_selection_mode', 'simple');
|
|
||||||
foreach (language_list() as $lang) {
|
|
||||||
$this->drupalGet('', array('language' => $lang));
|
|
||||||
$this->assertText("Drupal-$lang->name", 'Checked translated site name: Drupal-' . $lang->name);
|
|
||||||
$display = array($translations[$lang->language], $neutral);
|
|
||||||
$hide = $translations;
|
|
||||||
unset($hide[$lang->language]);
|
|
||||||
$this->assertContent($display, $hide);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check some nodes are displayed, some are not
|
|
||||||
*/
|
|
||||||
function assertContent($display, $hide = array()) {
|
|
||||||
$languages = language_list();
|
|
||||||
foreach ($display as $node) {
|
|
||||||
$name = $node->language ? $languages[$node->language]->name : 'Language neutral';
|
|
||||||
$this->assertText($node->title, 'Content displayed for ' . $name);
|
|
||||||
}
|
|
||||||
foreach ($hide as $node) {
|
|
||||||
$name = $node->language ? $languages[$node->language]->name : 'Language neutral';
|
|
||||||
$this->assertNoText($node->title, 'Content not displayed for ' . $name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,160 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Class for testing messaging module.
|
|
||||||
*
|
|
||||||
* Tests basic API functions
|
|
||||||
*/
|
|
||||||
|
|
||||||
require_once 'i18n_strings.test';
|
|
||||||
|
|
||||||
class i18n_Blocks_Test extends Drupali18nTestCase {
|
|
||||||
|
|
||||||
function getInfo() {
|
|
||||||
return array(
|
|
||||||
'name' => 'Block translation',
|
|
||||||
'group' => 'Internationalization',
|
|
||||||
'description' => 'Block translation functions'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function setUp() {
|
|
||||||
parent::setUp('118n', 'locale', 'i18nstrings', 'i18nblocks');
|
|
||||||
$this->addLanguage('es');
|
|
||||||
$this->addLanguage('de');
|
|
||||||
// Create and login user
|
|
||||||
$admin_user = $this->drupalCreateUser(array('administer blocks'));
|
|
||||||
$this->drupalLogin($admin_user);
|
|
||||||
}
|
|
||||||
|
|
||||||
function testBlockTranslation() {
|
|
||||||
// Create a translatable block
|
|
||||||
$box = $this->i18nCreateBox(array('language' => I18N_BLOCK_LOCALIZE));
|
|
||||||
$i18nblock = i18nblocks_load('block', $box->bid);
|
|
||||||
$this->assertTrue($i18nblock->ibid && $i18nblock->language == I18N_BLOCK_LOCALIZE, "The block has been created with the right i18n settings.");
|
|
||||||
// Create translations for title and body, source strings should be already there
|
|
||||||
$translations = $this->i18nTranslateBlock('block', $box-bid, array('title', 'body'));
|
|
||||||
// Now set a language for the block and confirm it shows just for that one (without translation)
|
|
||||||
$languages = $this->getOtherLanguages();
|
|
||||||
$setlanguage = array_shift($languages);
|
|
||||||
$otherlanguage = array_shift($languages);
|
|
||||||
$this->i18nUpdateBlock('block', $box->bid, array('language' => $setlanguage->language));
|
|
||||||
// Do not show in default language
|
|
||||||
$this->drupalGet('');
|
|
||||||
$this->assertNoText($box->title);
|
|
||||||
// Show in block's language but not translated
|
|
||||||
$this->i18nGet($setlanguage);
|
|
||||||
$this->assertText($box->title);
|
|
||||||
// Do not show in the other language
|
|
||||||
$this->i18nGet($otherlanguage);
|
|
||||||
$this->assertNoText($box->title);
|
|
||||||
$this->assertNoText($translations[$otherlanguage->language]['title']);
|
|
||||||
|
|
||||||
// Add a custom title to any other block: Navigation (user, 1)
|
|
||||||
$title = $this->randomName(10);
|
|
||||||
$this->i18nUpdateBlock('user', 1, array('title' => $title));
|
|
||||||
$this->assertText($title, "The new custom title is displayed on the home page.");
|
|
||||||
$translate = $this->i18nTranslateBlock('user', 1, array('title'));
|
|
||||||
$this->drupalGet('');
|
|
||||||
|
|
||||||
// Refresh block strings, the ones for the first box should be gone. Not the others
|
|
||||||
$box2 = $this->i18nCreateBox(array('language' => I18N_BLOCK_LOCALIZE));
|
|
||||||
$translations = $this->i18nTranslateBlock('block', $box2->bid, array('title', 'body'));
|
|
||||||
i18nstrings_refresh_group('blocks', TRUE);
|
|
||||||
$this->assertFalse(i18nstrings_get_source("blocks:block:$box->bid:title", $box->title), "The string for the box title is gone.");
|
|
||||||
$this->assertFalse(i18nstrings_get_source("blocks:block:$box->bid:body", $box->body), "The string for the box body is gone.");
|
|
||||||
$this->assertTrue(i18nstrings_get_source("blocks:user:1:title"), "We have a string for the Navigation block title");
|
|
||||||
$this->assertTrue(i18nstrings_get_source("blocks:block:$box2->bid:title", $box2->title), "The string for the second box title is still there.");
|
|
||||||
$this->assertTrue(i18nstrings_get_source("blocks:block:$box2->bid:body", $box2->body), "The string for the second box body is still there.");
|
|
||||||
// Test a block with filtering and input formats
|
|
||||||
$box3 = $this->i18nCreateBox(array(
|
|
||||||
'title' => '<div><script>alert(0)</script>Title</script>',
|
|
||||||
'body' => "One line\nTwo lines<script>alert(1)</script>",
|
|
||||||
'language' => I18N_BLOCK_LOCALIZE,
|
|
||||||
));
|
|
||||||
$language = current($this->getOtherLanguages());
|
|
||||||
// We add language name to the title just to make sure we get the right translation later
|
|
||||||
$this->i18nstringsSaveTranslation("blocks:block:$box3->bid:title", $language->language, $box3->title . $language->name);
|
|
||||||
$this->i18nstringsSaveTranslation("blocks:block:$box3->bid:body", $language->language, $box3->body);
|
|
||||||
// This should be the actual HTML displayed
|
|
||||||
$title = check_plain($box3->title);
|
|
||||||
$body = check_markup($box3->body);
|
|
||||||
$this->drupalGet('');
|
|
||||||
$this->assertRaw($title, "Title being displayed for default language: " . $title);
|
|
||||||
$this->assertRaw($body, "Body being displayed for default language: " . check_plain($body));
|
|
||||||
$this->i18nGet($language);
|
|
||||||
$this->assertRaw($title . $language->name, "Translated title displayed with right filtering.");
|
|
||||||
$this->assertRaw($body, "Translated body displayed with right filtering.");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Translate block fields to all languages
|
|
||||||
*/
|
|
||||||
function i18nTranslateBlock($module, $delta, $fields = array('title', 'body')) {
|
|
||||||
foreach ($this->getOtherLanguages() as $language) {
|
|
||||||
foreach ($fields as $key) {
|
|
||||||
$text[$key] = $this->i18nstringsCreateTranslation("blocks:$module:$delta:$key", $language->language);
|
|
||||||
}
|
|
||||||
// Now check translated strings display on page
|
|
||||||
$this->i18nGet($language->language, '');
|
|
||||||
foreach ($text as $string) {
|
|
||||||
$this->assertText($string);
|
|
||||||
}
|
|
||||||
$translations[$language->language] = $text;
|
|
||||||
}
|
|
||||||
return $translations;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Test creating custom block (i.e. box), moving it to a specific region and then deleting it.
|
|
||||||
*/
|
|
||||||
function i18nCreateBox($box = array(), $region = 'left', $check_display = TRUE) {
|
|
||||||
// Add a new box by filling out the input form on the admin/build/block/add page.
|
|
||||||
$box += array(
|
|
||||||
'info' => $this->randomName(8),
|
|
||||||
'title' => $this->randomName(8),
|
|
||||||
'body' => $this->randomName(32),
|
|
||||||
);
|
|
||||||
$this->drupalPost('admin/build/block/add', $box, t('Save block'));
|
|
||||||
// Confirm that the box has been created, and then query the created bid.
|
|
||||||
$this->assertText(t('The block has been created.'), 'Box successfully created.');
|
|
||||||
$bid = db_result(db_query("SELECT bid FROM {boxes} WHERE info = '%s'", array($box['info'])));
|
|
||||||
// Check to see if the box was created by checking that it's in the database..
|
|
||||||
$this->assertNotNull($bid, 'Box found in database');
|
|
||||||
// Display the block on left region
|
|
||||||
$this->i18nUpdateBlockRegion('block', $bid, $region);
|
|
||||||
if ($check_display) {
|
|
||||||
// Confirm that the box is being displayed.
|
|
||||||
$this->assertText(check_plain($box['title']), 'Box successfully being displayed on the page.');
|
|
||||||
}
|
|
||||||
$box['bid'] = $block['delta'] = $bid;
|
|
||||||
$box['module'] = 'block';
|
|
||||||
return (object)$box;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Update block
|
|
||||||
*/
|
|
||||||
function i18nUpdateBlock($module, $delta, $update = array()) {
|
|
||||||
$this->drupalPost("admin/build/block/configure/$module/$delta", $update, t('Save block'));
|
|
||||||
$this->assertText(t('The block configuration has been saved.'));
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Update block region
|
|
||||||
*/
|
|
||||||
function i18nUpdateBlockRegion($module, $delta, $region) {
|
|
||||||
// Set the created box to a specific region.
|
|
||||||
// TODO: Implement full region checking.
|
|
||||||
$edit = array();
|
|
||||||
$edit[$module . '_'. $delta .'[region]'] = $region;
|
|
||||||
$this->drupalPost('admin/build/block', $edit, t('Save blocks'));
|
|
||||||
// Confirm that the box was moved to the proper region.
|
|
||||||
$this->assertText(t('The block settings have been updated.'), "Box successfully moved to $region region.");
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Delete block
|
|
||||||
*/
|
|
||||||
function i18nDeleteBlock($bid) {
|
|
||||||
// Delete the created box & verify that it's been deleted and no longer appearing on the page.
|
|
||||||
$this->drupalPost('admin/build/block/delete/'. $bid, array(), t('Delete'));
|
|
||||||
$this->assertRaw(t('The block %title has been removed.', array('%title' => $box['info'])), t('Box successfully deleted.'));
|
|
||||||
$this->assertNoText(t($box['title']), t('Box no longer appears on page.'));
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,102 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Class for testing i18nstrings and modules using these features
|
|
||||||
*
|
|
||||||
* Tests basic API functions
|
|
||||||
*/
|
|
||||||
|
|
||||||
require_once 'drupal_i18n_test_case.php';
|
|
||||||
|
|
||||||
class i18n_Strings_Test extends Drupali18nTestCase {
|
|
||||||
|
|
||||||
function getInfo() {
|
|
||||||
return array(
|
|
||||||
'name' => 'String translation API',
|
|
||||||
'group' => 'Internationalization',
|
|
||||||
'description' => 'User defined strings translation functions'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function setUp() {
|
|
||||||
parent::setUp('i18n', 'locale', 'i18nstrings');
|
|
||||||
$this->addLanguage('es');
|
|
||||||
$this->addLanguage('de');
|
|
||||||
// A language with two letter code may help too
|
|
||||||
$this->addLanguage('pt-br');
|
|
||||||
// Set path languages so we can retrieve pages in different languages
|
|
||||||
variable_set('language_negotiation', LANGUAGE_NEGOTIATION_PATH);
|
|
||||||
//variable_set('i18n_variables', array('site_name','site_frontpage',));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test base i18nstrings API
|
|
||||||
*/
|
|
||||||
function testStringsAPI() {
|
|
||||||
// Create a bunch of strings for three languages
|
|
||||||
$strings = $this->stringCreateAll(10);
|
|
||||||
|
|
||||||
// Save source strings and store translations
|
|
||||||
foreach ($strings['en'] as $key => $string) {
|
|
||||||
$name = "test:string:$key:name";
|
|
||||||
i18nstrings_update($name, $string);
|
|
||||||
$count = $this->stringSaveTranslation($name, 'es', $strings['es'][$key]);
|
|
||||||
$count += $this->stringSaveTranslation($name, 'pt-br', $strings['pt-br'][$key]);
|
|
||||||
$this->assertEqual($count, 2, "Two translatins have been saved");
|
|
||||||
}
|
|
||||||
// Check translations
|
|
||||||
$language_list = language_list();
|
|
||||||
foreach (array('pt-br', 'es') as $lang) {
|
|
||||||
$language = $language_list[$lang];
|
|
||||||
foreach ($strings[$lang] as $key => $value) {
|
|
||||||
$name = "test:string:$key:name";
|
|
||||||
$translation = i18nstrings($name, 'NOT FOUND', $lang);
|
|
||||||
$this->assertEqual($translation, $value, "The right $language->language translation has been retrieved for $name, $translation");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create strings for all languages
|
|
||||||
*/
|
|
||||||
public static function stringCreateAll($number = 10, $length = 100) {
|
|
||||||
foreach (language_list() as $lang => $language) {
|
|
||||||
$strings[$lang] = self::stringCreateArray($number, $length);
|
|
||||||
}
|
|
||||||
return $strings;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Create a bunch of random strings to test the API
|
|
||||||
*/
|
|
||||||
public static function stringCreateArray($number = 10, $length = 100) {
|
|
||||||
for ($i=1 ; $i <= $number ; $i++) {
|
|
||||||
$strings[$i] = self::randomName($length);
|
|
||||||
}
|
|
||||||
return $strings;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Create and store one translation into the db
|
|
||||||
*/
|
|
||||||
public static function stringCreateTranslation($name, $lang, $length = 20) {
|
|
||||||
$translation = $this->randomName($length);
|
|
||||||
if (self::stringSaveTranslation($name, $lang, $translation)) {
|
|
||||||
return $translation;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Translate one string into the db
|
|
||||||
*/
|
|
||||||
public static function stringSaveTranslation($name, $lang, $translation, $update = FALSE) {
|
|
||||||
$source = i18nstrings_get_source($name);
|
|
||||||
if ($source) {
|
|
||||||
if ($update) {
|
|
||||||
db_query("UPDATE {locales_target} SET translation = '%s' WHERE lid = %d AND language = '%s'", $translation, $source->lid, $lang);
|
|
||||||
} else {
|
|
||||||
db_query("INSERT INTO {locales_target} (translation, lid, language) VALUES ('%s', %d, '%s')", $translation, $source->lid, $lang);
|
|
||||||
}
|
|
||||||
return db_affected_rows();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,58 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Class for testing messaging module.
|
|
||||||
*
|
|
||||||
* Tests basic API functions
|
|
||||||
*/
|
|
||||||
|
|
||||||
require_once 'i18n_strings.test';
|
|
||||||
|
|
||||||
class i18n_Taxonomy_Test extends Drupali18nTestCase {
|
|
||||||
|
|
||||||
function getInfo() {
|
|
||||||
return array(
|
|
||||||
'name' => 'Taxonomy translation',
|
|
||||||
'group' => 'Internationalization',
|
|
||||||
'description' => 'Taxonomy translation functions'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function setUp() {
|
|
||||||
parent::setUp('i18nstrings', 'taxonomy', 'i18ntaxonomy');
|
|
||||||
$this->addLanguage('es');
|
|
||||||
$this->addLanguage('de');
|
|
||||||
}
|
|
||||||
|
|
||||||
function testTaxonomyTranslationAPI() {
|
|
||||||
// Create a vocabulary with some terms
|
|
||||||
$number = 4;
|
|
||||||
$vocab = $this->drupalCreateVocabulary(array('i18nmode' => I18N_TAXONOMY_LOCALIZE));
|
|
||||||
$this->assertEqual(i18ntaxonomy_vocabulary($vocab-vid), I18N_TAXONOMY_LOCALIZE, 'A vocabulary has been created and it is localizable.');
|
|
||||||
$terms = $this->drupalCreateTerms($number, array('vid' => $vocab->vid));
|
|
||||||
$this->assertEqual(count($terms), $number, "Four translatable terms have been created.");
|
|
||||||
// Create and Save Spanish translation for all of them
|
|
||||||
$count = 0;
|
|
||||||
$lang = 'es';
|
|
||||||
foreach ($terms as $term) {
|
|
||||||
$translations[$term->tid] = $this->randomName(10);
|
|
||||||
// Save Spanish translation
|
|
||||||
$translations[$term->tid] = $this->i18nstringsCreateTranslation("taxonomy:term:$term->tid:name", $lang);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Create vocabulary with given fields
|
|
||||||
function drupalCreateVocabulary($vocab = array()) {
|
|
||||||
$vocab += array('name' => $this->randomName(10), 'description' => $this->randomName(20));
|
|
||||||
taxonomy_save_vocabulary($vocab);
|
|
||||||
return (object)$vocab;
|
|
||||||
}
|
|
||||||
// Create term with given fields
|
|
||||||
function drupalCreateTerms($number = 1, $data = array()) {
|
|
||||||
$list = array();
|
|
||||||
for ($i = 1; $i <= $number ; $i++ ) {
|
|
||||||
$term = $data + array('name' => $this->randomName(10), 'description' => $this->randomName(20));
|
|
||||||
taxonomy_save_term($term);
|
|
||||||
$list[] = (object)$term;
|
|
||||||
}
|
|
||||||
return $list;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
name = Internationalization tests
|
|
||||||
description = Helper module for testing i18n (do not enable manually)
|
|
||||||
dependencies[] = locale
|
|
||||||
dependencies[] = translation
|
|
||||||
dependencies[] = i18n
|
|
||||||
package = Testing
|
|
||||||
core = 6.x
|
|
||||||
|
|
||||||
; Information added by drupal.org packaging script on 2011-10-11
|
|
||||||
version = "6.x-1.10"
|
|
||||||
core = "6.x"
|
|
||||||
project = "i18n"
|
|
||||||
datestamp = "1318336004"
|
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @file
|
|
||||||
* Helper module for testing i18n
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Add some multilingual variables, override existing ones from settings so
|
|
||||||
// we have a known list and we don't need any addition to the settings file for testing i18n
|
|
||||||
_i18n_test_variable_init();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Implementation of hook_init()
|
|
||||||
*/
|
|
||||||
function i18n_test_init() {
|
|
||||||
// We just implement this hook so this one is loaded always on bootstap
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set default multilingual variables and add any others defined by testing scripts
|
|
||||||
*
|
|
||||||
* More variables can be added using 'i18n_variables_test';
|
|
||||||
*/
|
|
||||||
function _i18n_test_variable_init() {
|
|
||||||
global $conf;
|
|
||||||
$conf['i18n_variables'] = array_merge(array('site_name', 'site_frontpage'), variable_get('i18n_variables_test', array()));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Implementation of hook_locale()
|
|
||||||
*/
|
|
||||||
function i18n_test_locale() {
|
|
||||||
switch ($op) {
|
|
||||||
case 'groups':
|
|
||||||
return array('test' => t('Test'));
|
|
||||||
case 'info':
|
|
||||||
$info['test']['refresh callback'] = 'i18n_test_locale_refresh';
|
|
||||||
$info['test']['format'] = FALSE;
|
|
||||||
return $info;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Locale refresh
|
|
||||||
*/
|
|
||||||
function i18n_test_locale_refresh() {
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
|
@ -1,6 +1,6 @@
|
||||||
name = ImageAPI
|
name = ImageAPI
|
||||||
description = ImageAPI supporting multiple toolkits.
|
description = ImageAPI supporting multiple toolkits.
|
||||||
package = ImageCache
|
package = Image
|
||||||
core = 6.x
|
core = 6.x
|
||||||
php = 5.1
|
php = 5.1
|
||||||
|
|
||||||
|
@ -9,4 +9,3 @@ version = "6.x-1.10"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "imageapi"
|
project = "imageapi"
|
||||||
datestamp = "1305563215"
|
datestamp = "1305563215"
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
name = ImageAPI GD2
|
name = ImageAPI GD2
|
||||||
description = Uses PHP's built-in GD2 image processing support.
|
description = Uses PHP's built-in GD2 image processing support.
|
||||||
package = ImageCache
|
package = Image
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
; Information added by drupal.org packaging script on 2011-05-16
|
; Information added by drupal.org packaging script on 2011-05-16
|
||||||
|
@ -8,4 +8,3 @@ version = "6.x-1.10"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "imageapi"
|
project = "imageapi"
|
||||||
datestamp = "1305563215"
|
datestamp = "1305563215"
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
name = ImageAPI ImageMagick
|
name = ImageAPI ImageMagick
|
||||||
description = Command Line ImageMagick support.
|
description = Command Line ImageMagick support.
|
||||||
package = ImageCache
|
package = Image
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
|
|
||||||
|
@ -9,4 +9,3 @@ version = "6.x-1.10"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "imageapi"
|
project = "imageapi"
|
||||||
datestamp = "1305563215"
|
datestamp = "1305563215"
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
name = ImageCache
|
name = ImageCache
|
||||||
description = Dynamic image manipulator and cache.
|
description = Dynamic image manipulator and cache.
|
||||||
package = ImageCache
|
package = Image
|
||||||
dependencies[] = imageapi
|
dependencies[] = imageapi
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
|
@ -9,4 +9,3 @@ version = "6.x-2.0-rc1"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "imagecache"
|
project = "imagecache"
|
||||||
datestamp = "1337742655"
|
datestamp = "1337742655"
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ name = ImageCache UI
|
||||||
description = ImageCache User Interface.
|
description = ImageCache User Interface.
|
||||||
dependencies[] = imagecache
|
dependencies[] = imagecache
|
||||||
dependencies[] = imageapi
|
dependencies[] = imageapi
|
||||||
package = ImageCache
|
package = Image
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
; Information added by drupal.org packaging script on 2012-05-23
|
; Information added by drupal.org packaging script on 2012-05-23
|
||||||
|
@ -10,4 +10,3 @@ version = "6.x-2.0-rc1"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "imagecache"
|
project = "imagecache"
|
||||||
datestamp = "1337742655"
|
datestamp = "1337742655"
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
name = Lexicon
|
name = Lexicon
|
||||||
description = Maintain a lexicon on your site.
|
description = Maintain a lexicon on your site.
|
||||||
|
package = Core - extended
|
||||||
dependencies[] = taxonomy
|
dependencies[] = taxonomy
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
|
@ -9,4 +10,3 @@ version = "6.x-1.4"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "lexicon"
|
project = "lexicon"
|
||||||
datestamp = "1302799616"
|
datestamp = "1302799616"
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
; $Id: lightbox2.info,v 1.1.6.4 2008/07/14 11:51:34 snpower Exp $
|
; $Id: lightbox2.info,v 1.1.6.4 2008/07/14 11:51:34 snpower Exp $
|
||||||
name = Lightbox2
|
name = Lightbox2
|
||||||
description = Enables Lightbox2 for Drupal
|
description = Enables Lightbox2 for Drupal
|
||||||
|
package = User interface
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
; Information added by drupal.org packaging script on 2010-09-24
|
; Information added by drupal.org packaging script on 2010-09-24
|
||||||
|
@ -8,4 +9,3 @@ version = "6.x-1.11"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "lightbox2"
|
project = "lightbox2"
|
||||||
datestamp = "1285342563"
|
datestamp = "1285342563"
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
name = Link checker
|
name = Link checker
|
||||||
description = "Periodically checks for broken links in node types, blocks and cck fields and reports the results."
|
description = "Periodically checks for broken links in node types, blocks and cck fields and reports the results."
|
||||||
|
package = Core - extended
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
; Information added by Drupal.org packaging script on 2014-06-07
|
; Information added by Drupal.org packaging script on 2014-06-07
|
||||||
|
@ -7,4 +8,3 @@ version = "6.x-2.8"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "linkchecker"
|
project = "linkchecker"
|
||||||
datestamp = "1402132729"
|
datestamp = "1402132729"
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
; $Name$
|
; $Name$
|
||||||
name = Clone module
|
name = Clone module
|
||||||
description = "Allows users to clone (copy then edit) an existing node."
|
description = "Allows users to clone (copy then edit) an existing node."
|
||||||
|
package = Core - extended
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
; Information added by drupal.org packaging script on 2011-07-01
|
; Information added by drupal.org packaging script on 2011-07-01
|
||||||
|
@ -8,4 +9,3 @@ version = "6.x-1.3"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "node_clone"
|
project = "node_clone"
|
||||||
datestamp = "1309483919"
|
datestamp = "1309483919"
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
name = Recently read
|
name = Recently read
|
||||||
description = Tracks the history of recently read content by each user.
|
description = Tracks the history of recently read content by each user.
|
||||||
|
package = Core - extended
|
||||||
core = 6.x
|
core = 6.x
|
||||||
package = Other
|
|
||||||
|
|
||||||
; Information added by drupal.org packaging script on 2012-03-02
|
; Information added by drupal.org packaging script on 2012-03-02
|
||||||
version = "6.x-1.0-beta1"
|
version = "6.x-1.0-beta1"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "recently_read"
|
project = "recently_read"
|
||||||
datestamp = "1330713350"
|
datestamp = "1330713350"
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
; $Id: role_delegation.info,v 1.2 2008/06/12 04:00:35 davidlesieur Exp $
|
; $Id: role_delegation.info,v 1.2 2008/06/12 04:00:35 davidlesieur Exp $
|
||||||
name = "Role Delegation"
|
name = "Role Delegation"
|
||||||
description = "Allows site administrators to grant some roles the authority to assign selected roles to users."
|
description = "Allows site administrators to grant some roles the authority to assign selected roles to users."
|
||||||
|
package = Core - extended
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
|
|
||||||
|
|
||||||
|
@ -9,4 +10,3 @@ version = "6.x-1.4"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "role_delegation"
|
project = "role_delegation"
|
||||||
datestamp = "1291919534"
|
datestamp = "1291919534"
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
name = Search Restrict
|
name = Search Restrict
|
||||||
description = "Exclude specific content from search results if user doesn't have privileges."
|
description = "Exclude specific content from search results if user doesn't have privileges."
|
||||||
|
package = Core - extended
|
||||||
dependencies[] = search
|
dependencies[] = search
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
|
@ -8,4 +9,3 @@ version = "6.x-1.5"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "search_restrict"
|
project = "search_restrict"
|
||||||
datestamp = "1346261003"
|
datestamp = "1346261003"
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
name = Search Restrict Apache Solr
|
name = Search Restrict Apache Solr
|
||||||
description = "Exclude specific content from Apache Solr search results if user doesn't have privileges."
|
description = "Exclude specific content from Apache Solr search results if user doesn't have privileges."
|
||||||
|
package = Core - extended
|
||||||
dependencies[] = apachesolr
|
dependencies[] = apachesolr
|
||||||
dependencies[] = search_restrict
|
dependencies[] = search_restrict
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
@ -9,4 +10,3 @@ version = "6.x-1.5"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "search_restrict"
|
project = "search_restrict"
|
||||||
datestamp = "1346261003"
|
datestamp = "1346261003"
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
name = SuiteDesk
|
name = Storm
|
||||||
description = "Project Management Application (base module - utility for other SuiteDesk modules)."
|
description = "Project Management Application (base module - utility for other SuiteDesk modules)."
|
||||||
core = 6.x
|
core = 6.x
|
||||||
package = Storm
|
package = Storm
|
||||||
|
@ -8,4 +8,3 @@ version = "6.x-2.2"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "storm"
|
project = "storm"
|
||||||
datestamp = "1375697500"
|
datestamp = "1375697500"
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
name = SuiteDesk Dok
|
name = Storm Dok
|
||||||
description = "Allows creation of documents about organizations, projects or tasks."
|
description = "Allows creation of documents about organizations, projects or tasks."
|
||||||
dependencies[] = storm
|
dependencies[] = storm
|
||||||
dependencies[] = stormorganization
|
dependencies[] = stormorganization
|
||||||
|
@ -6,3 +6,5 @@ dependencies[] = stormproject
|
||||||
dependencies[] = stormtask
|
dependencies[] = stormtask
|
||||||
package = Storm
|
package = Storm
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
|
version = "6.x-2.2"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
name = SuiteDesk Event
|
name = Storm Event
|
||||||
description = "Allows creation of events and personal calendar."
|
description = "Allows creation of events and personal calendar."
|
||||||
dependencies[] = storm
|
dependencies[] = storm
|
||||||
dependencies[] = stormorganization
|
dependencies[] = stormorganization
|
||||||
|
@ -6,3 +6,5 @@ dependencies[] = stormproject
|
||||||
dependencies[] = stormtask
|
dependencies[] = stormtask
|
||||||
package = Storm
|
package = Storm
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
|
version = "6.x-2.2"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
name = SuiteDesk Expense
|
name = Storm Expense
|
||||||
description = "Allows recording of expenses based on organizations, projects, tasks and tickets."
|
description = "Allows recording of expenses based on organizations, projects, tasks and tickets."
|
||||||
dependencies[] = storm
|
dependencies[] = storm
|
||||||
dependencies[] = stormorganization
|
dependencies[] = stormorganization
|
||||||
|
@ -13,4 +13,3 @@ version = "6.x-2.2"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "storm"
|
project = "storm"
|
||||||
datestamp = "1375697500"
|
datestamp = "1375697500"
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
name = SuiteDesk Idea
|
name = Storm Idea
|
||||||
description = "Allows creation of personal quick notes."
|
description = "Allows creation of personal quick notes."
|
||||||
dependencies[] = storm
|
dependencies[] = storm
|
||||||
package = Storm
|
package = Storm
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
name = SuiteDesk Invoice
|
name = Storm Invoice
|
||||||
description = "Allows invoices to be created based on organizations and projects."
|
description = "Allows invoices to be created based on organizations and projects."
|
||||||
dependencies[] = storm
|
dependencies[] = storm
|
||||||
dependencies[] = stormorganization
|
dependencies[] = stormorganization
|
||||||
|
@ -11,4 +11,3 @@ version = "6.x-2.2"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "storm"
|
project = "storm"
|
||||||
datestamp = "1375697500"
|
datestamp = "1375697500"
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
name = SuiteDesk Note
|
name = Storm Note
|
||||||
description = "Allows creation of notes about organizations, projects or tasks."
|
description = "Allows creation of notes about organizations, projects or tasks."
|
||||||
dependencies[] = storm
|
dependencies[] = storm
|
||||||
dependencies[] = stormorganization
|
dependencies[] = stormorganization
|
||||||
|
@ -12,4 +12,3 @@ version = "6.x-2.2"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "storm"
|
project = "storm"
|
||||||
datestamp = "1375697500"
|
datestamp = "1375697500"
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
name = SuiteDesk Organization
|
name = Storm Organization
|
||||||
description = "Allows storing of organizations for use within SuiteDesk"
|
description = "Allows storing of organizations for use within SuiteDesk"
|
||||||
dependencies[] = storm
|
dependencies[] = storm
|
||||||
package = Storm
|
package = Storm
|
||||||
|
@ -9,4 +9,3 @@ version = "6.x-2.2"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "storm"
|
project = "storm"
|
||||||
datestamp = "1375697500"
|
datestamp = "1375697500"
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
name = SuiteDesk Person
|
name = Storm Person
|
||||||
description = "Allows storage of people within organizations, and linking of these to Drupal user accounts."
|
description = "Allows storage of people within organizations, and linking of these to Drupal user accounts."
|
||||||
dependencies[] = storm
|
dependencies[] = storm
|
||||||
dependencies[] = stormorganization
|
dependencies[] = stormorganization
|
||||||
|
@ -10,4 +10,3 @@ version = "6.x-2.2"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "storm"
|
project = "storm"
|
||||||
datestamp = "1375697500"
|
datestamp = "1375697500"
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
name = SuiteDesk Project
|
name = Storm Project
|
||||||
description = "Allows recording of projects based on SuiteDesk Organizations"
|
description = "Allows recording of projects based on SuiteDesk Organizations"
|
||||||
dependencies[] = storm
|
dependencies[] = storm
|
||||||
dependencies[] = stormorganization
|
dependencies[] = stormorganization
|
||||||
|
@ -10,4 +10,3 @@ version = "6.x-2.2"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "storm"
|
project = "storm"
|
||||||
datestamp = "1375697500"
|
datestamp = "1375697500"
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
name = SuiteDesk Project Clone
|
name = Storm Project Clone
|
||||||
description = "Allows users to clone entire projects."
|
description = "Allows users to clone entire projects."
|
||||||
dependencies[] = book
|
dependencies[] = book
|
||||||
dependencies[] = clone
|
dependencies[] = clone
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
name = SuiteDesk Task
|
name = Storm Task
|
||||||
description = "Allows recording of tasks for SuiteDesk Organizations and Projects"
|
description = "Allows recording of tasks for SuiteDesk Organizations and Projects"
|
||||||
dependencies[] = storm
|
dependencies[] = storm
|
||||||
dependencies[] = stormorganization
|
dependencies[] = stormorganization
|
||||||
|
@ -11,4 +11,3 @@ version = "6.x-2.2"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "storm"
|
project = "storm"
|
||||||
datestamp = "1375697500"
|
datestamp = "1375697500"
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
|
name = Storm Team
|
||||||
name = SuiteDesk Team
|
|
||||||
description = "Allows recording of teams made up of SuiteDesk Organizations and SuiteDesk People."
|
description = "Allows recording of teams made up of SuiteDesk Organizations and SuiteDesk People."
|
||||||
core = 6.x
|
core = 6.x
|
||||||
package = Storm
|
package = Storm
|
||||||
|
@ -13,4 +12,3 @@ version = "6.x-2.2"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "storm"
|
project = "storm"
|
||||||
datestamp = "1375697500"
|
datestamp = "1375697500"
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
name = SuiteDesk Ticket
|
name = Storm Ticket
|
||||||
description = "Allows creation of tickets for SuiteDesk Projects and Tasks"
|
description = "Allows creation of tickets for SuiteDesk Projects and Tasks"
|
||||||
dependencies[] = storm
|
dependencies[] = storm
|
||||||
dependencies[] = stormorganization
|
dependencies[] = stormorganization
|
||||||
|
@ -12,4 +12,3 @@ version = "6.x-2.2"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "storm"
|
project = "storm"
|
||||||
datestamp = "1375697500"
|
datestamp = "1375697500"
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
name = SuiteDesk Timetracking
|
name = Storm Timetracking
|
||||||
description = "Allows recording of times worked based on project, task and/or ticket"
|
description = "Allows recording of times worked based on project, task and/or ticket"
|
||||||
dependencies[] = storm
|
dependencies[] = storm
|
||||||
dependencies[] = stormorganization
|
dependencies[] = stormorganization
|
||||||
|
@ -13,4 +13,3 @@ version = "6.x-2.2"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "storm"
|
project = "storm"
|
||||||
datestamp = "1375697500"
|
datestamp = "1375697500"
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
name = Token
|
name = Token
|
||||||
description = Provides a shared API for replacement of textual placeholders with actual data.
|
description = Provides a shared API for replacement of textual placeholders with actual data.
|
||||||
|
package = Core - extended
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
; Information added by drupal.org packaging script on 2012-09-12
|
; Information added by drupal.org packaging script on 2012-09-12
|
||||||
|
@ -7,4 +8,3 @@ version = "6.x-1.19"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "token"
|
project = "token"
|
||||||
datestamp = "1347470077"
|
datestamp = "1347470077"
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
name = TokenSTARTER
|
name = TokenSTARTER
|
||||||
description = Provides additional tokens and a base on which to build your own tokens.
|
description = Provides additional tokens and a base on which to build your own tokens.
|
||||||
|
package = Core - extended
|
||||||
dependencies[] = token
|
dependencies[] = token
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
|
@ -8,4 +9,3 @@ version = "6.x-1.19"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "token"
|
project = "token"
|
||||||
datestamp = "1347470077"
|
datestamp = "1347470077"
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
name = Token actions
|
name = Token actions
|
||||||
description = Provides enhanced versions of core Drupal actions using the Token module.
|
description = Provides enhanced versions of core Drupal actions using the Token module.
|
||||||
|
package = Core - extended
|
||||||
dependencies[] = token
|
dependencies[] = token
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
|
@ -8,4 +9,3 @@ version = "6.x-1.19"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "token"
|
project = "token"
|
||||||
datestamp = "1347470077"
|
datestamp = "1347470077"
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
; $Id: view_revisions_by_content_type.info,v 1.1 2009/09/27 22:07:01 wimleers Exp $
|
; $Id: view_revisions_by_content_type.info,v 1.1 2009/09/27 22:07:01 wimleers Exp $
|
||||||
name = View revisions by content type
|
name = View revisions by content type
|
||||||
description = "Provides per-content type 'view revisions' permissions."
|
description = "Provides per-content type 'view revisions' permissions."
|
||||||
|
package = Core - extended
|
||||||
|
|
||||||
core = 6.x
|
core = 6.x
|
||||||
|
|
||||||
|
@ -9,4 +10,3 @@ version = "6.x-1.1"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "view_revisions_by_content_type"
|
project = "view_revisions_by_content_type"
|
||||||
datestamp = "1288362052"
|
datestamp = "1288362052"
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
name = Vocabulary Permissions Per Role
|
name = Vocabulary Permissions Per Role
|
||||||
description = "Allow adding to/editing terms of/removing terms from vocabularies per role."
|
description = "Allow adding to/editing terms of/removing terms from vocabularies per role."
|
||||||
|
package = Core - extended
|
||||||
core = 6.x
|
core = 6.x
|
||||||
dependencies[] = taxonomy
|
dependencies[] = taxonomy
|
||||||
|
|
||||||
|
@ -9,4 +10,3 @@ version = "6.x-1.1"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "vppr"
|
project = "vppr"
|
||||||
datestamp = "1349516215"
|
datestamp = "1349516215"
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
; $Id: watcher.info,v 1.2.4.2 2009/02/26 17:03:48 solipsist Exp $
|
; $Id: watcher.info,v 1.2.4.2 2009/02/26 17:03:48 solipsist Exp $
|
||||||
name = "Watcher"
|
name = "Watcher"
|
||||||
description = "Watcher enables your site's users to watch nodes for changes and new comments and be notified about them."
|
description = "Watcher enables your site's users to watch nodes for changes and new comments and be notified about them."
|
||||||
package = Other
|
package = Core - extended
|
||||||
core = 6.x
|
core = 6.x
|
||||||
dependencies[] = node
|
dependencies[] = node
|
||||||
dependencies[] = token
|
dependencies[] = token
|
||||||
|
@ -11,4 +11,3 @@ version = "6.x-1.4"
|
||||||
core = "6.x"
|
core = "6.x"
|
||||||
project = "watcher"
|
project = "watcher"
|
||||||
datestamp = "1288126235"
|
datestamp = "1288126235"
|
||||||
|
|
||||||
|
|
Reference in a new issue