Separated documentation and revised modules info

This commit is contained in:
Manuel Cillero 2017-08-02 01:03:03 +02:00
parent 95cbb8a5f2
commit 4fe068fd14
66 changed files with 149 additions and 1974 deletions

File diff suppressed because it is too large Load diff

94
doc/CHANGELOG.txt Normal file
View 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

View file

@ -1,6 +1,6 @@
name = Administration menu
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
; Information added by Drupal.org packaging script on 2015-02-21
@ -8,4 +8,3 @@ version = "6.x-1.9"
core = "6.x"
project = "admin_menu"
datestamp = "1424535792"

View file

@ -1,6 +1,6 @@
name = Node Comment
description = Allows users to comment on and discuss published content using nodes.
package = Core - optional
package = Core - extended
dependencies[] = views
dependencies[] = comment
core = 6.x
@ -9,4 +9,3 @@ version = "6.x-3.0-beta1"
core = "6.x"
project = "nodecomment"
datestamp = "1353097067"

View file

@ -1,5 +1,6 @@
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.
package = Core - extended
core = "6.x"
; While you will need to enable the core Path module to enter aliases,
; programmatically path_alias_xt has no dependency on it. Existing aliases
@ -10,4 +11,3 @@ version = "6.x-1.3"
core = "6.x"
project = "path_alias_xt"
datestamp = "1382565626"

View file

@ -1,5 +1,6 @@
name = Pathauto
description = Provides a mechanism for modules to automatically generate aliases for the content they manage.
package = Core - extended
dependencies[] = path
dependencies[] = token
core = 6.x
@ -10,4 +11,3 @@ version = "6.x-1.6"
core = "6.x"
project = "pathauto"
datestamp = "1320076535"

View file

@ -1,5 +1,6 @@
name = Transliteration
description = Converts non-latin text to US-ASCII and sanitizes file names.
package = Multilanguage
core = 6.x
@ -8,4 +9,3 @@ version = "6.x-3.1"
core = "6.x"
project = "transliteration"
datestamp = "1338540716"

View file

@ -1,6 +1,7 @@
; $Id: administerusersbyrole.info,v 1.1.2.2 2009/06/29 16:06:09 smokris Exp $
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."
package = Core - extended
core = 6.x
; Information added by drupal.org packaging script on 2009-06-29
@ -8,4 +9,3 @@ version = "6.x-1.4"
core = "6.x"
project = "administerusersbyrole"
datestamp = "1246292114"

View file

@ -1,7 +1,7 @@
name = Autosave
description = Saves node edits in the background in case browser dies while editing.
package = Other
package = Core - extended
project = autosave
core = 6.x
@ -13,4 +13,3 @@ version = "6.x-2.11"
core = "6.x"
project = "autosave"
datestamp = "1344266211"

View file

@ -1,6 +1,7 @@
; $Id: better_formats.info,v 1.1.2.2 2009/02/25 06:44:17 dragonwize Exp $
name = Better Formats
description = Enhances the core input format system by managing input format defaults and settings.
package = Core - extended
core = 6.x
; Information added by drupal.org packaging script on 2010-02-05
@ -8,4 +9,3 @@ version = "6.x-1.2"
core = "6.x"
project = "better_formats"
datestamp = "1265402405"

View file

@ -1,6 +1,6 @@
name = BookMadeSimple
description = Automatic creation of a book and simple creation of child pages.
package = Content
package = Core - extended
dependencies[] = book
core=6.x
; Information added by drupal.org packaging script on 2008-01-11
@ -20,4 +20,3 @@ version = "6.x-3.4"
core = "6.x"
project = "book_made_simple"
datestamp = "1348472235"

View file

@ -1,5 +1,6 @@
name = Custom Error
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
; Information added by Drupal.org packaging script on 2014-08-17
@ -7,4 +8,3 @@ version = "6.x-1.4"
core = "6.x"
project = "customerror"
datestamp = "1408264129"

View file

@ -1,5 +1,6 @@
name = Diff
description = Show difference between node revisions.
package = Core - extended
core = 6.x
; Information added by drupal.org packaging script on 2011-08-07
@ -7,4 +8,3 @@ version = "6.x-2.3"
core = "6.x"
project = "diff"
datestamp = "1312697033"

View file

@ -1,5 +1,6 @@
name = Frequently Asked Questions
description = "Manages configuration of questions for a FAQ page."
package = Core - extended
core = 6.x
; Information added by drupal.org packaging script on 2012-02-22
@ -7,4 +8,3 @@ version = "6.x-1.13"
core = "6.x"
project = "faq"
datestamp = "1329951344"

View file

@ -1,6 +1,6 @@
name = "GeSHi field"
description = "Provides a CCK field for source code with GeSHI syntax highlighting."
package = "Filters"
package = "Input filters"
core = 6.x
dependencies[] = content
dependencies[] = geshifilter
@ -10,4 +10,3 @@ version = "6.x-1.5"
core = "6.x"
project = "geshifilter"
datestamp = "1363644611"

View file

@ -1,6 +1,6 @@
name = "GeSHi Filter"
description = "Provides a filter to highlight source code using the GeSHi library (Generic Syntax Highlighter)"
package = "Filters"
package = "Input filters"
core = 6.x
; Information added by drupal.org packaging script on 2013-03-18
@ -8,4 +8,3 @@ version = "6.x-1.5"
core = "6.x"
project = "geshifilter"
datestamp = "1363644611"

View file

@ -1,6 +1,6 @@
name = "GeSHi node"
description = "Provides source code node with GeSHi syntax highlighting."
package = "Filters"
package = "Input filters"
dependencies[] = geshifilter
core = 6.x
@ -9,4 +9,3 @@ version = "6.x-1.5"
core = "6.x"
project = "geshifilter"
datestamp = "1363644611"

View file

@ -1,6 +1,7 @@
; $Id: htmlpurifier.info,v 1.6 2008/04/24 04:13:09 ezyang Exp $
name = "HTML Purifier"
description = "Filter that removes malicious HTML and ensures standards compliant output."
package = "Input filters"
core = 6.x
php = 5.0.5
@ -9,4 +10,3 @@ version = "6.x-2.4"
core = "6.x"
project = "htmlpurifier"
datestamp = "1287798330"

View file

@ -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';
}
}
}

View file

@ -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);
}
}
}

View file

@ -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.'));
}
}

View file

@ -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;
}
}
}

View file

@ -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;
}
}

View file

@ -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"

View file

@ -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;
}

View file

@ -1,6 +1,6 @@
name = ImageAPI
description = ImageAPI supporting multiple toolkits.
package = ImageCache
package = Image
core = 6.x
php = 5.1
@ -9,4 +9,3 @@ version = "6.x-1.10"
core = "6.x"
project = "imageapi"
datestamp = "1305563215"

View file

@ -1,6 +1,6 @@
name = ImageAPI GD2
description = Uses PHP's built-in GD2 image processing support.
package = ImageCache
package = Image
core = 6.x
; Information added by drupal.org packaging script on 2011-05-16
@ -8,4 +8,3 @@ version = "6.x-1.10"
core = "6.x"
project = "imageapi"
datestamp = "1305563215"

View file

@ -1,6 +1,6 @@
name = ImageAPI ImageMagick
description = Command Line ImageMagick support.
package = ImageCache
package = Image
core = 6.x
@ -9,4 +9,3 @@ version = "6.x-1.10"
core = "6.x"
project = "imageapi"
datestamp = "1305563215"

View file

@ -1,6 +1,6 @@
name = ImageCache
description = Dynamic image manipulator and cache.
package = ImageCache
package = Image
dependencies[] = imageapi
core = 6.x
@ -9,4 +9,3 @@ version = "6.x-2.0-rc1"
core = "6.x"
project = "imagecache"
datestamp = "1337742655"

View file

@ -2,7 +2,7 @@ name = ImageCache UI
description = ImageCache User Interface.
dependencies[] = imagecache
dependencies[] = imageapi
package = ImageCache
package = Image
core = 6.x
; Information added by drupal.org packaging script on 2012-05-23
@ -10,4 +10,3 @@ version = "6.x-2.0-rc1"
core = "6.x"
project = "imagecache"
datestamp = "1337742655"

View file

@ -1,5 +1,6 @@
name = Lexicon
description = Maintain a lexicon on your site.
package = Core - extended
dependencies[] = taxonomy
core = 6.x
@ -9,4 +10,3 @@ version = "6.x-1.4"
core = "6.x"
project = "lexicon"
datestamp = "1302799616"

View file

@ -1,6 +1,7 @@
; $Id: lightbox2.info,v 1.1.6.4 2008/07/14 11:51:34 snpower Exp $
name = Lightbox2
description = Enables Lightbox2 for Drupal
package = User interface
core = 6.x
; Information added by drupal.org packaging script on 2010-09-24
@ -8,4 +9,3 @@ version = "6.x-1.11"
core = "6.x"
project = "lightbox2"
datestamp = "1285342563"

View file

@ -1,5 +1,6 @@
name = Link checker
description = "Periodically checks for broken links in node types, blocks and cck fields and reports the results."
package = Core - extended
core = 6.x
; Information added by Drupal.org packaging script on 2014-06-07
@ -7,4 +8,3 @@ version = "6.x-2.8"
core = "6.x"
project = "linkchecker"
datestamp = "1402132729"

View file

@ -1,6 +1,7 @@
; $Name$
name = Clone module
description = "Allows users to clone (copy then edit) an existing node."
package = Core - extended
core = 6.x
; Information added by drupal.org packaging script on 2011-07-01
@ -8,4 +9,3 @@ version = "6.x-1.3"
core = "6.x"
project = "node_clone"
datestamp = "1309483919"

View file

@ -1,11 +1,10 @@
name = Recently read
description = Tracks the history of recently read content by each user.
package = Core - extended
core = 6.x
package = Other
; Information added by drupal.org packaging script on 2012-03-02
version = "6.x-1.0-beta1"
core = "6.x"
project = "recently_read"
datestamp = "1330713350"

View file

@ -1,6 +1,7 @@
; $Id: role_delegation.info,v 1.2 2008/06/12 04:00:35 davidlesieur Exp $
name = "Role Delegation"
description = "Allows site administrators to grant some roles the authority to assign selected roles to users."
package = Core - extended
core = "6.x"
@ -9,4 +10,3 @@ version = "6.x-1.4"
core = "6.x"
project = "role_delegation"
datestamp = "1291919534"

View file

@ -1,5 +1,6 @@
name = Search Restrict
description = "Exclude specific content from search results if user doesn't have privileges."
package = Core - extended
dependencies[] = search
core = 6.x
@ -8,4 +9,3 @@ version = "6.x-1.5"
core = "6.x"
project = "search_restrict"
datestamp = "1346261003"

View file

@ -1,7 +1,8 @@
name = Search Restrict Apache Solr
description = "Exclude specific content from Apache Solr search results if user doesn't have privileges."
package = Core - extended
dependencies[] = apachesolr
dependencies[] = search_restrict
dependencies[] = search_restrict
core = 6.x
; Information added by drupal.org packaging script on 2012-08-29
@ -9,4 +10,3 @@ version = "6.x-1.5"
core = "6.x"
project = "search_restrict"
datestamp = "1346261003"

View file

@ -1,4 +1,4 @@
name = SuiteDesk
name = Storm
description = "Project Management Application (base module - utility for other SuiteDesk modules)."
core = 6.x
package = Storm
@ -8,4 +8,3 @@ version = "6.x-2.2"
core = "6.x"
project = "storm"
datestamp = "1375697500"

View file

@ -1,4 +1,4 @@
name = SuiteDesk Dok
name = Storm Dok
description = "Allows creation of documents about organizations, projects or tasks."
dependencies[] = storm
dependencies[] = stormorganization
@ -6,3 +6,5 @@ dependencies[] = stormproject
dependencies[] = stormtask
package = Storm
core = 6.x
version = "6.x-2.2"

View file

@ -1,4 +1,4 @@
name = SuiteDesk Event
name = Storm Event
description = "Allows creation of events and personal calendar."
dependencies[] = storm
dependencies[] = stormorganization
@ -6,3 +6,5 @@ dependencies[] = stormproject
dependencies[] = stormtask
package = Storm
core = 6.x
version = "6.x-2.2"

View file

@ -1,4 +1,4 @@
name = SuiteDesk Expense
name = Storm Expense
description = "Allows recording of expenses based on organizations, projects, tasks and tickets."
dependencies[] = storm
dependencies[] = stormorganization
@ -13,4 +13,3 @@ version = "6.x-2.2"
core = "6.x"
project = "storm"
datestamp = "1375697500"

View file

@ -1,4 +1,4 @@
name = SuiteDesk Idea
name = Storm Idea
description = "Allows creation of personal quick notes."
dependencies[] = storm
package = Storm

View file

@ -1,4 +1,4 @@
name = SuiteDesk Invoice
name = Storm Invoice
description = "Allows invoices to be created based on organizations and projects."
dependencies[] = storm
dependencies[] = stormorganization
@ -11,4 +11,3 @@ version = "6.x-2.2"
core = "6.x"
project = "storm"
datestamp = "1375697500"

View file

@ -1,4 +1,4 @@
name = SuiteDesk Note
name = Storm Note
description = "Allows creation of notes about organizations, projects or tasks."
dependencies[] = storm
dependencies[] = stormorganization
@ -12,4 +12,3 @@ version = "6.x-2.2"
core = "6.x"
project = "storm"
datestamp = "1375697500"

View file

@ -1,4 +1,4 @@
name = SuiteDesk Organization
name = Storm Organization
description = "Allows storing of organizations for use within SuiteDesk"
dependencies[] = storm
package = Storm
@ -9,4 +9,3 @@ version = "6.x-2.2"
core = "6.x"
project = "storm"
datestamp = "1375697500"

View file

@ -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."
dependencies[] = storm
dependencies[] = stormorganization
@ -10,4 +10,3 @@ version = "6.x-2.2"
core = "6.x"
project = "storm"
datestamp = "1375697500"

View file

@ -1,4 +1,4 @@
name = SuiteDesk Project
name = Storm Project
description = "Allows recording of projects based on SuiteDesk Organizations"
dependencies[] = storm
dependencies[] = stormorganization
@ -10,4 +10,3 @@ version = "6.x-2.2"
core = "6.x"
project = "storm"
datestamp = "1375697500"

View file

@ -1,4 +1,4 @@
name = SuiteDesk Project Clone
name = Storm Project Clone
description = "Allows users to clone entire projects."
dependencies[] = book
dependencies[] = clone

View file

@ -1,4 +1,4 @@
name = SuiteDesk Task
name = Storm Task
description = "Allows recording of tasks for SuiteDesk Organizations and Projects"
dependencies[] = storm
dependencies[] = stormorganization
@ -11,4 +11,3 @@ version = "6.x-2.2"
core = "6.x"
project = "storm"
datestamp = "1375697500"

View file

@ -1,5 +1,4 @@
name = SuiteDesk Team
name = Storm Team
description = "Allows recording of teams made up of SuiteDesk Organizations and SuiteDesk People."
core = 6.x
package = Storm
@ -13,4 +12,3 @@ version = "6.x-2.2"
core = "6.x"
project = "storm"
datestamp = "1375697500"

View file

@ -1,4 +1,4 @@
name = SuiteDesk Ticket
name = Storm Ticket
description = "Allows creation of tickets for SuiteDesk Projects and Tasks"
dependencies[] = storm
dependencies[] = stormorganization
@ -12,4 +12,3 @@ version = "6.x-2.2"
core = "6.x"
project = "storm"
datestamp = "1375697500"

View file

@ -1,4 +1,4 @@
name = SuiteDesk Timetracking
name = Storm Timetracking
description = "Allows recording of times worked based on project, task and/or ticket"
dependencies[] = storm
dependencies[] = stormorganization
@ -13,4 +13,3 @@ version = "6.x-2.2"
core = "6.x"
project = "storm"
datestamp = "1375697500"

View file

@ -1,5 +1,6 @@
name = Token
description = Provides a shared API for replacement of textual placeholders with actual data.
package = Core - extended
core = 6.x
; Information added by drupal.org packaging script on 2012-09-12
@ -7,4 +8,3 @@ version = "6.x-1.19"
core = "6.x"
project = "token"
datestamp = "1347470077"

View file

@ -1,5 +1,6 @@
name = TokenSTARTER
description = Provides additional tokens and a base on which to build your own tokens.
package = Core - extended
dependencies[] = token
core = 6.x
@ -8,4 +9,3 @@ version = "6.x-1.19"
core = "6.x"
project = "token"
datestamp = "1347470077"

View file

@ -1,5 +1,6 @@
name = Token actions
description = Provides enhanced versions of core Drupal actions using the Token module.
package = Core - extended
dependencies[] = token
core = 6.x
@ -8,4 +9,3 @@ version = "6.x-1.19"
core = "6.x"
project = "token"
datestamp = "1347470077"

View file

@ -1,6 +1,7 @@
; $Id: view_revisions_by_content_type.info,v 1.1 2009/09/27 22:07:01 wimleers Exp $
name = View revisions by content type
description = "Provides per-content type 'view revisions' permissions."
package = Core - extended
core = 6.x
@ -9,4 +10,3 @@ version = "6.x-1.1"
core = "6.x"
project = "view_revisions_by_content_type"
datestamp = "1288362052"

View file

@ -1,5 +1,6 @@
name = Vocabulary Permissions Per Role
description = "Allow adding to/editing terms of/removing terms from vocabularies per role."
package = Core - extended
core = 6.x
dependencies[] = taxonomy
@ -9,4 +10,3 @@ version = "6.x-1.1"
core = "6.x"
project = "vppr"
datestamp = "1349516215"

View file

@ -1,7 +1,7 @@
; $Id: watcher.info,v 1.2.4.2 2009/02/26 17:03:48 solipsist Exp $
name = "Watcher"
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
dependencies[] = node
dependencies[] = token
@ -11,4 +11,3 @@ version = "6.x-1.4"
core = "6.x"
project = "watcher"
datestamp = "1288126235"