├── .editorconfig ├── .github └── workflows │ └── main.yml ├── .gitignore ├── .travis.yml ├── .tx └── config ├── LICENSE ├── README.md ├── _config.php ├── _config └── forum.yml ├── code ├── controllers │ └── ForumMemberProfile.php ├── extensions │ ├── ForumRole.php │ └── ForumSpamPostExtension.php ├── formfields │ ├── CheckableOption.php │ └── ForumCountryDropdownField.php ├── model │ ├── ForumCategory.php │ ├── ForumThread.php │ └── Post.php ├── pagetypes │ ├── Forum.php │ └── ForumHolder.php ├── reports │ └── ForumReport.php └── search │ ├── ForumDatabaseSearch.php │ ├── ForumSearch.php │ ├── ForumSearchProvider.php │ └── ForumSphinxSearch.php ├── composer.json ├── css ├── Forum.css └── Forum_CMS.css ├── docs └── en │ ├── Configuration.md │ ├── Features.md │ ├── Installation.md │ ├── Search.md │ └── userguide │ ├── 01_Set_up.md │ ├── 02_Using_forum.md │ ├── 03_Administration.md │ ├── _images │ ├── add-category.jpg │ ├── add-forum-category-fields.jpg │ ├── category-list.jpg │ ├── created-new-forum.jpg │ ├── draft-forum.jpg │ ├── edit-forum-user.jpg │ ├── edit-user-forum-tab.jpg │ ├── forum-users.png │ ├── moderated-forums.jpg │ ├── new-forum.jpg │ └── show-forum-category.jpg │ └── index.md ├── images ├── forum │ ├── forum-postChildren.png │ └── t.gif ├── forum_startTopic.gif ├── forummember_holder.gif ├── forummember_holdersml.gif ├── gotoEnd.gif ├── gotoTop.gif ├── replyButton.gif ├── required.gif ├── right.png ├── spacer.gif ├── subscribeButton.gif ├── treeicons │ └── user-file.gif └── unknown.png ├── javascript ├── Forum.js ├── ForumAccess.js └── jquery.MultiFile.js ├── lang ├── _manifest_exclude ├── ar.yml ├── ca.yml ├── cs.yml ├── de.yml ├── en.yml ├── eo.yml ├── es.yml ├── es_AR.yml ├── es_MX.yml ├── et_EE.yml ├── fr.yml ├── it.yml ├── nb.yml ├── pl.yml ├── pt_BR.yml ├── sv.yml └── tr.yml ├── templates ├── Includes │ ├── ForumAdmin_left.ss │ ├── ForumAdmin_right.ss │ ├── ForumFooter.ss │ ├── ForumHeader.ss │ ├── ForumHolder_List.ss │ ├── ForumLogin.ss │ ├── ForumPagination.ss │ ├── ForumThreadSubscribe.ss │ ├── Forum_BBCodeHint.ss │ ├── Post_rss.ss │ ├── SinglePost.ss │ └── TopicListing.ss ├── Layout │ ├── Forum.ss │ ├── ForumHolder.ss │ ├── ForumHolder_memberlist.ss │ ├── ForumHolder_popularthreads.ss │ ├── ForumHolder_search.ss │ ├── ForumMemberProfile.ss │ ├── ForumMemberProfile_register.ss │ ├── ForumMemberProfile_show.ss │ ├── Forum_editpost.ss │ ├── Forum_post.ss │ ├── Forum_reply.ss │ ├── Forum_show.ss │ └── Forum_starttopic.ss └── email │ ├── ForumMember_ForgotNicknameEmail.ss │ ├── ForumMember_NotifyModerator.ss │ └── ForumMember_TopicNotification.ss └── tests ├── ForumHolderTest.php ├── ForumMemberProfileTest.php ├── ForumMemberProfileTest.yml ├── ForumReportTest.php ├── ForumTest.php ├── ForumTest.yml ├── ForumThreadTest.php └── PostTest.php /.editorconfig: -------------------------------------------------------------------------------- 1 | # For more information about the properties used in 2 | # this file, please see the EditorConfig documentation: 3 | # http://editorconfig.org/ 4 | 5 | [*] 6 | charset = utf-8 7 | end_of_line = lf 8 | indent_size = 4 9 | indent_style = tab 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | trim_trailing_whitespace = false 15 | 16 | [*.yml] 17 | indent_size = 2 18 | indent_style = space 19 | 20 | [{.travis.yml,package.json}] 21 | # The indent size used in the `package.json` file cannot be changed 22 | # https://github.com/npm/npm/pull/3180#issuecomment-16336516 23 | indent_size = 2 24 | indent_style = space 25 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Build Docs 2 | on: 3 | push: 4 | branches: 5 | - '0.8' 6 | paths: 7 | - 'docs/en/userguide/**' 8 | jobs: 9 | build: 10 | name: build-docs 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Run build hook 14 | run: curl -X POST -d {} https://api.netlify.com/build_hooks/${{ secrets.NETLIFY_BUILD_HOOK }} 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # See https://github.com/silverstripe-labs/silverstripe-travis-support for setup details 2 | 3 | language: php 4 | 5 | sudo: false 6 | 7 | php: 8 | - 5.4 9 | 10 | env: 11 | global: 12 | - CORE_RELEASE=3.1 13 | - MODULE_PATH=forum 14 | - COVERAGE=0 15 | matrix: 16 | - DB=MYSQL 17 | - DB=SQLITE 18 | - DB=PGSQL 19 | 20 | matrix: 21 | fast_finish: true 22 | allow_failures: 23 | - php: 5.6 24 | - php: 5.5.9 25 | include: 26 | - php: 5.6 27 | env: DB=MYSQL CORE_RELEASE=3.1 28 | - php: 5.6 29 | env: DB=MYSQL CORE_RELEASE=3.2 30 | - php: 5.6 31 | env: DB=MYSQL CORE_RELEASE=3.3 32 | - php: 5.5.9 33 | env: DB=MYSQL CORE_RELEASE=3.1 COVERAGE=1 34 | - php: 5.5 35 | env: DB=MYSQL CORE_RELEASE=3.1 36 | - php: 5.4 37 | env: DB=MYSQL CORE_RELEASE=3.1 38 | - php: 5.3 39 | env: DB=MYSQL CORE_RELEASE=3.1 40 | 41 | before_install: 42 | - pip install --user codecov 43 | 44 | before_script: 45 | - composer self-update || true 46 | - git clone git://github.com/silverstripe-labs/silverstripe-travis-support.git ~/travis-support 47 | - php ~/travis-support/travis_setup.php --source `pwd` --target ~/builds/ss 48 | - cd ~/builds/ss 49 | 50 | script: 51 | # Execute tests with no coverage. This is the fastest option 52 | - "if [ \"$COVERAGE\" = \"0\" ]; then vendor/bin/phpunit $MODULE_PATH/tests/; fi" 53 | 54 | # Execute tests with coverage. Do this for a small 55 | - "if [ \"$COVERAGE\" = \"1\" ]; then vendor/bin/phpunit --coverage-clover=coverage.clover $MODULE_PATH/tests/; fi" 56 | 57 | after_success: 58 | - "if [ \"$COVERAGE\" = \"1\" ]; then mv coverage.clover ~/build/$TRAVIS_REPO_SLUG/; fi" 59 | - cd ~/build/$TRAVIS_REPO_SLUG 60 | - wget https://scrutinizer-ci.com/ocular.phar 61 | - "if [ \"$COVERAGE\" = \"1\" ]; then travis_retry codecov && travis_retry php ocular.phar code-coverage:upload --format=php-clover coverage.clover; fi" 62 | -------------------------------------------------------------------------------- /.tx/config: -------------------------------------------------------------------------------- 1 | [main] 2 | host = https://www.transifex.com 3 | 4 | [silverstripe-forum.master] 5 | file_filter = lang/.yml 6 | source_file = lang/en.yml 7 | source_lang = en 8 | type = YML -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | * Copyright (c) 2008, Silverstripe Ltd. 2 | * All rights reserved. 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions are met: 6 | * * Redistributions of source code must retain the above copyright 7 | * notice, this list of conditions and the following disclaimer. 8 | * * Redistributions in binary form must reproduce the above copyright 9 | * notice, this list of conditions and the following disclaimer in the 10 | * documentation and/or other materials provided with the distribution. 11 | * * Neither the name of the nor the 12 | * names of its contributors may be used to endorse or promote products 13 | * derived from this software without specific prior written permission. 14 | * 15 | * THIS SOFTWARE IS PROVIDED BY Silverstripe Ltd. ``AS IS'' AND ANY 16 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | * DISCLAIMED. IN NO EVENT SHALL Silverstripe Ltd. BE LIABLE FOR ANY 19 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Forum Module 2 | [![Build Status](https://travis-ci.org/silverstripe/silverstripe-forum.svg?branch=master)](https://travis-ci.org/silverstripe/silverstripe-forum) 3 | [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/silverstripe/silverstripe-forum/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/silverstripe/silverstripe-forum/?branch=master) 4 | [![Build Status](https://scrutinizer-ci.com/g/silverstripe/silverstripe-forum/badges/build.png?b=master)](https://scrutinizer-ci.com/g/silverstripe/silverstripe-forum/build-status/master) 5 | [![codecov.io](https://codecov.io/github/silverstripe/silverstripe-forum/coverage.svg?branch=master)](https://codecov.io/github/silverstripe/silverstripe-forum?branch=master) 6 | 7 | [![Latest Stable Version](https://poser.pugx.org/silverstripe/forum/version)](https://packagist.org/packages/silverstripe/forum) 8 | [![Latest Unstable Version](https://poser.pugx.org/silverstripe/forum/v/unstable)](//packagist.org/packages/silverstripe/forum) 9 | [![Total Downloads](https://poser.pugx.org/silverstripe/forum/downloads)](https://packagist.org/packages/silverstripe/forum) 10 | [![License](https://poser.pugx.org/silverstripe/forum/license)](https://packagist.org/packages/silverstripe/forum) 11 | [![Monthly Downloads](https://poser.pugx.org/silverstripe/forum/d/monthly)](https://packagist.org/packages/silverstripe/forum) 12 | [![Daily Downloads](https://poser.pugx.org/silverstripe/forum/d/daily)](https://packagist.org/packages/silverstripe/forum) 13 | 14 | [![Dependency Status](https://www.versioneye.com/php/silverstripe:forum/badge.svg)](https://www.versioneye.com/php/silverstripe:forum) 15 | [![Reference Status](https://www.versioneye.com/php/silverstripe:forum/reference_badge.svg?style=flat)](https://www.versioneye.com/php/silverstripe:forum/references) 16 | 17 | ![codecov.io](https://codecov.io/github/silverstripe/silverstripe-forum/branch.svg?branch=master) 18 | 19 | [![Build Status](https://secure.travis-ci.org/silverstripe/silverstripe-forum.png?branch=0.8)](http://travis-ci.org/silverstripe/silverstripe-forum) 20 | 21 | **Please note: this module is no longer actively maintained.** 22 | 23 | ## Maintainer Contact 24 | 25 | * Sean Harvey (Nickname: sharvey, halkyon) 26 | * Will Rossiter (Nickname: wrossiter, willr) 27 | * Cam Findlay (Nickname: camfindlay) 28 | 29 | ## Requirements 30 | 31 | * SilverStripe 3.1.0+ 32 | 33 | ## Installation & Documentation 34 | 35 | Please see https://github.com/silverstripe/silverstripe-forum/tree/master/docs/en 36 | 37 | ## Contributing 38 | 39 | ### Translations 40 | 41 | Translations of the natural language strings are managed through a 42 | third party translation interface, transifex.com. 43 | Newly added strings will be periodically uploaded there for translation, 44 | and any new translations will be merged back to the project source code. 45 | 46 | Please use https://www.transifex.com/projects/p/silverstripe-forum/ to contribute translations, 47 | rather than sending pull requests with YAML files. 48 | 49 | See the ["i18n" topic](http://doc.silverstripe.org/framework/en/trunk/topics/i18n) on doc.silverstripe.org for more details. 50 | -------------------------------------------------------------------------------- /_config.php: -------------------------------------------------------------------------------- 1 | forClass('Post')->allow_reading_spam) { 8 | return; 9 | } 10 | 11 | $member = Member::currentUser(); 12 | $forum = $this->owner->Forum(); 13 | 14 | // Do Status filtering 15 | 16 | if ($member && is_numeric($forum->ID) && $member->ID == $forum->Moderator()->ID) { 17 | $filter = "\"Post\".\"Status\" IN ('Moderated', 'Awaiting')"; 18 | } else { 19 | $filter = "\"Post\".\"Status\" = 'Moderated'"; 20 | } 21 | 22 | $query->addWhere($filter); 23 | 24 | // Exclude Ghost member posts, but show Ghost members their own posts 25 | $authorStatusFilter = '"AuthorID" IN (SELECT "ID" FROM "Member" WHERE "ForumStatus" = \'Normal\')'; 26 | if ($member && $member->ForumStatus == 'Ghost') { 27 | $authorStatusFilter .= ' OR "AuthorID" = ' . $member->ID; 28 | } 29 | 30 | $query->addWhere($authorStatusFilter); 31 | 32 | $query->setDistinct(false); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /code/formfields/CheckableOption.php: -------------------------------------------------------------------------------- 1 | name = $checkName; 10 | $this->checkbox = new CheckboxField($checkName, "", $value); 11 | if ($readonly) { 12 | $this->checkbox->setDisabled(true); 13 | } 14 | 15 | $this->childField = $childField; 16 | 17 | $children = new FieldList( 18 | $this->childField, 19 | $this->checkbox 20 | ); 21 | 22 | parent::__construct($children); 23 | } 24 | 25 | public function FieldHolder($properties = array()) 26 | { 27 | return FormField::FieldHolder($properties); 28 | } 29 | 30 | public function Message() 31 | { 32 | return $this->childField->Message(); 33 | } 34 | 35 | public function MessageType() 36 | { 37 | return $this->childField->MessageType(); 38 | } 39 | 40 | public function Title() 41 | { 42 | return $this->childField->Title(); 43 | } 44 | 45 | public function Field($properties = array()) 46 | { 47 | return $this->childField->Field() . ' ' . $this->checkbox->Field(); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /code/formfields/ForumCountryDropdownField.php: -------------------------------------------------------------------------------- 1 | Locale) { 30 | return $member->Locale; 31 | } 32 | return i18n::get_locale(); 33 | } 34 | 35 | public function __construct($name, $title = null, $source = null, $value = "", $form = null) 36 | { 37 | if (!is_array($source)) { 38 | // Get a list of countries from Zend 39 | $source = Zend_Locale::getTranslationList('territory', $this->locale(), 2); 40 | 41 | // We want them ordered by display name, not country code 42 | 43 | // PHP 5.3 has an extension that sorts UTF-8 strings correctly 44 | if (class_exists('Collator') && ($collator = Collator::create($this->locale()))) { 45 | $collator->asort($source); 46 | } // Otherwise just put up with them being weirdly ordered for now 47 | else { 48 | asort($source); 49 | } 50 | 51 | // We don't want "unknown country" as an option 52 | unset($source['ZZ']); 53 | } 54 | 55 | parent::__construct($name, ($title===null) ? $name : $title, $source, $value, $form); 56 | } 57 | 58 | public function Field($properties = array()) 59 | { 60 | $source = $this->getSource(); 61 | 62 | if (!$this->value || !isset($source[$this->value])) { 63 | if ($this->config()->get('default_to_locale') && $this->locale()) { 64 | $locale = new Zend_Locale(); 65 | $locale->setLocale($this->locale()); 66 | $this->value = $locale->getRegion(); 67 | } 68 | } 69 | 70 | if (!$this->value || !isset($source[$this->value])) { 71 | $this->value = $this->config()->get('default_country'); 72 | } 73 | 74 | return parent::Field(); 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /code/model/ForumCategory.php: -------------------------------------------------------------------------------- 1 | 'Varchar(100)', 18 | 'StackableOrder' => 'Varchar(2)' 19 | ); 20 | 21 | private static $has_one = array( 22 | 'ForumHolder' => 'ForumHolder' 23 | ); 24 | 25 | private static $has_many = array( 26 | 'Forums' => 'Forum' 27 | ); 28 | 29 | private static $default_sort = "\"StackableOrder\" DESC"; 30 | 31 | /** 32 | * Get the fields for the category edit/ add 33 | * in the complex table field popup window. 34 | * 35 | * @return FieldList 36 | */ 37 | public function getCMSFields_forPopup() 38 | { 39 | 40 | // stackable order is a bit of a workaround for sorting in complex table 41 | $values = array(); 42 | for ($i = 1; $i<100; $i++) { 43 | $values[$i] = $i; 44 | } 45 | 46 | return new FieldList( 47 | new TextField('Title'), 48 | new DropdownField('StackableOrder', 'Select the Ordering (99 top of the page, 1 bottom)', $values) 49 | ); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /code/reports/ForumReport.php: -------------------------------------------------------------------------------- 1 | setFrom('"Member"'); 27 | $membersQuery->setSelect(array( 28 | 'Month' => DB::getConn()->formattedDatetimeClause('"Created"', '%Y-%m'), 29 | 'Signups' => 'COUNT("Created")' 30 | )); 31 | $membersQuery->setGroupBy('"Month"'); 32 | $membersQuery->setOrderBy('"Month"', 'DESC'); 33 | $members = $membersQuery->execute(); 34 | 35 | $output = ArrayList::create(); 36 | foreach ($members as $member) { 37 | $member['Month'] = date('Y F', strtotime($member['Month'])); 38 | $output->add(ArrayData::create($member)); 39 | } 40 | return $output; 41 | } 42 | 43 | public function columns() 44 | { 45 | $fields = array( 46 | 'Month' => 'Month', 47 | 'Signups' => 'Signups' 48 | ); 49 | 50 | return $fields; 51 | } 52 | 53 | public function group() 54 | { 55 | return 'Forum Reports'; 56 | } 57 | } 58 | 59 | /** 60 | * Member Posts Report. 61 | * Lists the Number of Posts made in the forums in the past months categorized 62 | * by month. 63 | */ 64 | class ForumReport_MonthlyPosts extends SS_Report 65 | { 66 | 67 | public function title() 68 | { 69 | return _t('Forum.FORUMMONTHLYPOSTS', 'Forum Posts by Month'); 70 | } 71 | 72 | public function sourceRecords($params = array()) 73 | { 74 | $postsQuery = new SQLQuery(); 75 | $postsQuery->setFrom('"Post"'); 76 | $postsQuery->setSelect(array( 77 | 'Month' => DB::getConn()->formattedDatetimeClause('"Created"', '%Y-%m'), 78 | 'Posts' => 'COUNT("Created")' 79 | )); 80 | $postsQuery->setGroupBy('"Month"'); 81 | $postsQuery->setOrderBy('"Month"', 'DESC'); 82 | $posts = $postsQuery->execute(); 83 | 84 | $output = ArrayList::create(); 85 | foreach ($posts as $post) { 86 | $post['Month'] = date('Y F', strtotime($post['Month'])); 87 | $output->add(ArrayData::create($post)); 88 | } 89 | return $output; 90 | } 91 | 92 | public function columns() 93 | { 94 | $fields = array( 95 | 'Month' => 'Month', 96 | 'Posts' => 'Posts' 97 | ); 98 | 99 | return $fields; 100 | } 101 | 102 | public function group() 103 | { 104 | return 'Forum Reports'; 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /code/search/ForumDatabaseSearch.php: -------------------------------------------------------------------------------- 1 | filter(array( 43 | 'Status' => 'Moderated', //posts my be moderated/visible. 44 | 'Forum.ParentID' => $forumHolderID //posts must be from a particular forum section. 45 | )) 46 | ->filterAny(array( 47 | 'Author.Nickname:PartialMatch:nocase' => $query, 48 | 'Author.FirstName:PartialMatch:nocase' => $query, 49 | 'Author.Surname:PartialMatch:nocase' => $query, 50 | 'Content:PartialMatch:nocase' => $terms 51 | )) 52 | ->leftJoin('ForumThread', 'Post.ThreadID = ForumThread.ID'); 53 | 54 | // Work out what sorting method 55 | switch ($order) { 56 | case 'newest': 57 | $posts = $posts->sort('Created', 'DESC'); 58 | break; 59 | case 'oldest': 60 | break; 61 | case 'title': 62 | $posts = $posts->sort(array('Thread.Title'=>'ASC')); 63 | break; 64 | default: 65 | $posts = $posts->sort(array( 66 | 'Thread.Title'=>'ASC', 67 | 'Created' => 'DESC' 68 | )); 69 | break; 70 | } 71 | 72 | return $posts ? $posts: new DataList(); 73 | } 74 | 75 | /** 76 | * Callback when this Provider is loaded. For dealing with background processes 77 | */ 78 | public function load() 79 | { 80 | return true; 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /code/search/ForumSearch.php: -------------------------------------------------------------------------------- 1 | load(); 43 | } else { 44 | user_error("$engine must implement the ForumSearchProvider interface"); 45 | } 46 | } 47 | 48 | /** 49 | * Return the search class for the forum search 50 | * 51 | * @return String 52 | */ 53 | public static function get_search_engine() 54 | { 55 | return self::$search_engine; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /code/search/ForumSearchProvider.php: -------------------------------------------------------------------------------- 1 | cleanQuery($query); 34 | 35 | // Default weights put title ahead of content, which effectively 36 | // puts threads ahead of posts. 37 | $fieldWeights = array("Title" => 5, "Content" => 1); 38 | 39 | // Work out what sorting method 40 | switch ($order) { 41 | case 'date': 42 | $mode = 'fields'; 43 | 44 | $sortarg = array('Created' => 'DESC'); 45 | break; 46 | case 'title': 47 | $mode = 'fields'; 48 | 49 | $sortarg = array('Title' => 'ASC'); 50 | break; 51 | default: 52 | // Sort by relevancy, but add the calculated age band, 53 | // which will push up more recent content. 54 | $mode = 'eval'; 55 | $sortarg = "@relevance + _ageband"; 56 | 57 | // Downgrade the title weighting, which will give more 58 | // emphasis to age. 59 | $fieldWeights = array("Title" => 1, "Content" => 1); 60 | 61 | break; 62 | } 63 | 64 | $cachekey = $query.':'.$offset; 65 | if (!isset($this->search_cache[$cachekey])) { 66 | // Determine the classes to search. This always include 67 | // ForumThread and Post, since we decorated them. It also 68 | // includes Forum and Member if they are decorated, as 69 | // appropriate. 70 | $classes = array('ForumThread', 'Post'); 71 | foreach (self::$extra_search_classes as $c) { 72 | if (Object::has_extension($c, 'SphinxSearchable')) { 73 | $classes[] = $c; 74 | } 75 | } 76 | 77 | $this->search_cache[$cachekey] = SphinxSearch::search($classes, $query, array( 78 | 'start' => $offset, 79 | 'pagesize' => $limit, 80 | 'sortmode' => $mode, 81 | 'sortarg' => $sortarg, 82 | 'field_weights' => $fieldWeights 83 | )); 84 | } 85 | 86 | return $this->search_cache[$cachekey]->Matches; 87 | } 88 | 89 | // Clean up the query text with some combinatiosn that are known to 90 | // cause problems for sphinx, including: 91 | // - term starts with $ 92 | // - presence of /, ^, @, !, (, ) 93 | // we just remove the chars when we see these 94 | public function cleanQuery($query) 95 | { 96 | $query = trim($query); 97 | if (!$query) { 98 | return $query; 99 | } 100 | if ($query[0] == "$") { 101 | $query = substr($query, 1); 102 | } 103 | $query = str_replace( 104 | array("/", "^", "@", "!", "(", ")", "~"), 105 | array("", "", "", "", "", "", ""), 106 | $query 107 | ); 108 | return $query; 109 | } 110 | 111 | public function load() 112 | { 113 | // Add the SphinxSearchable extension to ForumThread and Post, 114 | // with an extra computed column that gives an age band. The 115 | // age bands are based on Created, as follows: 116 | // _ageband = 10 where object is <30 days old 117 | // _ageband = 9 where object is 30-90 days old 118 | // _ageband = 8 where object is 90-180 days old 119 | // _ageband = 7 where object is 180 days to 1 year old 120 | // _ageband = 6 older than one year. 121 | // The age band is calculated so that when added to @relevancy, 122 | // it can be sorted. This calculation is valid for data that 123 | // ages like Post and ForumThread, but not for other classes 124 | // we can search, like Member and Forum. In those cases, 125 | // we still have to add the extra field _ageband, but we set it 126 | // to 10 so it's sorted like it's recent. 127 | DataObject::add_extension('ForumThread', 'SphinxSearchable'); 128 | Object::set_static("ForumThread", "sphinx", array( 129 | "extra_fields" => array("_ageband" => "if(datediff(now(),LastEdited)<30,10,if(datediff(now(),LastEdited)<90,9,if(datediff(now(),LastEdited)<180,8,if(datediff(now(),LastEdited)<365,7,6))))") 130 | )); 131 | DataObject::add_extension('Post', 'SphinxSearchable'); 132 | Object::set_static("Post", "sphinx", array( 133 | "extra_fields" => array("_ageband" => "if(datediff(now(),Created)<30,10,if(datediff(now(),Created)<90,9,if(datediff(now(),Created)<180,8,if(datediff(now(),Created)<365,7,6))))") 134 | )); 135 | 136 | // For classes that might be indexed, add the extra field if they 137 | // are decorated with SphinxSearchable. 138 | foreach (self::$extra_search_classes as $c) { 139 | if (Object::has_extension($c, 'SphinxSearchable')) { 140 | $conf = Object::uninherited_static($c, "sphinx"); 141 | if (!$conf) { 142 | $conf = array(); 143 | } 144 | if (!isset($conf['extra_fields'])) { 145 | $conf['extra_fields'] = array(); 146 | } 147 | $conf['extra_fields']['_ageband'] = "10"; 148 | Object::set_static($c, "sphinx", $conf); 149 | } 150 | } 151 | } 152 | } 153 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "silverstripe/forum", 3 | "description": "Forum module for SilverStripe.", 4 | "type": "silverstripe-module", 5 | "keywords": ["silverstripe", "forum"], 6 | "license": "BSD-3-Clause", 7 | "authors": [{ 8 | "name": "Sean Harvey", 9 | "email": "sean@silverstripe.com" 10 | }, { 11 | "name": "Will Rossiter", 12 | "email": "will@fullscreen.io" 13 | }], 14 | "extra": { 15 | "branch-alias": { 16 | "dev-master": "1.0.x-dev" 17 | } 18 | }, 19 | "require": { 20 | "silverstripe/framework": "~3.1", 21 | "silverstripe/cms": "~3.1" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /css/Forum.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Styling for the default SilverStripe Forum 3 | */ 4 | 5 | .clear { 6 | clear:both; 7 | height:0; 8 | } 9 | 10 | /* Header */ 11 | .forum-header { 12 | } 13 | .forum-header-forms { 14 | float:right; 15 | width:300px; 16 | } 17 | .forum-header-forms form { 18 | margin:0; 19 | } 20 | .forum-jump { 21 | } 22 | .forum-jump label { 23 | display:none; 24 | } 25 | .forum-search { 26 | } 27 | .forum-search label { 28 | display:none; 29 | } 30 | 31 | /* Search Results */ 32 | .forum-pagination .page-numbers { 33 | text-align: center; 34 | } 35 | .forum-pagination ul li { 36 | display: inline; 37 | } 38 | 39 | 40 | /* Content */ 41 | .forum-message-admin {} 42 | .forum-message-suspended {} 43 | 44 | .forum-topics { 45 | width:100%; 46 | margin:0; 47 | } 48 | .forum-topics tr { 49 | border:1px solid #ccc; 50 | border-bottom:none; 51 | } 52 | .forum-topics tr:nth-child(2n+1) { 53 | background-color:#f5f5f5; 54 | } 55 | .forum-topics tr:last-child { 56 | border:1px solid #ccc; 57 | } 58 | .forum-topics tr.category { 59 | background:#777; 60 | color:#FFF; 61 | text-align:left; 62 | } 63 | .forum-topics tr.author { 64 | background:#EDEDED; 65 | } 66 | 67 | .forum-topics .highlight { 68 | background-color:yellow; 69 | } 70 | 71 | .forum-topics .hidden { 72 | display:none; 73 | } 74 | 75 | .forum-topics th, .forum-topics td { 76 | padding:8px 10px; 77 | margin:0; 78 | text-align:left; 79 | } 80 | 81 | 82 | .forum-topics tr.category a { 83 | background-color:#fff; 84 | padding:2px 5px; 85 | text-decoration:none; 86 | border-radius:3px; 87 | } 88 | .forum-topics tr.category a:hover { 89 | background-color:#f5f5f5; 90 | } 91 | 92 | .forum-post { 93 | padding:10px; 94 | border:1px solid #ccc; 95 | } 96 | .forum-post:nth-child(2n) { 97 | background-color:#f5f5f5; 98 | } 99 | .post-date { 100 | color:#A79999; 101 | font-size:0.9em; 102 | margin:0; 103 | } 104 | .author-link { 105 | font-size:1.1em; 106 | } 107 | .forum-post .user-info { 108 | float:left; 109 | width:150px; 110 | text-align:left; 111 | } 112 | .forum-post .user-content { 113 | margin-left:190px; 114 | padding:8px 0; 115 | } 116 | .forum-post .avatar { 117 | border:5px solid #ccc; 118 | margin:10px 0; 119 | } 120 | .forum-post .forum-rank { 121 | background:#FDF8DA; 122 | color:#E1AD09; 123 | font-size:0.9em; 124 | padding:2px 5px; 125 | } 126 | .forum-post .post-modifiers { 127 | margin:10px 0; 128 | } 129 | .forum-post .post-modifiers a { 130 | color:#b22222; 131 | margin-right:.5em; 132 | } 133 | .forum-post .post-type { 134 | margin:10px 0; 135 | } 136 | 137 | 138 | /* Footer */ 139 | .forum-admin-features { 140 | margin:20px 0; 141 | } 142 | .forum-footer { 143 | margin:20px 0; 144 | } 145 | .forum-footer p { 146 | } 147 | .forum-footer p strong { 148 | } 149 | 150 | 151 | -------------------------------------------------------------------------------- /css/Forum_CMS.css: -------------------------------------------------------------------------------- 1 | /* Styling for forum CMS fields */ 2 | 3 | 4 | #ForumRefreshTime label.left { 5 | display: inline; 6 | float: none; 7 | } 8 | #ForumRefreshTime input { 9 | width: 20px; 10 | padding: 0px; 11 | vertical-align: center; 12 | } 13 | -------------------------------------------------------------------------------- /docs/en/Configuration.md: -------------------------------------------------------------------------------- 1 | Configuration 2 | ================================ 3 | 4 | A number of options are configurable in the forum module. Most are in the CMS and can be customized on a per forum holder basis 5 | which are configurable from the forum holder page. 6 | 7 | An example of options which are configurable in the CMS include 8 | 9 | * Show In Categories - Group multiple forums into a 'category'. Eg Modules might be a category and Ecommerce, Forum would be forums in that category 10 | * Display Signatures - Allow people to attach signatures to their posts 11 | * Forbidden Words - List of words which will be removed from posts 12 | * Viewers - set who can view this forum 13 | * Posters - set who can post to this forum 14 | -------------------------------------------------------------------------------- /docs/en/Features.md: -------------------------------------------------------------------------------- 1 | Features 2 | ================================ 3 | 4 | The forum module contains many features which aren't turned on by default or are configurable in the CMS. For a full list of configuration 5 | options see /forum/docs/Configuration.md 6 | 7 | * Allows multiple forum holders which can have multiple forums, each with separate security permissions that can be adjusted inside the CMS 8 | * Forums can be grouped in categories 9 | * RSS feeds for each forum, overall and search results 10 | * Member profiles showing recent posts 11 | * Write Posts in BBCode and attach multiple files to a post 12 | * Email Topic subscription (subscribe to a topic and get an email when someone posts something new) 13 | * Sticky Posts (both localized to a forum or an entire forum holder) 14 | * Forum Moderators. Give specific people access to editing / deleting posts. Customizable on a forum by forum level 15 | * Support for smilies in posts. 16 | * Gravatar support. 17 | * Supports custom signatures. 18 | * View Counter for posts. 19 | * Forbidden Word Check 20 | * Reports. 21 | - Includes recent members, highest ranking members, popular posts, threads and forums 22 | - CMS Reports include: total people joined this month, total posts this month 23 | -------------------------------------------------------------------------------- /docs/en/Installation.md: -------------------------------------------------------------------------------- 1 | # Installation 2 | 3 | ##Composer (recommended) 4 | 5 | Run the following [composer](http://doc.silverstripe.org/framework/en/installation/composer) command in a terminal 6 | 7 | ``` 8 | composer require silverstripe/forum dev-master 9 | ``` 10 | 11 | Alternatively, you can edit the projects composer.json file to require the module dependency. 12 | 13 | ``` 14 | "require": { 15 | "silverstripe/forum": "dev-master" 16 | } 17 | ``` 18 | 19 | Run a composer update in your terminal to get the files and automatically put them in the correct place. 20 | 21 | ``` 22 | composer update 23 | ``` 24 | 25 | Rebuild your database (see below). 26 | 27 | ## Manual directory placement 28 | 29 | Place this directory in the root of your SilverStripe installation. 30 | 31 | Make sure it is named forum and not forum-v2 or any other combination. 32 | 33 | Rebuild your database (see below). 34 | 35 | 36 | ## Rebuild database 37 | 38 | Visit http://www.yoursite.com/dev/build/ in your browser or via the SilverStripe command line tool, [sake](http://doc.silverstripe.org/framework/en/topics/commandline) 39 | 40 | ``` 41 | sake dev/build flush=1 42 | ``` 43 | 44 | The CMS should now have "Forum Holder" and "Forum" page types in the page type dropdown. By default SilverStripe will create 45 | a default forum and a forum holder. 46 | 47 | You should make sure each ForumHolder page type only has Forum children and each Forum has it's parent as a forum holder. Eg not nested in another forum. 48 | 49 | The module supports multiple Forum Holders, each with their own permissions and multiple Forums. 50 | 51 | 52 | For more information on setting up the forums see the [configuration documentation](Configuration.md) 53 | 54 | -------------------------------------------------------------------------------- /docs/en/Search.md: -------------------------------------------------------------------------------- 1 | Search 2 | ================================ 3 | 4 | A basic forum specific search is implemented using the SilverStripe ORM layer. 5 | 6 | The search form is part of the ForumHeader.ss include, override this in your theme of you need to customise this. 7 | 8 | The forum search results can be styled by creating `ForumHolder_search.ss` layout for your theme. 9 | 10 | For a more advanced search implementation you may wish to look into the [fulltextsearch module](https://github.com/silverstripe-labs/silverstripe-fulltextsearch). 11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/en/userguide/01_Set_up.md: -------------------------------------------------------------------------------- 1 | ## Setup 2 | 3 | ### Creating a new forum 4 | 5 | Click on the new "Forums" Forum Holder page. Now click the "Add new" button at the top of the "site tree" side-pane. Go ahead and select "Forum" from the list and then hit the "Create" button. 6 | 7 | ![Add new forum](_images/new-forum.jpg) 8 | 9 | You will notice that a new forum page has been created, with the name of "New Forum". 10 | 11 | ![New forum created](_images/created-new-forum.jpg) 12 | 13 | Once you have created the new forum page it should automatically open up the editing pane. 14 | 15 | If you head back to the pages pane you will also notice it has a yellow "losenge" saying "Draft" next to "New Forum". "Draft" pages are new and have never been published. 16 | 17 | ![Draft forum](_images/draft-forum.jpg) 18 | 19 |
20 | ### Notes: 21 | 22 | Don't worry if you create your forum in the "wrong" place. Pages can be moved and re-ordered easily, and we will cover that under "[Managing Your Site](managing-your-site)". 23 |
24 | 25 | ### Naming and editing your forum 26 | 27 | In the Editing Pane, to edit your forum, you want to click on the "Content" tab if it it not already selected, and then the "Main Content" subtab. 28 | 29 | Here you will be presented with three forms. The first is for the "Page Name" - this will define what the forum will be known as in the CMS, but it will also be used to form the "default" navigation label and URL for the page, though both can be changed manually. 30 | 31 | Below it, you will find the Navigation Label. This will define what the forum will show up as when listed in forum page on the public-facing front page of your site. If you fill in the Page Name first, it will automatically put the page name in the navigation label field. It is usually, but not always, a good idea to leave it the same. If you wish to change the navigation label but not the page name, you can do so here. 32 | 33 | Finally, there is the Content box. In the content box, you can write a description of the forum's contents. This is optional but helps to eliminate ambiguity. 34 | 35 | ### Enabling, creating, and using categories 36 | 37 | If you have many forums on your site, you may want to organise them by category. For example, if your website was about farming, and had a separate forums for each product, you may want to group them into categories, such as: Fruits, Veggies, Meat & Dairy, and Livestock. 38 | 39 | ![Adding categories](_images/add-category.jpg) 40 | 41 | To enable categories, click on the forum holder "Forums" in the left hand "PageTree" Pane. (The forum holder is the root page of all your forums.) In the Editing Pane, click on the "Content" tab, then "Settings". Check the box next to "Show forums in categories," and hit save. 42 | 43 | ![Enable categories](_images/show-forum-category.jpg) 44 | 45 | To create categories, click on any of your site's forums in the Contents pane, and click on the "Category" tab on the editing pane. Click on Add Forum Category. This will bring up a pop-up menu where you can add a category title and set a priority for the category. Categories with a higher priority (100 is high, 1 is low) will be listed before lower priority categories. Hit Save. You may enter multiple categories at this time, by typing in additional category names and hitting Save after each one. When you are finished adding categories, close the window. 46 | 47 | ![Create categories](_images/add-forum-category-fields.jpg) 48 | 49 | To sort forums into different categories, click on each forum you wish to sort in the Contents pane, and go to the "Category" tab in the Editing Pane on each one. Select the category you wish each forum to be in, in turn, and hit Save in the bottom right corner of the Editing pane. 50 | 51 | ![Sorting Forums into categories](_images/category-list.jpg) -------------------------------------------------------------------------------- /docs/en/userguide/02_Using_forum.md: -------------------------------------------------------------------------------- 1 | # Using the Forum 2 | 3 | To create a new topic, head to the front-end of the live website. Either log-in under your username, or, if you do not have one, register a new username. 4 | 5 | ## Registering a new username 6 | 7 | Head to the public-facing website (the "frontend") and browse to the forum. Click on the "Register" link. You will be brought to a page where you can enter in your personal details. You may enter in your personal information in the fields. 8 | 9 | Your nickname and any field you mark with a checkbox will be shown in your public profile on the forum. If you do not want a field to show up in your publicly accessible profile, make sure that the checkmark next to these fields are unchecked. 10 | 11 | If you have an avatar (a small personal photograph or illustration which helps people visually identify you,) you may also upload it at this time, by either dragging and dropping an image into the "Drop Files" area or pressing the "From Files" button and choosing a .JPG, .GIF, or .PNG file from your hard drive. 12 | 13 | ## Signing in with a username 14 | 15 | To sign in with your username, head to the public-facing website (the "frontend") and browse to the forum. Click on the "Login" link. Enter your user "nickname" and the password you chose during registration. 16 | 17 |
18 | ### Notes: 19 | 20 | If you have forgotten your password, click on "Forgot Password," and follow the steps to reset or recover your password. 21 |
22 | 23 | ## Starting a new topic (a.k.a. Threads) 24 | 25 | To start a new topic, head to the public-facing website, and browse to the forum. Sign in, and click on the forum you would like to add the new topic to. Click on "Start a new topic," and enter in the title of the topic, as well as the content of the first post in the topic, and hit the "Post" button. The change should show up immediately. 26 | Editing a previously published post (as the post author) 27 | 28 | Once you have made a post, you may edit or delete a post you have authored, by browsing to that post in the forum and hitting the "Edit" or "Delete" links respectively. -------------------------------------------------------------------------------- /docs/en/userguide/03_Administration.md: -------------------------------------------------------------------------------- 1 | # Forum Administration 2 | 3 | ## Topics 4 | 5 | ### Editing or deleting a previously published post (as an administrator) 6 | 7 | If you have administrative access, you may edit or delete any post made by any poster, by browsing to that point and hitting the "Edit" or "Delete" links respectively. 8 | 9 | ### Making threads sticky 10 | 11 | To make a thread "sticky," that is, to make sure it always appears at the top of the topic listings for the forum, click the checkbox next to "Is this a sticky thread?" and hit Save. 12 | 13 | To make a sticky thread global - that is, to make sure it always appears at the top of every topic listing on every forum on your site, click the checkbox next to "Is this a Global Sticky" as well, and hit Save. 14 | Locking threads as read only 15 | 16 | To prevent people from making changes to a topic, (also known as "locking" a topic), click the checkbox next to "Is this a Read only Thread?" and hit Save. 17 | 18 | ### Changing thread forums 19 | 20 | To move a topic from one forum to another, browse to the topic in question, and choose the forum you wish to move the thread to under the "Change Thread Forum" drop-down box, and hit Save. 21 | 22 | ## Users 23 | 24 | To administrate users, make sure you are in the CMS "backend" for administration, and press the "Security" navigation tab. This should give you a list of all the users that have registered on the forum or website. 25 | 26 | ![Administrating forum users](_images/forum-users.png) 27 | 28 | ### Deleting user accounts 29 | 30 | To delete a user account, click on the red "X" icon next to the username for the account. This will remove the account from the forum and website, and the user will not be able to log in using that name again. 31 | 32 | ### Assigning moderation responsibilities to users 33 | 34 | To assign moderation responsibilities, click on the "edit" icon next to the username for the account. This will bring up the profile of the user. 35 | 36 | ![Edit forum user](_images/edit-forum-user.jpg) 37 | 38 | Click on the "Forum" tab in the user profile, and change the "User Rating" drop-down menu to "Moderator." Hit Save. 39 | 40 | ![User rating](_images/edit-user-forum-tab.jpg) 41 | 42 | Click on the "Moderated Forums" tab in the user profile, and place a checkmark next to any forums the user will be given moderation access to. Hit Save. 43 | 44 | ![Moderated forums](_images/moderated-forums.jpg) 45 | 46 | After you are done, click the "security" link in the breadcrumbs at the top of the screen and it will take you back to the list of users. 47 | 48 |
49 | ### Notes: 50 | 51 | While this limited information will suffice for forum administration, administrating users across your SilverStripe site is done inside the 'Security' section of the CMS. 52 |
-------------------------------------------------------------------------------- /docs/en/userguide/_images/add-category.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/docs/en/userguide/_images/add-category.jpg -------------------------------------------------------------------------------- /docs/en/userguide/_images/add-forum-category-fields.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/docs/en/userguide/_images/add-forum-category-fields.jpg -------------------------------------------------------------------------------- /docs/en/userguide/_images/category-list.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/docs/en/userguide/_images/category-list.jpg -------------------------------------------------------------------------------- /docs/en/userguide/_images/created-new-forum.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/docs/en/userguide/_images/created-new-forum.jpg -------------------------------------------------------------------------------- /docs/en/userguide/_images/draft-forum.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/docs/en/userguide/_images/draft-forum.jpg -------------------------------------------------------------------------------- /docs/en/userguide/_images/edit-forum-user.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/docs/en/userguide/_images/edit-forum-user.jpg -------------------------------------------------------------------------------- /docs/en/userguide/_images/edit-user-forum-tab.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/docs/en/userguide/_images/edit-user-forum-tab.jpg -------------------------------------------------------------------------------- /docs/en/userguide/_images/forum-users.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/docs/en/userguide/_images/forum-users.png -------------------------------------------------------------------------------- /docs/en/userguide/_images/moderated-forums.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/docs/en/userguide/_images/moderated-forums.jpg -------------------------------------------------------------------------------- /docs/en/userguide/_images/new-forum.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/docs/en/userguide/_images/new-forum.jpg -------------------------------------------------------------------------------- /docs/en/userguide/_images/show-forum-category.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/docs/en/userguide/_images/show-forum-category.jpg -------------------------------------------------------------------------------- /docs/en/userguide/index.md: -------------------------------------------------------------------------------- 1 | title: Forums 2 | summary: Setting up and running forums on your website. 3 | 4 | # Forums 5 | 6 | ## In this section: 7 | 8 | * Learn how to manage forums. 9 | * Register a new username 10 | * Learn how to create new topics, (a.k.a. threads) 11 | * Learn how to create, edit, and publish posts. 12 | * Learn how to administrate topics. 13 | * Learn how to administrate forum users. 14 | 15 | ## Before we begin 16 | Make sure that your SilverStripe installation has the [Forum](http://addons.silverstripe.org/add-ons/silverstripe/forum) module installed. 17 | 18 | Make sure you are in the "Pages" section on the navigation tabs in the Content Management System backend (CMS) and you are on your "Forums" Forum Holder page. If you do not have a forum holder page, you can create one by clicking on the top level of your website in the CMS, or the page you would like the forum to be a subpage of, hitting the "Add New" button on the top of the pane. Choose "Forum Holder" from the list, and then press the "Create" button. 19 | 20 | ## Forum features 21 | 22 | * [Set up a forum](set_up) 23 | * [Using the forum](using_forum) 24 | * [Forum administration](administration) -------------------------------------------------------------------------------- /images/forum/forum-postChildren.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/images/forum/forum-postChildren.png -------------------------------------------------------------------------------- /images/forum/t.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/images/forum/t.gif -------------------------------------------------------------------------------- /images/forum_startTopic.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/images/forum_startTopic.gif -------------------------------------------------------------------------------- /images/forummember_holder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/images/forummember_holder.gif -------------------------------------------------------------------------------- /images/forummember_holdersml.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/images/forummember_holdersml.gif -------------------------------------------------------------------------------- /images/gotoEnd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/images/gotoEnd.gif -------------------------------------------------------------------------------- /images/gotoTop.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/images/gotoTop.gif -------------------------------------------------------------------------------- /images/replyButton.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/images/replyButton.gif -------------------------------------------------------------------------------- /images/required.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/images/required.gif -------------------------------------------------------------------------------- /images/right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/images/right.png -------------------------------------------------------------------------------- /images/spacer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/images/spacer.gif -------------------------------------------------------------------------------- /images/subscribeButton.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/images/subscribeButton.gif -------------------------------------------------------------------------------- /images/treeicons/user-file.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/images/treeicons/user-file.gif -------------------------------------------------------------------------------- /images/unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/silverstripe-archive/silverstripe-forum/d467cedfd5a4ef733f5a203fb95e2675a42f81d8/images/unknown.png -------------------------------------------------------------------------------- /javascript/Forum.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Javascript features for the SilverStripe forum module. These have been 3 | * ported over from the old Prototype system 4 | * 5 | * @package forum 6 | */ 7 | 8 | (function($) { 9 | $(document).ready(function() { 10 | /** 11 | * Handle the OpenID information Box. 12 | * It will open / hide the little popup 13 | */ 14 | 15 | 16 | // default to hiding the BBTags 17 | if($("#BBTagsHolder")) { 18 | $("#BBTagsHolder").hide().removeClass("showing"); 19 | } 20 | 21 | $("#ShowOpenIDdesc").click(function() { 22 | if($("#OpenIDDescription").hasClass("showing")) { 23 | $("#OpenIDDescription").hide().removeClass("showing"); 24 | } else { 25 | $("#OpenIDDescription").show().addClass("showing"); 26 | } 27 | return false; 28 | }); 29 | 30 | $("#HideOpenIDdesc").click(function() { 31 | $("#OpenIDDescription").hide(); 32 | return false; 33 | }); 34 | 35 | 36 | /** 37 | * BBCode Tools 38 | * While editing / replying to a post you can get a little popup 39 | * with all the BBCode tags 40 | */ 41 | $("#BBCodeHint").click(function() { 42 | if($("#BBTagsHolder").hasClass("showing")) { 43 | $(this).text("View Formatting Help"); 44 | $("#BBTagsHolder").hide().removeClass("showing"); 45 | } else { 46 | $(this).text("Hide Formatting Help"); 47 | $("#BBTagsHolder").show().addClass("showing"); 48 | } 49 | return false; 50 | }); 51 | 52 | /** 53 | * MultiFile Uploader called on Reply and Edit Forms 54 | */ 55 | $('#Form_PostMessageForm_Attachment').MultiFile({ namePattern: '$name-$i' }); 56 | 57 | /** 58 | * Delete post Link. 59 | * 60 | * Add a popup to make sure user actually wants to do 61 | * the dirty and remove that wonderful post 62 | */ 63 | 64 | $('.postModifiers a.deletelink').click(function(){ 65 | var link = $(this); 66 | var first = $(this).hasClass('firstPost'); 67 | 68 | if(first) { 69 | if(!confirm("Are you sure you wish to delete this thread?\nNote: This will delete ALL posts in this thread.")) return false; 70 | } else { 71 | if(!confirm("Are you sure you wish to delete this post?")) return false; 72 | } 73 | 74 | $.post($(this).attr("href"), function(data) { 75 | if(first) { 76 | // if this is the first post then we have removed the entire thread and therefore 77 | // need to redirect the user to the parent page. To get to the parent page we convert 78 | // something similar to general-discussion/show/1 to general-discussion/ 79 | var url = window.location.href; 80 | 81 | var pos = url.lastIndexOf('/show'); 82 | 83 | if(pos > 0) window.location = url.substring(0, pos); 84 | } 85 | else { 86 | // deleting a single post. 87 | link.parents(".singlePost").fadeOut(); 88 | } 89 | }); 90 | 91 | return false; 92 | }); 93 | 94 | /** 95 | * Mark Post as Spam Link. 96 | * It needs to warn the user that the post will be deleted 97 | */ 98 | $('.postModifiers a.markAsSpamLink').click(function(){ 99 | var link = $(this); 100 | var first = $(this).hasClass('firstPost'); 101 | 102 | if(!confirm("Are you sure you wish to mark this post as spam? This will remove the post, and suspend the user account")) return false; 103 | 104 | $.post($(this).attr("href"), function(data) { 105 | if(first) { 106 | // if this is the first post then we have removed the entire thread and therefore 107 | // need to redirect the user to the parent page. To get to the parent page we convert 108 | // something similar to general-discussion/show/1 to general-discussion/ 109 | var url = window.location.href; 110 | 111 | var pos = url.lastIndexOf('/show'); 112 | 113 | if(pos > 0) window.location = url.substring(0, pos); 114 | } 115 | else { 116 | window.location.reload(true); 117 | } 118 | }); 119 | 120 | return false; 121 | }); 122 | 123 | /** 124 | * Delete an Attachment via AJAX 125 | */ 126 | $('a.deleteAttachment').click(function() { 127 | if(!confirm("Are you sure you wish to delete this attachment")) return false; 128 | var id = $(this).attr("rel"); 129 | 130 | $.post($(this).attr("href"), function(data) { 131 | $("#CurrentAttachments li.attachment-"+id).fadeOut(); // hide the deleted attachment 132 | }); 133 | 134 | return false; 135 | }); 136 | 137 | /** 138 | * Subscribe / Unsubscribe button 139 | * 140 | * Note: The subscribe and unsubscribe buttons should share a common parent 141 | */ 142 | $("a.subscribe").click(function(e) { 143 | $.post($(this).attr("href"), function(data) { 144 | if(data == 1) { 145 | var anchor = $(e.target); 146 | anchor.hide().addClass("hidden"); 147 | anchor.parent().find("a.unsubscribe").show().removeClass("hidden"); 148 | } 149 | }); 150 | return false; 151 | }); 152 | 153 | $("a.unsubscribe").click(function(e) { 154 | $.post($(this).attr("href"), function(data) { 155 | if(data == 1) { 156 | var anchor = $(e.target); 157 | anchor.hide().addClass("hidden"); 158 | anchor.parent().find("a.subscribe").show().removeClass("hidden"); 159 | } 160 | }); 161 | return false; 162 | }); 163 | 164 | 165 | 166 | /** 167 | * Ban / Ghost member confirmation 168 | */ 169 | $('a.banLink, a.ghostLink').click(function() { 170 | var action = $(this).is('.banLink') ? 'ban' : 'ghost'; 171 | 172 | if(!confirm("Are you sure you wish to "+action+" this user? This will hide all posts by this user on all forums")) { 173 | return false; 174 | } 175 | }); 176 | 177 | }) 178 | })(jQuery); 179 | -------------------------------------------------------------------------------- /javascript/ForumAccess.js: -------------------------------------------------------------------------------- 1 | (function($){ 2 | 3 | /* Show or hide PosterGroups based on initial value */ 4 | $('.ForumCanPostTypeSelector').entwine({ 5 | onadd: function(){ 6 | var state = this.find('[name=CanPostType]:checked').val(); 7 | $('#PosterGroups').css({display: state == "OnlyTheseUsers" ? "block" : "none"}); 8 | this._super(); 9 | } 10 | }); 11 | 12 | /* Any value of the PostTypeSelector hides the PosterGroups element */ 13 | $('.ForumCanPostTypeSelector input[type=radio]').entwine({ 14 | onclick: function(){ 15 | $('#PosterGroups').css({display: 'none'}); 16 | } 17 | }); 18 | 19 | /* Except OnlyTheseUsers which shows it */ 20 | $('.ForumCanPostTypeSelector input[type=radio][value=OnlyTheseUsers]').entwine({ 21 | onclick: function(){ 22 | $('#PosterGroups').css({display: 'block'}); 23 | } 24 | }); 25 | })(jQuery); 26 | -------------------------------------------------------------------------------- /lang/_manifest_exclude: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lang/ar.yml: -------------------------------------------------------------------------------- 1 | ar: 2 | Forum: 3 | ACCESSATTACH: "هل يستطيع المستخدمون إرفاق الملفات ؟" 4 | ACCESSPOST: "من يستطيع الكتابة في المنتدى ؟" 5 | BBCODEHINT: "عرض مساعدة في التنسيق" 6 | EDITPOST: "تعديل موضوع" 7 | FORUMMONTHLYPOSTS: "تدوينات المنتدى بالشهر" 8 | FORUMSIGNUPS: "المسجلون الجدد بالشهر" 9 | LOGINAGAIN: "تم تسجيل خروجك من المنتديات. إذا أردت الدخول مرة أخرى فضلاً أدخل اسم المستخدم و كلمة المرور بالأسفل" 10 | LOGINALREADY: "عذراً لكن لا يسمح لك بمشاهدة هذا المنتدى حتى تسجل الدخول. إذا أردت الدخول بحساب آخر . انظر بالأسفل" 11 | LOGINDEFAULT: "أدخل بريدك الإلكتروني و الرقم السري لمشاهدة هذا المنتدى" 12 | LOGINTOPOST: "يجب تسجيل الدخول قبل كتابة موضوع في المنتدى. فضلاً قم بالتسجيل بالأسفل" 13 | LOGINTOPOSTAGAIN: "تم تسجيل خروجك من المنتديات, إذا أردت الدخول مرة أخرى فأدخل اسم المستخدم و كلمة المرور" 14 | LOGINTOPOSTLOGGEDIN: "عذراً ، لايمكنك المشاركة بدون تسجيل الدخول. يمكنك الدخول بحساب آخر بالأسفل. إذا سجلت الدخول و لم تتمكن من المشاركة فأنت لا تملك الصلاحيات الخاصة بالكتابة " 15 | NEWTOPIC: "إنشاء موضوع جديد" 16 | NO: "لا" 17 | PLURALNAME: "المنتديات" 18 | POSTTOTOPIC: "مواضيع في '%s'" 19 | READANYONE: "الجميع" 20 | READLIST: "فقط هؤلاء الأشخاص ( اختر من القائمة)" 21 | READLOGGEDIN: "المستخدمين المتواجدين حالياً" 22 | READNOONE: "لا أحد. المنتدى للقراءة فقط" 23 | REMOVE: "حذف" 24 | RSSFORUM: "المشاركات إلى منتدى '%s'" 25 | RSSFORUMS: "المشاركات لكل المنتديات" 26 | SINGULARNAME: "المنتدى" 27 | SUBSCRIBETOPIC: "شارك في هذا الموضوع ( تستقبل الرسائل البريدية لتنبيهك في حالة وجود ردود جديدة)" 28 | YES: "نعم" 29 | Forum_ss: 30 | ANNOUNCEMENTS: "الإعلانات" 31 | GOTOTHISTOPIC: "اذهب إلى الموضوع %s" 32 | LASTPOST: "آخر موضوع" 33 | NEWTOPIC: "اضغط هنا لكتابة موضوع جديد" 34 | NEWTOPICIMAGE: "موضوع جديد" 35 | NEWTOPICTEXT: "اضغط هنا لبداية موضوع جديد" 36 | NOTOPICS: "لايوجد مواضيع في هذا المنتدى" 37 | POSTS: "المواضيع" 38 | PREVLNK: "الصفحة السابقة" 39 | READONLYFORUM: "هذا المنتدى للقراءة فقط. لا تستطيع الرد أو كتابة موضوع جديد" 40 | TOPIC: "الموضوع" 41 | ForumAdmin_right_ss: 42 | EDITPAGE: "تعديل الصفحة" 43 | WELCOME: "مرحباً بك في %s! فضلاً اختر أحد المدخلات من القائمة اليسرى" 44 | ForumCategory: 45 | PLURALNAME: "تصنيفات المنتدى" 46 | SINGULARNAME: "تصنيف المنتدى" 47 | ForumFooter_ss: 48 | CURRENTLYON: "المتواجدون حالياً:" 49 | ISONLINE: "متصل" 50 | LATESTMEMBER: "مرحباً بآخر الأعضاء" 51 | NOONLINE: "لايوجد متصل " 52 | ForumHeader_ss: 53 | BY: "بواسطة" 54 | IN: "في" 55 | JUMPTO: "الانتقال إلى :" 56 | MEMBERS: "الأعضاء" 57 | POSTS: "المواضيع" 58 | SEARCHBUTTON: "البحث:" 59 | SELECT: "اختيار" 60 | TOPICS: "المواضيع" 61 | ForumHolder: 62 | PLURALNAME: "حاويات المنتدى" 63 | SEARCHEDFOR: "قمت بالبحث عن '%s'" 64 | SEARCHRESULTS: "نتائج البحث" 65 | SINGULARNAME: "حاوية المنتدى" 66 | ForumHolder_ss: 67 | FORUM: "المنتدى" 68 | FORUMS: "المنتديات" 69 | LASTPOST: "آخر موضوع" 70 | POSTS: "المواضيع" 71 | THREADS: "الموضوعات Threads" 72 | ForumHolder_search_ss: 73 | NORESULTS: "لايوجد نتائج مطابقة لبحثك" 74 | PAGE: "الصفحة:" 75 | ForumLogin_ss: 76 | LOGGEDINAS: "أنت مسجل الدخول كـ" 77 | LOGIN: "الدخول" 78 | LOGINEXPLICATION: "اضغط هنا للدخول" 79 | LOGOUT: "الخروج" 80 | LOGOUTEXPLICATION: "اضغط هنا لتسجيل الخروج" 81 | LOSTPASS: "نسيت كلمة المرور" 82 | LOSTPASSEXPLICATION: "اضغط هنا لاسترجاع كلمة المرور" 83 | OPENID: "التسجيل بواسطة OpenID" 84 | OPENIDDESC1: "OpenID هو نظام موحد للهوية يتيح لك الدخول إلى عدد من المواقع بحساب موحد" 85 | OPENIDDESC2: "مع OpenID, حسابك أصبح رابط (مثال http://username.myopenid.com/ ). تستطيع الحصول على حساب OpenID مجاني من خلال هذا المثال حسابي." 86 | OPENIDDESC3: "لمزيد من المعلومات تفضل بزيارة الموقع الرسمي لـ OpenID" 87 | OPENIDEXPLICATION: "اضعط هنا للتسجيل باستخدام OpenID" 88 | PROFILE: "الملف الشخصي" 89 | PROFILEEXPLICATION: "اضغط هنا لتعديل الملف الشخصي" 90 | REGEXPLICATION: "اضغط هنا للتسجيل" 91 | REGISTER: "التسجيل" 92 | WHATOPENID: "ماهي OpenID ?" 93 | WHATOPENIDUPPER: "ماهي OpenID ?" 94 | ForumMemberProfile: 95 | AUTHENTICATIONFAILED: "فشل التحقق من OpenID/i-name" 96 | CANCELLEDVERIFICATION: "تم إلغاء التحقق، فضلاً حاول مرة أخرى" 97 | EMAILEXISTS: "عذراً، هذا البريد الإلكتروني موجود مسبقاً فضلاً اختر بريد إلكتروني آخر" 98 | ENTEROPENID: "فضلاً أدخل OpenID الخاص بك لإكمال عملية التسجيل" 99 | FORUMREGTITLE: "التسجيل في المنتدى" 100 | FORUMUSERPROFILE: "الملف الشخصي لأعضاء المنتدى" 101 | FORUMUSERREGISTER: "التسجيل في المنتدى" 102 | NICKNAMEEXISTS: "عذراً، هذا اللقب موجود مسبقاً فضلاً اختر لقباً آخر" 103 | OPENIDEXISTS: "عذراً حساب OpenID مسجل من قبل. فضلاً اختر حساب آخر أو سجل بدون استخدام OpenID" 104 | REGISTER: "تسجيل" 105 | REGISTEROPENID: "التسجيل بواسطة OpenID" 106 | SAVECHANGES: "حفظ التغييرات" 107 | UNEXPECTEDERROR: "حدث خطأ غير متوقع، فضلاً حاول مرة أخرى أو سجل بدون استخدام OpenID" 108 | USERPROFILE: "الملف الشخصي للعضو" 109 | WRONGPERMISSION: "لا تملك الصلاحية لتعديل بيانات هذا العضو" 110 | ForumMemberProfile_show_ss: 111 | AVATAR: "الصورة الشخصية" 112 | COUNTRY: "الدولة" 113 | EMAIL: "البريد الإلكتروني" 114 | FIRSTNAME: "الاسم الأول" 115 | FORUMRANK: "ترتيب المنتدى" 116 | LASTPOST: "آخر موضوع : %s " 117 | LATESTPOSTS: "آخر المواضيع" 118 | NICKNAME: "اللقب" 119 | NORANK: "لا ترتيب" 120 | OCCUPATION: "الوظيفة" 121 | POSTNO: "عدد المواضيع" 122 | PROFILE: "الملف الشخصي" 123 | SURNAME: "اسم العائلة" 124 | USERSAVATAR: "الصورة الشخصية" 125 | ForumMember_ForgotNicknameEmail_ss: 126 | HI: "أهلاً،" 127 | MESSAGE: "هنا الصفحة الرئيسية لاسم المستخدم%s" 128 | USERNAME: "اسم المستخدم:" 129 | ForumMember_TopicNotification_ss: 130 | HI: "أهلاً %s," 131 | NEWPOSTMESSAGE: "تم إضافة مشاركة جديدة إلى الموضوعالذي اشتركت فيه. تستطيع مشاهدة المشاركة بالضغط هنا " 132 | REPLYLINK: "مشاهدة الموضوع" 133 | UNSUBSCRIBETEXT: "إلغاء الاشتراك من الموضوع" 134 | ForumRole: 135 | ADMIN: "المدير" 136 | ANONYMOUS: "عضو غير مسجل" 137 | AVATAR: "رفع الصورة الشخصية" 138 | CANGRAVATAR: "إذا كنت تستخدم الصور الشخصية فاترك هذا الحقل" 139 | COMMEMBER: "أعضاء المجتمع" 140 | COUNTRY: "الدولة" 141 | EMAIL: "البريد الإلكتروني" 142 | FIRSTNAME: "الاسم الأول" 143 | MOD: "المشرف" 144 | NICKNAME: "اللقب" 145 | OCCUPATION: "الوظيفة" 146 | OPENIDINAME: "OpenID/i-name" 147 | PASSOPTMESSAGE: "Since you provided an OpenID respectively an i-name the password is optional. If you enter one, you will be able to log in also with your e-mail address." 148 | PASSWORD: "الرقم السري" 149 | PERSONAL: "التفاصيل الشخصية" 150 | RATING: "تقييم العضو" 151 | SURNAME: "اسم العائلة" 152 | TRANSFERSUCCEEDED: "The data transfer has succeeded. However, to complete it, you must delete the ForumMember table. To do this, execute the query \"DROP TABLE 'ForumMember'\"." 153 | Forum_editpost_ss: 154 | AVAILABLEBB: "السماح بأكواد BB" 155 | Forum_reply_ss: 156 | AVAILABLEBB: "السماح بأكواد BB" 157 | Forum_show_ss: 158 | AUTHOR: "الكاتب" 159 | CLICKGOTOEND: "اضغط هنا للذهاب إلى نهاية الموضوع" 160 | CLICKGOTOTOP: "اضغط هنا للذهاب إلى أعلى الموضوع" 161 | CLICKREPLY: "اضغط هنا للرد" 162 | GOTOEND: "الذهاب إلى النهاية" 163 | GOTOTOP: "الذهاب إلى الأعلى" 164 | NEXTLINK: "التالي" 165 | NEXTTITLE: "مشاهدة الصفحة التالية" 166 | PAGE: "صفحة:" 167 | PREVLINK: "السابق" 168 | PREVTITLE: "عرض الصفحة الشابقة" 169 | REPLY: "الرد" 170 | TOPIC: "الموضوع:" 171 | VIEWS: "المشاهدات" 172 | Forum_starttopic_ss: 173 | AVAILABLEBB: "السماح بأكواد BB" 174 | Post: 175 | DELETE: "حذف" 176 | EDIT: "تعديل" 177 | PLURALNAME: "التدوينات" 178 | POSTEDTO: "نشر في: %s" 179 | REPLYLINK: "رد التدوينة" 180 | RESPONSE: "إعادة إرسال:" 181 | SHOWLINK: "مشاهدة الموضوع" 182 | SINGULARNAME: "التدوينة" 183 | SinglePost_ss: 184 | ATTACHED: "الملفات المرفقة" 185 | GOTOPROFILE: "إذهب إلى الملف الشخصي للعضو" 186 | LASTEDITED: "آخر تعديل:" 187 | TopicListing_ss: 188 | BY: "بواسطة" 189 | CLICKTOUSER: "اضغط هنا للعرض" 190 | GOTOFIRSTUNREAD: "اذهب إلى أول تدوينة غير مقروءة في الموضوع %s" 191 | -------------------------------------------------------------------------------- /lang/ca.yml: -------------------------------------------------------------------------------- 1 | ca: 2 | Forum: 3 | ACCESSATTACH: "Poden els usuaris adjuntar fitxers?" 4 | ACCESSPOST: "Qui pot escriure al fòrum?" 5 | BBCODEHINT: "Veure l'ajuda de format" 6 | EDITPOST: "Edita un missatge" 7 | LOGINAGAIN: "Heu estat desconnectat dels fòrums. Si voleu tornar a entrar, introduïu un usuari i contrasenya a sota." 8 | LOGINALREADY: "Lamentant-ho molt, no podeu accedir a aquest fòrum fins que us hagueu connectat. Si voleu entrar com a algú diferent, feu-ho a sota" 9 | LOGINDEFAULT: "Introduïu la vostra adreça de correu i contrasenya per a veure aquest fòrum." 10 | LOGINTOPOST: "Necessitareu entrar abans d'escriure en aaquest fòrum. Si us plau, feu-ho a sota" 11 | LOGINTOPOSTAGAIN: "Heu estat desconnectat dels fòrums. Si voleu tornar a connectar-vos per a escriure, introduïu un usuari i contrasenya a sota." 12 | LOGINTOPOSTLOGGEDIN: "Lamentant-ho molt, no podeu escriure a aquest fòrum fins que us hagueu connectat. Si voleu entrar com a algú altre, feu-ho a sota. Si esteu connectat i no podeu escriure, és que no teniu els permisos per escriure." 13 | NEWTOPIC: "Comença un nou tema" 14 | NO: "No" 15 | POSTTOTOPIC: "Escrits al tema '%s'" 16 | READANYONE: "Qualsevol" 17 | READLIST: "Només aquesta gent (trieu de la llista)" 18 | READLOGGEDIN: "Usuaris connectats" 19 | READNOONE: "Ningú. Fés el fòrum només de lectura" 20 | REMOVE: "suprimeix" 21 | RSSFORUM: "Escrits al fòrum '%s'" 22 | RSSFORUMS: "Escrits a tots els fòrums" 23 | SUBSCRIBETOPIC: "Subscriure's a aquest tema (Rebreu notificacions per correu quan s'afegeixi una resposta)" 24 | YES: "Sí" 25 | Forum_ss: 26 | LASTPOST: "Darrer missatge" 27 | NEWTOPIC: "Premeu aquí per a començar un tema nou" 28 | NEWTOPICIMAGE: "Comença un nou tema" 29 | NEWTOPICTEXT: "premeu aquí per a començar un nou tema" 30 | NOTOPICS: "No hi ha temes en aquest fòrum," 31 | POSTS: "Missatges" 32 | PREVLNK: "Pàgina anterior" 33 | READONLYFORUM: "Aquest fòrum és de només lectura. No podeu enviar respostes o iniciar nous fils." 34 | TOPIC: "Tema" 35 | ForumAdmin_right_ss: 36 | EDITPAGE: "Edita la pàgina" 37 | WELCOME: "Benvingut a %s! Si us plau, premeu una de les entrades del panell esquerra." 38 | ForumFooter_ss: 39 | CURRENTLYON: "Actualment en línia:" 40 | ISONLINE: "està en línia" 41 | LATESTMEMBER: "La benvinguda al nostre darrer membre:" 42 | NOONLINE: "No hi ha ningú en línia." 43 | ForumHeader_ss: 44 | BY: "per" 45 | IN: "a" 46 | JUMPTO: "Salta a:" 47 | MEMBERS: "membres" 48 | POSTS: "Missatges" 49 | SEARCHBUTTON: "Cerca" 50 | SELECT: "Selecciona" 51 | TOPICS: "Temes" 52 | ForumHolder: 53 | SEARCHEDFOR: "Heu cercat '%s'" 54 | SEARCHRESULTS: "Resultats de la cerca" 55 | ForumHolder_ss: 56 | FORUM: "Fòrum" 57 | LASTPOST: "Darrer missatge" 58 | POSTS: "Missatges" 59 | THREADS: "Fils" 60 | ForumHolder_search_ss: 61 | NORESULTS: "No hi ha resultats " 62 | PAGE: "Pàgina:" 63 | ForumLogin_ss: 64 | LOGGEDINAS: "Esteu connectat com a" 65 | LOGIN: "Entrar" 66 | LOGINEXPLICATION: "Premeu aquí per a connectar-vos" 67 | LOGOUT: "Sortir" 68 | LOGOUTEXPLICATION: "Premeu aquí per a sortir" 69 | LOSTPASS: "He oblidat la contrasenya" 70 | LOSTPASSEXPLICATION: "Premeu aquí per a recuperar la vostra contrasenya" 71 | OPENID: "registre amb OpenID" 72 | OPENIDDESC1: "L'OpenID és un sistema d'identificació de tot Internet que us permet entrar a molts llocs web amb un sol compte." 73 | OPENIDDESC2: "Amb OpenID, la vostra ID es converteix en una URL (p.ex. http://usuari.myopenid.com/). Podeu obtenir un OpenID de forma gratuïta per exemple de myopenid.com." 74 | OPENIDDESC3: "Per a més informació visiteu el lloc oficial OpenID." 75 | OPENIDEXPLICATION: "Premeu aquí per a registrar-vos amb OpenID" 76 | PROFILE: "Perfil" 77 | PROFILEEXPLICATION: "Premeu aquí per a editar el vostre perfil" 78 | REGEXPLICATION: "Premeu aquí per a registrar-vos" 79 | REGISTER: "Registre" 80 | WHATOPENID: "Què és l'OpenID?" 81 | WHATOPENIDUPPER: "Què és l'OpenID?" 82 | ForumMemberProfile: 83 | AUTHENTICATIONFAILED: "L'autenticació d'OpenID/i-name ha fallat." 84 | CANCELLEDVERIFICATION: "La verificació ha estat cancel·lada. Proveu-ho de nou." 85 | EMAILEXISTS: "Aquesta adreça de correu ja existeix. Si us plau, trieu-ne una altra." 86 | ENTEROPENID: "Si us plau, introduïu el vostre OpenID per a continuar el registre" 87 | FORUMREGTITLE: "Registre al fòrum" 88 | FORUMUSERPROFILE: "Perfil de l'usuari del fòrum" 89 | FORUMUSERREGISTER: "Registre del fòrum" 90 | NICKNAMEEXISTS: "Aquest nom d'usuari ja existeix. Si us plau, trieu-ne un altre." 91 | OPENIDEXISTS: "Aquest OpenID ja està registrat. Si us plau, trieu-ne un altre o bé registreu-vos sense OpenID." 92 | REGISTER: "Registra" 93 | REGISTEROPENID: "Registre amb OpenID" 94 | SAVECHANGES: "Desa els canvis" 95 | UNEXPECTEDERROR: "Hi ha hagut un error inesperat. Proveu-ho de nou o registreu-vos sense OpenID" 96 | USERPROFILE: "Perfil de l'usuari" 97 | WRONGPERMISSION: "No teniu permisos per a editar aquest membre." 98 | ForumMemberProfile_show_ss: 99 | AVATAR: "Avatar" 100 | COUNTRY: "País" 101 | EMAIL: "Correu electrònim" 102 | FIRSTNAME: "Nom" 103 | FORUMRANK: "Rànquing del fòrum" 104 | LASTPOST: "Darrer missatge: %s" 105 | LATESTPOSTS: "Darrers missatges" 106 | NICKNAME: "Nom d'usuari" 107 | NORANK: "Sense rànquing" 108 | OCCUPATION: "Ocupació" 109 | POSTNO: "Nombre de missatges" 110 | PROFILE: "Perfil" 111 | SURNAME: "Cognom" 112 | USERSAVATAR: "(avatar)" 113 | ForumMember_ForgotNicknameEmail_ss: 114 | HI: "Hola," 115 | MESSAGE: "Aquí teniu el vostre nom d'usuari per %s." 116 | USERNAME: "Nom d'usuari:" 117 | ForumMember_TopicNotification_ss: 118 | HI: "Hola %s," 119 | NEWPOSTMESSAGE: "S'ha afegit un nou escrit al tema al qual esteu subscrit. Podeu veure aquest missatge prement aquí." 120 | ForumRole: 121 | ADMIN: "Administrador" 122 | ANONYMOUS: "Usuari anònim" 123 | AVATAR: "Carrega un avatar" 124 | COMMEMBER: "Membres de la comunitat" 125 | COUNTRY: "País" 126 | EMAIL: "Correu electrònic" 127 | FIRSTNAME: "Nom" 128 | MOD: "Moderador" 129 | NICKNAME: "Nom d'usuari" 130 | OCCUPATION: "Ocupació" 131 | OPENIDINAME: "OpenID/i-name" 132 | PASSOPTMESSAGE: "Ja que heu proporcionat un OpenID la contrasenya és opcional. Si n'introduïu una, podreu entrar també amb la vostra adreça de correu." 133 | PASSWORD: "Contrasenya" 134 | PERSONAL: "Detalls personals" 135 | RATING: "Valoració de l'usuari" 136 | SURNAME: "Cognom" 137 | TRANSFERSUCCEEDED: "La transferència de dades ha tingut èxit. Tot i això, per a completar-la, heu d'eliminar la taula ForumMember. Per a fer-ho, executeu la consulta \"DROP TABLE 'ForumMember'\"." 138 | Forum_editpost_ss: 139 | AVAILABLEBB: "Etiquetes BBCode disponibles" 140 | Forum_reply_ss: 141 | AVAILABLEBB: "Etiquetes BBCode disponibles" 142 | Forum_show_ss: 143 | AUTHOR: "Autor" 144 | CLICKGOTOEND: "Premeu aquí per anar al final d'aquest missatge" 145 | CLICKGOTOTOP: "Premeu aquí per anar a dalt d'aquest missatge" 146 | CLICKREPLY: "Premeu per a respondre" 147 | GOTOEND: "Vés al final" 148 | GOTOTOP: "Vés a dalt" 149 | NEXTLINK: "Seg" 150 | NEXTTITLE: "Veure la pàgina següent" 151 | PAGE: "Pàgina:" 152 | PREVLINK: "Ant" 153 | PREVTITLE: "Veure la pàgina anterior" 154 | REPLY: "Resposta" 155 | TOPIC: "Tema:" 156 | VIEWS: "Visites" 157 | Forum_starttopic_ss: 158 | AVAILABLEBB: "Etiquetes BBCode disponibles" 159 | Post: 160 | DELETE: "suprimeix" 161 | EDIT: "edita" 162 | POSTEDTO: "Enviat a: %s" 163 | RESPONSE: "Re: %s" 164 | SinglePost_ss: 165 | ATTACHED: "Fitxers adjunts" 166 | GOTOPROFILE: "Vés al perfil d'aquest usuari" 167 | LASTEDITED: "Darrera edició:" 168 | -------------------------------------------------------------------------------- /lang/eo.yml: -------------------------------------------------------------------------------- 1 | eo: 2 | Forum: 3 | ACCESSATTACH: "Ĉu uzantoj povas kunligi dosierojn?" 4 | ACCESSPOST: "Kiu povas afiŝi al la forumo?" 5 | BBCODEHINT: "Vidigi Helpon pri Formatado" 6 | EDITPOST: "Redakti afiŝon" 7 | LOGINAGAIN: "Elsalutis vin el la forumoj. Se vi volas ensaluti denove, enigu sube uzulnomon kaj pasvorton." 8 | LOGINALREADY: "Bedaŭrinde vi ne povas aliri ĉi tiun forumon antaŭ ol vi ensalutis. Se vi volas ensaluti kiel aliulo, fari tion sube" 9 | LOGINDEFAULT: "Enigu vian retadreson kaj pasvorton por vidigi ĉi tiun forumon." 10 | LOGINTOPOST: "Necesas ensaluti antaŭ ol vi povas afiŝi en tiu forumo. Bonvolu fari tion sube." 11 | LOGINTOPOSTAGAIN: "Elsalutis vin el la forumoj. Se vi volas ensaluti denove por afiŝi, enigu sube uzulnomon kaj pasvorton." 12 | LOGINTOPOSTLOGGEDIN: "Bedaŭrinde vi ne povas afiŝi al ĉi tiu forumo antaŭ ol vi ensalutis. Se vi volas ensaluti kiel aliulo, faru tion sube. Se vi estas ensalutinta sed vi ne povas afiŝi, vi ne havas taŭgajn permesojn por afiŝi." 13 | NEWTOPIC: "Komenci novan temon" 14 | NO: "Ne" 15 | POSTTOTOPIC: "Afiŝoj al la temo '%s'" 16 | READANYONE: "Iu ajn" 17 | READLIST: "Nur ĉi tiuj homoj (elektu el listo)" 18 | READLOGGEDIN: "Ensalutintaj uzantoj" 19 | READNOONE: "Neniu. Igu la forumon Nurlega" 20 | REMOVE: "forigi" 21 | RSSFORUM: "Afiŝoj al la forumo '%s'" 22 | RSSFORUMS: "Afiŝoj al ĉiuj forumoj" 23 | SUBSCRIBETOPIC: "Aboni ĉi tiun temon (Ricevi retpoŝtajn sciigojn kiam nova respondo eniĝas." 24 | YES: "Jes" 25 | Forum_ss: 26 | LASTPOST: "Lasta Afiŝo" 27 | NEWTOPIC: "Alklaku ĉi tie por komenci novan temon" 28 | NEWTOPICIMAGE: "Komenci novan temon" 29 | NEWTOPICTEXT: "alklaki ĉi tie por komenci novan temon" 30 | NOTOPICS: "Mankas temoj en ĉi tiu forumo," 31 | POSTS: "Afiŝoj" 32 | PREVLNK: "Antaŭa Paĝo" 33 | READONLYFORUM: "Ĉi tiu forumo estas nurlegebla. Oni ne povas afiŝi respondojn aŭ komenci novajn fadenojn" 34 | TOPIC: "Temo" 35 | ForumAdmin_right_ss: 36 | EDITPAGE: "Redakti Paĝon" 37 | WELCOME: "Bonvenon al %s! Bonvolu alklaki al iu el la eroj en la maldekstra fenestro." 38 | ForumFooter_ss: 39 | CURRENTLYON: "Aktuale Nekonektita:" 40 | ISONLINE: "estas konektita" 41 | LATESTMEMBER: "Bonvenon al nia plejlasta membro:" 42 | NOONLINE: "Neniu estas konektita." 43 | ForumHeader_ss: 44 | BY: "de" 45 | IN: "en" 46 | JUMPTO: "Salti al:" 47 | MEMBERS: "membroj" 48 | POSTS: "Afiŝoj" 49 | SEARCHBUTTON: "Serĉi" 50 | SELECT: "Elekti" 51 | TOPICS: "Temoj" 52 | ForumHolder: 53 | SEARCHEDFOR: "Vi serĉis por '%s'" 54 | SEARCHRESULTS: "Rezultoj de serĉo" 55 | ForumHolder_ss: 56 | FORUM: "Forumo" 57 | LASTPOST: "Lasta Afiŝo" 58 | POSTS: "Afiŝoj" 59 | THREADS: "Fadenoj" 60 | ForumHolder_search_ss: 61 | NORESULTS: "Mankas rezultoj por tiu(j) vorto(j)" 62 | PAGE: "Paĝo:" 63 | ForumLogin_ss: 64 | LOGGEDINAS: "Vi ensalutis kiel" 65 | LOGIN: "Ensaluti" 66 | LOGINEXPLICATION: "Alklaku ĉi tie por ensaluti" 67 | LOGOUT: "Adiaŭi" 68 | LOGOUTEXPLICATION: "Alklaku ĉi tie por adiaŭi" 69 | LOSTPASS: "Forgesis pasvorton" 70 | LOSTPASSEXPLICATION: "Alklaku ĉi tie por rehavi vian pasvorton" 71 | OPENID: "registri kun OpenID" 72 | OPENIDDESC1: "OpenID estas Interret-vasta identiga sistemo kiu ebligas al vi ensaluti al multaj retejoj per nur unu konto." 73 | OPENIDDESC2: "Per OpenID, via ID fariĝas URL (ekzemple http://uzulnomo.miamalfermaid.com/). Vi povas akiri je MalfermaID de ekzemple myopenid.com." 74 | OPENIDDESC3: "Por plua informo vizitu je la oficiala retejo de OpenID." 75 | OPENIDEXPLICATION: "Alklaku ĉi tie por registri kun OpenID" 76 | PROFILE: "Agordaro" 77 | PROFILEEXPLICATION: "Alklaku ĉi tiu por redakti vian agordaron" 78 | REGEXPLICATION: "Alklaku ĉi tie por registri" 79 | REGISTER: "Registri" 80 | WHATOPENID: "Kio estas OpenID (MalfermaID)?" 81 | WHATOPENIDUPPER: "Kio estas OpenID (MalfermaID)?" 82 | ForumMemberProfile: 83 | AUTHENTICATIONFAILED: "Ne sukcesis aŭtentigi la OpenID/i-nomon" 84 | CANCELLEDVERIFICATION: "Kontrolado estas nuligita. Bonvolu provi denove." 85 | EMAILEXISTS: "Tiu retadreso jam ekzistas. Bonvolu elekti alian." 86 | ENTEROPENID: "Bonvolu enigi vian OpenID por daŭrigi la registradon." 87 | FORUMREGTITLE: "Foruma Registrado" 88 | FORUMUSERPROFILE: "Agordaro pri ForumUzanto" 89 | FORUMUSERREGISTER: "Registri Forumon" 90 | NICKNAMEEXISTS: "Tiu kromnomo jam ekzistas. Bonvolu elekti alian." 91 | OPENIDEXISTS: "Tiu OpenID (MalfermaID) jam estas registrita. Bonvolu elekti alian aŭ registri sen OpenID." 92 | REGISTER: "Registri" 93 | REGISTEROPENID: "Registri kun OpenID" 94 | SAVECHANGES: "Konservi ŝanĝojn" 95 | UNEXPECTEDERROR: "Neatendita eraro okazis. Bonvolu provi denove aŭ registri sen OpenID" 96 | USERPROFILE: "Agordaro pri uzanto" 97 | WRONGPERMISSION: "Vi ne havas permeson redakti tiun membron." 98 | ForumMemberProfile_show_ss: 99 | AVATAR: "Avataro" 100 | COUNTRY: "Lando" 101 | EMAIL: "Retpoŝto" 102 | FIRSTNAME: "Persona Nomo" 103 | FORUMRANK: "Foruma takso" 104 | LASTPOST: "Lasta afiŝo: %s" 105 | LATESTPOSTS: "Plejlastaj Afiŝoj" 106 | NICKNAME: "Kromnomo" 107 | NORANK: "Neniu takso" 108 | OCCUPATION: "Okupo" 109 | POSTNO: "Nombro da afiŝoj" 110 | PROFILE: "Agordaro" 111 | SURNAME: "Familia Nomo" 112 | USERSAVATAR: "avataro 's" 113 | ForumMember_ForgotNicknameEmail_ss: 114 | HI: "Saluton," 115 | MESSAGE: "Jen via salutnomo por %s." 116 | USERNAME: "Salutnomo" 117 | ForumMember_TopicNotification_ss: 118 | HI: "Saluton %s," 119 | NEWPOSTMESSAGE: "Nova afiŝo estas aldonita al temo al kiu vi abonis. Vi povas vidigi la afiŝon alklakante ĉi tie." 120 | ForumRole: 121 | ADMIN: "Administranto" 122 | ANONYMOUS: "Sennoma uzanto" 123 | AVATAR: "Alŝuti avataron" 124 | COMMEMBER: "Komunumano" 125 | COUNTRY: "Lando" 126 | EMAIL: "Retpoŝto" 127 | FIRSTNAME: "Persona nomo" 128 | MOD: "Kontrolanto" 129 | NICKNAME: "Kromnomo" 130 | OCCUPATION: "Okupo" 131 | OPENIDINAME: "OpenID/i-nomo" 132 | PASSOPTMESSAGE: "Ĉar vi provizis je OpenID respektive i-nomon la pasvorto estas nedeviga. Se vi enigas pasvorton, vi povos ensaluti per via retadreso." 133 | PASSWORD: "Pasvorto" 134 | PERSONAL: "Personaj Detaloj" 135 | RATING: "Uzanta pritakso" 136 | SURNAME: "Familia nomo" 137 | TRANSFERSUCCEEDED: "Sukcesis transigi datumojn. Tamen, por kompletigi ĝin, vi devas forigi la tabelon ForumMember. Por fari tion, rulu la informpeton \"DROP TABLE 'ForumMember'\"." 138 | Forum_editpost_ss: 139 | AVAILABLEBB: "Disponeblaj BB-Kodaj etikedoj" 140 | Forum_reply_ss: 141 | AVAILABLEBB: "Disponeblaj BB-Kodaj etikedoj" 142 | Forum_show_ss: 143 | AUTHOR: "Aŭtoro" 144 | CLICKGOTOEND: "Alklaku ĉi tie por iri al la fino de ĉi tiu afiŝo" 145 | CLICKGOTOTOP: "Alklaku ĉi tie por iri al la supro de ĉi tiu poŝto" 146 | CLICKREPLY: "Alklaki por Respondi" 147 | GOTOEND: "Iri al Fino" 148 | GOTOTOP: "Iri al la Supro" 149 | NEXTLINK: "Sekva" 150 | NEXTTITLE: "Vidigi la sekvan paĝon" 151 | PAGE: "Paĝo:" 152 | PREVLINK: "Antaŭa" 153 | PREVTITLE: "Vidigi la antaŭan paĝon" 154 | REPLY: "Respondi" 155 | TOPIC: "Temo:" 156 | VIEWS: "Vidigoj" 157 | Forum_starttopic_ss: 158 | AVAILABLEBB: "Disponeblaj BB-Kodaj etikedoj" 159 | Post: 160 | DELETE: "forigi" 161 | EDIT: "redakti" 162 | POSTEDTO: "Afiŝis al: %s" 163 | RESPONSE: "Pri: %s" 164 | SinglePost_ss: 165 | ATTACHED: "Alligitaj Dosieroj" 166 | GOTOPROFILE: "Iru al la Agordaro de ĉi tiu Uzanto" 167 | LASTEDITED: "Laste redaktita" 168 | -------------------------------------------------------------------------------- /lang/es.yml: -------------------------------------------------------------------------------- 1 | es: 2 | Forum: 3 | ACCESSATTACH: "¿Los usuarios pueden adjuntar ficheros?" 4 | ACCESSPOST: "¿Quién puede publicar en el foro?" 5 | FORUMMONTHLYPOSTS: "Entradas del Foro por Mes" 6 | FORUMSIGNUPS: "Registros en el Foro por Mes" 7 | LOGINDEFAULT: "Introduce tu correo electrónico y contraseña para ver este foro." 8 | NO: "No" 9 | PLURALNAME: "Foros" 10 | READANYONE: "Cualquiera" 11 | READLIST: "Sólo estas personas (elige de la lista)" 12 | READLOGGEDIN: "Usuarios identificados" 13 | SINGULARNAME: "Foro" 14 | YES: "Sí" 15 | Forum_ss: 16 | ANNOUNCEMENTS: "Comunicados" 17 | GOTOTHISTOPIC: "Ir al tema %s" 18 | LASTPOST: "Última entrada" 19 | NEWTOPIC: "Haz clic aquí para empezar un nuevo tema" 20 | NEWTOPICIMAGE: "Empezar un nuevo tema" 21 | NEWTOPICTEXT: "haz clic aquí para empezar un nuevo tema" 22 | NOTOPICS: "No hay temas en este foro," 23 | POSTS: "Entradas" 24 | PREVLNK: "Página Anterior" 25 | READONLYFORUM: "Este foro es sólo de lectura. No puedes escribir respuestas o abrir nuevos hilos." 26 | TOPIC: "Tema" 27 | ForumAdmin_right_ss: 28 | EDITPAGE: "Editar Página" 29 | WELCOME: "¡Bienvenido a %s! Por favor, elige una de las entradas en el panel de la izquierda." 30 | ForumCategory: 31 | PLURALNAME: "Categorías del foro" 32 | SINGULARNAME: "Categoría del foro" 33 | ForumFooter_ss: 34 | CURRENTLYON: "Ahora conectados:" 35 | ISONLINE: "está conectado" 36 | LATESTMEMBER: "Bienvenido nuestro último miembro:" 37 | NOONLINE: "No hay nadie conectado." 38 | ForumHeader_ss: 39 | BY: "por" 40 | IN: "en" 41 | JUMPTO: "Ir a:" 42 | MEMBERS: "miembros" 43 | POSTS: "Entradas" 44 | SEARCHBUTTON: "Buscar" 45 | SELECT: "Seleccionar" 46 | TOPICS: "Temas" 47 | ForumHolder_ss: 48 | FORUM: "Foro" 49 | FORUMS: "Foros" 50 | LASTPOST: "Última Entrada" 51 | POSTS: "Entradas" 52 | THREADS: "Hilos" 53 | ForumHolder_search_ss: 54 | NORESULTS: "No hay resultados para esa(s) palabra(s)" 55 | PAGE: "Página:" 56 | ForumLogin_ss: 57 | LOGGEDINAS: "Estás conectado como" 58 | LOGIN: "Identificarse" 59 | LOGINEXPLICATION: "Haz clic aquí para identificarte" 60 | LOGOUT: "Cerrar Sesión" 61 | LOGOUTEXPLICATION: "Haz clic aquí para cerrar sesión" 62 | LOSTPASS: "Contraseña olvidada" 63 | LOSTPASSEXPLICATION: "Haz clic aquí para recuperar tu contraseña" 64 | OPENID: "Registrarte con OpenID" 65 | OPENIDDESC3: "Para más información visita la página oficial de OpenID" 66 | OPENIDEXPLICATION: "Haz clic aquí para registrarte con OpenID" 67 | PROFILE: "Perfil" 68 | PROFILEEXPLICATION: "Haz clic aquí para editar tu perfil" 69 | REGEXPLICATION: "Haz clic aquí para registrarte" 70 | REGISTER: "Registrarte" 71 | WHATOPENID: "¿Qué es OpenID?" 72 | WHATOPENIDUPPER: "¿Qué es OpenID?" 73 | ForumMemberProfile: 74 | AUTHENTICATIONFAILED: "La autenticación con OpenID/i-name ha fallado." 75 | CANCELLEDVERIFICATION: "La verificación ha sido cancelada. Por favor, inténtalo de nuevo." 76 | ENTEROPENID: "Por favor, introduce tu OpenID para continuar con el registro." 77 | FORUMUSERPROFILE: "Perfil de usuario del foro" 78 | FORUMUSERREGISTER: "Registro en el foro" 79 | NICKNAMEEXISTS: "Lo sentimos, ese nombre de usuario ya existe. Por favor, escoge otro." 80 | REGISTEROPENID: "Registrarse con OpenID" 81 | SAVECHANGES: "Guardar cambios" 82 | UNEXPECTEDERROR: "Ha ocurrido un error inesperado. Por favor, inténtalo de nuevo o regístrate sin OpenID" 83 | USERPROFILE: "Perfil de usuario" 84 | WRONGPERMISSION: "No tienes permiso para editar ese miembro." 85 | ForumMemberProfile_show_ss: 86 | AVATAR: "Avatar" 87 | COUNTRY: "País" 88 | EMAIL: "Correo electrónico" 89 | FIRSTNAME: "Nombre" 90 | FORUMRANK: "Ranking del Foro" 91 | LASTPOST: "Última entrada: %s " 92 | LATESTPOSTS: "Últimas Entradas" 93 | NORANK: "No hay ranking" 94 | OCCUPATION: "Ocupación" 95 | POSTNO: "Número de entradas" 96 | PROFILE: "Perfil" 97 | SURNAME: "Apellidos" 98 | USERSAVATAR: "'s avatar" 99 | ForumMember_ForgotNicknameEmail_ss: 100 | HI: "Hola," 101 | MESSAGE: "Aquí está tu nombre de usuario para %s." 102 | USERNAME: "Nombre de usuario:" 103 | ForumMember_TopicNotification_ss: 104 | HI: "Hola %s," 105 | NEWPOSTMESSAGE: "Una nueva entrada ha sido añadida al tema al que estás suscrito." 106 | REPLYLINK: "Ver el tema" 107 | UNSUBSCRIBETEXT: "Cancelar la suscripción al tema" 108 | ForumRole: 109 | ADMIN: "Administrador" 110 | ANONYMOUS: "Usuario anónimo" 111 | AVATAR: "Subir imagen de usuario" 112 | CANGRAVATAR: "Si usas Gravatars deja esto en blanco" 113 | COMMEMBER: "Miembro de la Comunidad" 114 | COUNTRY: "País" 115 | EMAIL: "Correo electrónico" 116 | FIRSTNAME: "Nombre" 117 | MOD: "Moderador" 118 | NICKNAME: "Nombre de usuario" 119 | OCCUPATION: "Ocupación" 120 | OPENIDINAME: "OpenID/i-name" 121 | PASSWORD: "Contraseña" 122 | PERSONAL: "Detalles Personales" 123 | SURNAME: "Apellidos" 124 | TRANSFERSUCCEEDED: "La transferencia de datos se ha producido correctamente. Para completarla, debes borrar la tabla ForumMember. Para hacerlo, ejecuta la sentencia \"DROP TABLE 'ForumMember'\"." 125 | Forum_editpost_ss: 126 | AVAILABLEBB: "Disponibles etiquetas BBCode" 127 | Forum_reply_ss: 128 | AVAILABLEBB: "Disponibles etiquetas BBCode" 129 | Forum_show_ss: 130 | AUTHOR: "Autor" 131 | CLICKGOTOEND: "Haz clic aquí para ir al final de esta entrada" 132 | CLICKGOTOTOP: "Haz clic aquí para ir al principio de esta entrada" 133 | CLICKREPLY: "Haz Clic para Responder" 134 | GOTOEND: "Ir al Final" 135 | GOTOTOP: "Subir" 136 | NEXTLINK: "Siguiente" 137 | NEXTTITLE: "Ver la página siguiente" 138 | PAGE: "Página:" 139 | PREVLINK: "Anterior" 140 | PREVTITLE: "Ver página anterior" 141 | REPLY: "Responder" 142 | TOPIC: "Tema:" 143 | Forum_starttopic_ss: 144 | AVAILABLEBB: "Disponibles las etiquetas de BBCode" 145 | Post: 146 | DELETE: "eliminar" 147 | EDIT: "editar" 148 | PLURALNAME: "Mensajes" 149 | POSTEDTO: "Publicado en: %s" 150 | RESPONSE: "Re: %s" 151 | SHOWLINK: "Mostrar hilo" 152 | SINGULARNAME: "Mensaje" 153 | SinglePost_ss: 154 | ATTACHED: "Archivos Adjuntos" 155 | GOTOPROFILE: "Ir al Perfil de este Usuario" 156 | LASTEDITED: "Última modificación:" 157 | TopicListing_ss: 158 | BY: "por" 159 | CLICKTOUSER: "Haz clic aquí para ver" 160 | GOTOFIRSTUNREAD: "Ir a la primera entrada no leída en el tema %s" 161 | -------------------------------------------------------------------------------- /lang/es_MX.yml: -------------------------------------------------------------------------------- 1 | es_MX: 2 | Forum: 3 | ACCESSATTACH: "¿Pueden adjuntar archivos los usuarios?" 4 | ACCESSPOST: "¿Quién puede aportar al foro?" 5 | BBCODEHINT: "Ver la Ayuda Formateada" 6 | EDITPOST: "Modificar un envío" 7 | FORUMMONTHLYPOSTS: "Envíos Mensuales del Foro" 8 | FORUMSIGNUPS: "Ingresos Mensuales al Foro" 9 | LOGINAGAIN: "Has salido de los foros: Si deseas ingresar de nuevo, ingresa un nombre de usuario y contraseña abajo." 10 | LOGINALREADY: "Lo siento, pero no puedes acceder a este foro hasta que te hayas registrado. Si deseas ingresar regístrate como alguien más, lo puedes hacer más abajo." 11 | LOGINDEFAULT: "Ingresa tu dirección de correo electrónico y contraseña para ver este foro." 12 | LOGINTOPOST: "Es necesario que te registres antes de poder realizar envíos al foro. Favor de hacerlo a contrinuación." 13 | LOGINTOPOSTAGAIN: "Has salido de los foros. Si quieres ingresar de nuevo para enviar, introduce tu nombre de usuario y contraseña a continuación." 14 | LOGINTOPOSTLOGGEDIN: "Disculpa, pero no puedes enviar esto al foro hasta que te hayas registrado. Si deseas ingresar como alguien más, favor de hacerlo a continuación. Si estás registrado y todavía no puedes enviar, se debe a que no tienes los permisos adecuados para enviar." 15 | NEWTOPIC: "Iniciar un nuevo tema" 16 | NO: "No" 17 | PLURALNAME: "Foros" 18 | POSTTOTOPIC: "Envíos al tema '%s'" 19 | READANYONE: "Cualquiera" 20 | READLIST: "Únicamente estas personas (selecciona de la lista)" 21 | READLOGGEDIN: "Usuarios registrados" 22 | READNOONE: "Nadie. Convierte el Foro de Sólo Lectura" 23 | REMOVE: "eliminar" 24 | RSSFORUM: "Enviar al foro '%s'" 25 | RSSFORUMS: "Enviar a todos los foros" 26 | SINGULARNAME: "Foro" 27 | SUBSCRIBETOPIC: "Suscribirse a este tema (Recibe notificaciones vía correo electrónico cuando se agregue una nueva respuesta)" 28 | YES: "Sí" 29 | Forum_ss: 30 | ANNOUNCEMENTS: "Anuncios" 31 | GOTOTHISTOPIC: "Ir al tema %s" 32 | LASTPOST: "Último envío" 33 | NEWTOPIC: "Has clic aquí para iniciar un tema nuevo" 34 | NEWTOPICIMAGE: "Inicia un nuevo tema" 35 | NEWTOPICTEXT: "has clic aquí para iniciar un tema nuevo" 36 | NOTOPICS: "No hay temas en este foro," 37 | POSTS: "Envíos" 38 | PREVLNK: "Página Anterior" 39 | READONLYFORUM: "Este foro es de sólo lectura. No puedes enviar respuestas o iniciar nuevos hilos." 40 | TOPIC: "Tema" 41 | ForumAdmin_right_ss: 42 | EDITPAGE: "Modificar Página" 43 | WELCOME: "¡Bienvenido a %s! Por favor has clic en un elemento del panel izquierdo." 44 | ForumCategory: 45 | PLURALNAME: "Categorías de Foros" 46 | SINGULARNAME: "Categoría del Foro" 47 | ForumFooter_ss: 48 | CURRENTLYON: "Está en Línea:" 49 | ISONLINE: "está en línea" 50 | LATESTMEMBER: "Bienvenida a nuestro más reciente afiliado:" 51 | NOONLINE: "No hay nadie en línea." 52 | ForumHeader_ss: 53 | BY: "por" 54 | IN: "en" 55 | JUMPTO: "Saltar a:" 56 | MEMBERS: "afiliados" 57 | POSTS: "Envíos" 58 | SEARCHBUTTON: "Buscar" 59 | SELECT: "Seleccionar" 60 | TOPICS: "Temas" 61 | ForumHolder: 62 | PLURALNAME: "Titulares del Foro" 63 | SEARCHEDFOR: "Buscar '%s'." 64 | SEARCHRESULTS: "Resultados de la búsqueda" 65 | SINGULARNAME: "Titular del Foro" 66 | ForumHolder_ss: 67 | FORUM: "Foro" 68 | FORUMS: "Foros" 69 | LASTPOST: "Último Envío" 70 | POSTS: "Envíos" 71 | THREADS: "Hilos" 72 | ForumHolder_search_ss: 73 | NORESULTS: "No hay resultados con esta(s) palabra(s)" 74 | PAGE: "Página:" 75 | ForumLogin_ss: 76 | LOGGEDINAS: "Estás registrado como" 77 | LOGIN: "Ingresar" 78 | LOGINEXPLICATION: "Has clic aquí para ingresar" 79 | LOGOUT: "Salir" 80 | LOGOUTEXPLICATION: "Has clic aquí para salir" 81 | LOSTPASS: "Olvidé la contraseña" 82 | LOSTPASSEXPLICATION: "Has clic aquí para recuperar tu contraseña" 83 | OPENID: "registrar con OpenID" 84 | OPENIDDESC1: "OpenID es un sistema de identificación ampliamente utilizado en la internet que te permite ingresar a muchos sitios web con una cuenta única." 85 | OPENIDDESC2: "Con OpenID, tu ID es una URL (por ejemplo http://nombredeusuario.myopenid.com/). Puedes conseguir tu OpenID por ejemplo en myopenid.com." 86 | OPENIDDESC3: "Para mayor información visita el sitio oficial de OpenID" 87 | OPENIDEXPLICATION: "Has clic aquí para registrarte con OpenID" 88 | PROFILE: "Perfil" 89 | PROFILEEXPLICATION: "Has clic aquí para modificar tu perfil" 90 | REGEXPLICATION: "Has clic aquí para registrarte" 91 | REGISTER: "Registrar" 92 | WHATOPENID: "¿Qué es OpenID?" 93 | WHATOPENIDUPPER: "¿Qué es OpenID?" 94 | ForumMemberProfile: 95 | AUTHENTICATIONFAILED: "Falló la identificación OpenID/i-name" 96 | CANCELLEDVERIFICATION: "Se ha cancelado la verificación. Por favor intentalo de nuevo." 97 | EMAILEXISTS: "Disculpa, la dirección de correo electrónico ya existe, Por favor selecciona otra." 98 | ENTEROPENID: "Por favor ingresa un OpenID para continuar el registro" 99 | FORUMREGTITLE: "Registro para el Foro" 100 | FORUMUSERPROFILE: "Perfil de Usuario del Foro" 101 | FORUMUSERREGISTER: "Registrar en el Foro" 102 | NICKNAMEEXISTS: "Disculpa, este nombre de usuario ya existe. Por favor selecciona otro." 103 | OPENIDEXISTS: "Lo siento, este OpenID ya está registrado. Por favor selecciona otro o registrate sin OpenID." 104 | REGISTER: "Registrar" 105 | REGISTEROPENID: "Registrar con OpenID" 106 | SAVECHANGES: "Guardar cambios" 107 | UNEXPECTEDERROR: "Ocurrió un error inesperado. Por favor intentalo de nuevo o registrate sin OpenID" 108 | USERPROFILE: "Perfil de usuario" 109 | WRONGPERMISSION: "No tienes permiso para modificar este miembro." 110 | ForumMemberProfile_show_ss: 111 | AVATAR: "Avatar" 112 | COUNTRY: "País" 113 | EMAIL: "Correo Electrónico" 114 | FIRSTNAME: "Nombre" 115 | FORUMRANK: "Evaluación del Foro" 116 | LASTPOST: "Último Envío: %s" 117 | LATESTPOSTS: "Envíos más Recientes" 118 | NICKNAME: "Nombre de Usuario" 119 | NORANK: "Sin evaluación" 120 | OCCUPATION: "Ocupación" 121 | POSTNO: "Número de envíos" 122 | PROFILE: "Perfil" 123 | SURNAME: "Apellido" 124 | USERSAVATAR: "'s avatar" 125 | ForumMember_ForgotNicknameEmail_ss: 126 | HI: "Hola," 127 | MESSAGE: "Aquí está tu nombre de usuario para %s." 128 | USERNAME: "Nombre de Usuario:" 129 | ForumMember_TopicNotification_ss: 130 | HI: "Hola %s," 131 | NEWPOSTMESSAGE: "Se ha añadido un nuevo envío al tema en el que estás suscrito." 132 | REPLYLINK: "Ver el tema" 133 | UNSUBSCRIBETEXT: "Desuscribirse de este tema" 134 | ForumRole: 135 | ADMIN: "Administrador" 136 | ANONYMOUS: "Usuario Anónimo" 137 | AVATAR: "Subir avatar" 138 | CANGRAVATAR: "Si utilizas Gravatars entonces deja este vacío" 139 | COMMEMBER: "Miembro de la Comunidad" 140 | COUNTRY: "Ciudad" 141 | EMAIL: "Correo Electrónico" 142 | FIRSTNAME: "Nombre" 143 | MOD: "Moderador" 144 | NICKNAME: "Nombre de Usuario" 145 | OCCUPATION: "Ocupación" 146 | OPENIDINAME: "OpenID/i-name" 147 | PASSOPTMESSAGE: "Debido a que proporcionaste un OpenID e i-name respectivamente la contraseña es opcional. Si ingresas una, también podrás ingresar con tu dirección de correo electrónico." 148 | PASSWORD: "Contraseña" 149 | PERSONAL: "Detalles Personales" 150 | RATING: "Evaluación de Usuario" 151 | SURNAME: "Apellido" 152 | TRANSFERSUCCEEDED: "La transferencia de datos ha sido exitosa. No obstante, para completarla, debes eliminar la tabla ForumMember. Para hacerlo, ejecuta la consulta \"DROP TABLE 'ForumMember'\"." 153 | Forum_editpost_ss: 154 | AVAILABLEBB: "Etiquetas de Código BB Disponibles" 155 | Forum_reply_ss: 156 | AVAILABLEBB: "Etiquetas de Código BB Disponibles" 157 | Forum_show_ss: 158 | AUTHOR: "Autor" 159 | CLICKGOTOEND: "Has clic aquí para terminar esta respuesta" 160 | CLICKGOTOTOP: "Has clic aquí para ir al principio de este envío" 161 | CLICKREPLY: "Has clic aquí para Responder" 162 | GOTOEND: "Ir al Final" 163 | GOTOTOP: "Ir arriba" 164 | NEXTLINK: "Siguiente" 165 | NEXTTITLE: "Ver la página siguiente" 166 | PAGE: "Página:" 167 | PREVLINK: "Anterior" 168 | PREVTITLE: "Ver la página anterior" 169 | REPLY: "Respuesta" 170 | TOPIC: "Tema:" 171 | VIEWS: "Vistas:" 172 | Forum_starttopic_ss: 173 | AVAILABLEBB: "Etiquetas de Código BB Disponibles" 174 | Post: 175 | DELETE: "eliminar" 176 | EDIT: "modificar" 177 | PLURALNAME: "Envíos" 178 | POSTEDTO: "Enviado a: %s" 179 | REPLYLINK: "Enviar Respuesta" 180 | RESPONSE: "Re: %s" 181 | SHOWLINK: "Muestra Hilo" 182 | SINGULARNAME: "Envío" 183 | SinglePost_ss: 184 | ATTACHED: "Archivos Adjuntos" 185 | GOTOPROFILE: "Ir al Perfil de estos Usuarios" 186 | LASTEDITED: "Última modificación:" 187 | TopicListing_ss: 188 | BY: "por" 189 | CLICKTOUSER: "Has clic aquí para ver" 190 | GOTOFIRSTUNREAD: "Ir al primer envío sin leer en el tema %s." 191 | -------------------------------------------------------------------------------- /lang/et_EE.yml: -------------------------------------------------------------------------------- 1 | et_EE: 2 | Forum: 3 | ACCESSATTACH: "Kas kasutajad saavad lisada faile?" 4 | ACCESSPOST: "Kes saavad postitada foorumi" 5 | BBCODEHINT: "Vaata vormindamis abi" 6 | EDITPOST: "Muuda postitust" 7 | FORUMMONTHLYPOSTS: "Foorumi postitused kuude lõikes" 8 | FORUMSIGNUPS: "Foorumisse registreerimine kuude lõikes" 9 | LOGINAGAIN: "Olete foorumist välja loginud. Kui soovite uuesti siseneda sisestage oma andmed allpool" 10 | LOGINALREADY: "Vabandust aga te ei pääse enne foorumile ligi kui olete sisseloginud. Kui tahad teise kasutajana sisse logida sisesta andmed allpool" 11 | LOGINDEFAULT: "Sisesta oma eposti aadress ja parool et seda foorumit vaadata" 12 | LOGINTOPOST: "Pead esmalt sisselogima enne kui saad postitada siia foorumisse. Te seda allpool" 13 | LOGINTOPOSTAGAIN: "Logisite foorumist välja. kui soovite siseneda ja teha uus postitus tehke seda allpool kasutades kasutajanime ja parooli" 14 | LOGINTOPOSTLOGGEDIN: "Vabandame aga teie ei saa lisada postitusi enne kui olete sisse logitud. Kui soovite siseneda kellegi teisena theke seda allpool. Kui olete sisselogitud ja ei saa ikka postitada tähendab see seda, et teil puuduvad selleks õigused." 15 | NEWTOPIC: "Alusta uut teemat" 16 | NO: "Ei" 17 | PLURALNAME: "Foorumid" 18 | POSTTOTOPIC: "Lisa postitus '%s' teemale" 19 | READANYONE: "Kõik" 20 | READLIST: "Ainult need isikud (Vali nimekirjast)" 21 | READLOGGEDIN: "Sisselogitud kasutajad" 22 | READNOONE: "Mitte keegi. Foorum on ainult lugemiseks" 23 | REMOVE: "Eemalda" 24 | RSSFORUM: "Potitused '%s' foorumis" 25 | RSSFORUMS: "Postitused kõigis foorumites" 26 | SINGULARNAME: "Foorum" 27 | SUBSCRIBETOPIC: "Telli muudatuste teavitus (saadame teile emaili kui siia teemase tehakse uus postitus)" 28 | YES: "Jah" 29 | Forum_ss: 30 | ANNOUNCEMENTS: "Teadaanded" 31 | GOTOTHISTOPIC: "Mine %s teema juurde" 32 | LASTPOST: "Viimane postitus" 33 | NEWTOPIC: "Vajuta siia, et alustada uut teemat" 34 | NEWTOPICIMAGE: "Alusta uut teemat" 35 | NEWTOPICTEXT: "Vajuta siia et luua uus teema" 36 | NOTOPICS: "Siin foorumis pole ühtegi teemat" 37 | POSTS: "Postitused" 38 | PREVLNK: "Eelmine lehekülg" 39 | READONLYFORUM: "See foorum on ainult lugemiseks. Sa ei saa siia postitada või vastat postitustele." 40 | TOPIC: "Teema" 41 | ForumAdmin_right_ss: 42 | EDITPAGE: "Muuda lehte" 43 | WELCOME: "Tere tulemast %s! Palun vali sisu vaatamiseks valik vasakult menüüst" 44 | ForumCategory: 45 | PLURALNAME: "Forumi kategooriad" 46 | SINGULARNAME: "Forumi kategooria" 47 | ForumFooter_ss: 48 | CURRENTLYON: "Hetkel sisseloginud kasutajad:" 49 | ISONLINE: "on sisse logitud" 50 | LATESTMEMBER: "Tere tulemast viimati registreerunud kasutaja:" 51 | NOONLINE: "Keegi pole hetkel sisse loginud" 52 | ForumHeader_ss: 53 | BY: "-" 54 | IN: "-" 55 | JUMPTO: "Hüppa edasi:" 56 | MEMBERS: "Kasutajad" 57 | POSTS: "Postitused" 58 | SEARCHBUTTON: "Otsi.." 59 | SELECT: "Vali" 60 | TOPICS: "Teemad" 61 | ForumHolder: 62 | PLURALNAME: "Foorumi omanikud" 63 | SEARCHEDFOR: "Sa otsisid - '%s'." 64 | SEARCHRESULTS: "Otsingu tulemused" 65 | SINGULARNAME: "Foorumi omanik" 66 | ForumHolder_ss: 67 | FORUM: "Foorum" 68 | FORUMS: "Foorumid" 69 | LASTPOST: "Viimane postitus" 70 | POSTS: "Postitused" 71 | THREADS: "postitused" 72 | ForumHolder_search_ss: 73 | NORESULTS: "Ei leidnud vastet sellele otsingule" 74 | PAGE: "Lehekülg:" 75 | ForumLogin_ss: 76 | LOGGEDINAS: "Oled sisselogitud kui" 77 | LOGIN: "Logi sisse" 78 | LOGINEXPLICATION: "Vajuta siia et sisse logida" 79 | LOGOUT: "Logi välja" 80 | LOGOUTEXPLICATION: "Vajuta siia, et väljuda" 81 | LOSTPASS: "Unustasid parooli" 82 | LOSTPASSEXPLICATION: "Vajuta siia oma parooli taasleidmiseks" 83 | OPENID: "Registreeru OpenID-ga" 84 | OPENIDDESC1: "OpenID on internetis kasutatav laiaulatuslik sisselogimine mida on võimalik kasutada erinevatele lehtedele sisse logimiseks." 85 | OPENIDDESC2: "OpenID-ga, teie ID muutub aadressiks (e.g. http://hüüdnimi.myopenid.com/). Saate ndale teha OpenID näiteks myopenid.com lehel." 86 | OPENIDDESC3: "Täpsemalt uurimiseks külasta ametliku OpenID kodulehte." 87 | OPENIDEXPLICATION: "Vajuta siia et registreerida end OpenID-ga" 88 | PROFILE: "Profiil" 89 | PROFILEEXPLICATION: "Vajuta siia et muuta oma profiili" 90 | REGEXPLICATION: "Vajuta siia, et registreerida" 91 | REGISTER: "Registreeri kasutajaks" 92 | WHATOPENID: "Mis on OpenID?" 93 | WHATOPENIDUPPER: "Mis on OpenID?" 94 | ForumMemberProfile: 95 | AUTHENTICATIONFAILED: "OpenID/i-nime tuvastus ebaõnnestus" 96 | CANCELLEDVERIFICATION: "Tuvastamine tühistati. palun proovi uuesti." 97 | EMAILEXISTS: "Vabandame see email on meie andmebaasis juba olemas. Sisesta teine email" 98 | ENTEROPENID: "Palun sisesta oma OpenID, et jätkata registreerumist" 99 | FORUMREGTITLE: "Foorumisse registreerumine" 100 | FORUMUSERPROFILE: "Forumi kasutaja profiil" 101 | FORUMUSERREGISTER: "Foorumisse Registreerimine" 102 | NICKNAMEEXISTS: "Vabandame aga see hüüdnimi on kasutuses. Palun sisesta uus hüüdnimi." 103 | OPENIDEXISTS: "Vabandame aga selle OpenID-ga on juba kasutaja registreeritud. Palun vali teine OpenID või registreeru ilma OpenID-ta" 104 | REGISTER: "Registreeru" 105 | REGISTEROPENID: "Registreeri end OpenID-ga" 106 | SAVECHANGES: "Salvesta muudatused" 107 | UNEXPECTEDERROR: "Ootamatu viga. Palun proovi uuesti või registreeri end ilma OpenID-ta" 108 | USERPROFILE: "Kasutaja profiil" 109 | WRONGPERMISSION: "Sulle ei ole piisavalt õigusi, et selle kasutaja anmeid muuta." 110 | ForumMemberProfile_show_ss: 111 | AVATAR: "Avatar" 112 | COUNTRY: "Riik" 113 | EMAIL: "E-post" 114 | FIRSTNAME: "Eesnimi" 115 | FORUMRANK: "Foorumi hinnang" 116 | LASTPOST: "Viimane postitus: %s" 117 | LATESTPOSTS: "Viimased postitused" 118 | NICKNAME: "Hüüdnimi" 119 | NORANK: "Pole hinnatud" 120 | OCCUPATION: "Amet" 121 | POSTNO: "Postituste arv" 122 | PROFILE: "Profiil" 123 | SURNAME: "Perekonnanimi" 124 | USERSAVATAR: "'s Avatar" 125 | ForumMember_ForgotNicknameEmail_ss: 126 | HI: "Tere, " 127 | MESSAGE: "Teie kasutajanimi %s jaoks." 128 | USERNAME: "Kasutajanimi:" 129 | ForumMember_TopicNotification_ss: 130 | HI: "Tere %s," 131 | NEWPOSTMESSAGE: "Uus postitus on lisatud teemale kuhu olete teavituse tellinud" 132 | REPLYLINK: "Vaata teemat" 133 | UNSUBSCRIBETEXT: "Ära telli meeldetuletusi sellelt teemalt" 134 | ForumRole: 135 | ADMIN: "Administraator" 136 | ANONYMOUS: "Tavakasutaja" 137 | AVATAR: "Lae üles Avatar" 138 | CANGRAVATAR: "Kui kasutad google avatari jätta see tühjaks" 139 | COMMEMBER: "Komuuni liige" 140 | COUNTRY: "Riik" 141 | EMAIL: "E-post" 142 | FIRSTNAME: "Eesnimi" 143 | MOD: "Moderaator" 144 | NICKNAME: "Hüüdnimi" 145 | OCCUPATION: "Amet" 146 | OPENIDINAME: "OpenID/i-nimi" 147 | PASSOPTMESSAGE: "Kuna esitasite OpenID vastavale I-nimele on parool valikuline. Kuid kui sisestate selle saate hiljem sisse logida ka kasutades oma emaili aadressi." 148 | PASSWORD: "Parool" 149 | PERSONAL: "Personaalsed andmed" 150 | RATING: "Kasutaja tase" 151 | SURNAME: "Perekonnanimi" 152 | TRANSFERSUCCEEDED: "Andmeedastus on õnnestunud. Ent selleks, et täita seda, peate kustutada ForumMember tabelis. Selleks, teostada uuringut \"DROP TABLE 'ForumMember\"." 153 | Forum_editpost_ss: 154 | AVAILABLEBB: "Saada olevad BB koodi vidinad" 155 | Forum_reply_ss: 156 | AVAILABLEBB: "Saada olevad BB koodi vidinad" 157 | Forum_show_ss: 158 | AUTHOR: "Autor" 159 | CLICKGOTOEND: "Vajuta siia, et minna postituse lõppu" 160 | CLICKGOTOTOP: "Tagasi selle postituse ülemisse otsa" 161 | CLICKREPLY: "Vajuta siia et vastata" 162 | GOTOEND: "Mine lõppu" 163 | GOTOTOP: "Tagasi üles" 164 | NEXTLINK: "Järgmine" 165 | NEXTTITLE: "Vaata järgmist lehte" 166 | PAGE: "Lehekülg:" 167 | PREVLINK: "Eelmine" 168 | PREVTITLE: "Vaata eelmist lehte" 169 | REPLY: "Vasta" 170 | TOPIC: "Teema:" 171 | VIEWS: "Vaatamisi" 172 | Forum_starttopic_ss: 173 | AVAILABLEBB: "Saadaolevad BB Koodi Vidinad" 174 | Post: 175 | DELETE: "Kustuta" 176 | EDIT: "Muuda" 177 | PLURALNAME: "Postitused" 178 | POSTEDTO: "Postitatud: %s" 179 | REPLYLINK: "Kirjuta vastus" 180 | RESPONSE: "Re: %s" 181 | SHOWLINK: "Näita juhtlõnga" 182 | SINGULARNAME: "Postitus" 183 | SinglePost_ss: 184 | ATTACHED: "juurde lisatud falid" 185 | GOTOPROFILE: "Mine kasutaja profiililehele" 186 | LASTEDITED: "Viimati muudetud:" 187 | TopicListing_ss: 188 | BY: "-" 189 | CLICKTOUSER: "Vaatamiseks vajuta siia" 190 | GOTOFIRSTUNREAD: "Mine esimese lugemata postituse juurde %s teemas" 191 | -------------------------------------------------------------------------------- /lang/it.yml: -------------------------------------------------------------------------------- 1 | it: 2 | Forum: 3 | ACCESSATTACH: "Possono gli utenti allegare file?" 4 | ACCESSPOST: "Chi può postare sul forum?" 5 | BBCODEHINT: "Mostra Aiuto per la Formattazione" 6 | EDITPOST: "Modifica un post" 7 | LOGINAGAIN: "Sei uscito dal forum. Se vuoi rientrare, inserisci nome utente e la password qui sotto." 8 | LOGINALREADY: "Spiacente, ma non puoi accedere a questo foum se non sei loggato. Se hai un'altro account che può accederci, puoi autenticarti qui sotto." 9 | LOGINDEFAULT: "Inserisci il tuo indirizzo email e la password per visualizzare questo forum" 10 | LOGINTOPOST: "E' necessario fare il login per poter postare sul forum. Puoi autenticarti qui sotto." 11 | LOGINTOPOSTAGAIN: "Sei uscito dal forum. Se vuoi rientrare, inserisci il nome utente e la password qui sotto." 12 | LOGINTOPOSTLOGGEDIN: "Mi dispiace, ma non è possibile postare in questo forum fino a quando non hai eseguito l'accesso. Se hai un altro account che può accederci, puoi autenticarti qui sotto. Se sei registrato e non è ancora possibile postare, allora non hai i permessi per inserire nuovi messaggi." 13 | NEWTOPIC: "Inizia una nuova discussione" 14 | NO: "No" 15 | POSTTOTOPIC: "Post nella discussione '%s'" 16 | READANYONE: "Qualsiasi" 17 | READLIST: "Solo queste persone (scegli dalla lista)" 18 | READLOGGEDIN: "Utenti loggati" 19 | READNOONE: "Nessuno. Rendi il Forum di Sola Lettura" 20 | REMOVE: "elimina" 21 | RSSFORUM: "Post nel forum '%s'" 22 | RSSFORUMS: "Messaggi di tutti i forum" 23 | SUBSCRIBETOPIC: "Iscriviti a questa discussione (Riceverai un'email di notifica quando viene inserita una nuova risposta)" 24 | YES: "Sì" 25 | Forum_ss: 26 | LASTPOST: "Ultimo Messaggio" 27 | NEWTOPIC: "Clicca qui per iniziare una nuova discussione" 28 | NEWTOPICIMAGE: "Inizia nuova discussione" 29 | NEWTOPICTEXT: "clicca qui per iniziare una nuova discussione" 30 | NOTOPICS: "Non ci sono discussioni in questo forum," 31 | POSTS: "Messaggi" 32 | PREVLNK: "Pagina Precedente" 33 | READONLYFORUM: "Questo Forum è di sola lettura. Non puoi rispondere ai post o inserire nuove discussioni." 34 | TOPIC: "Discussione" 35 | ForumAdmin_right_ss: 36 | EDITPAGE: "Modifica Pagina" 37 | WELCOME: "Benvenuto a %s! Seleziona una delle voci sul riquadro a sinistra." 38 | ForumFooter_ss: 39 | CURRENTLYON: "Utenti Online:" 40 | ISONLINE: "è online" 41 | LATESTMEMBER: "Benvenuto al nostro ultimo membro." 42 | NOONLINE: "Non c'è nessuno online." 43 | ForumHeader_ss: 44 | BY: "di" 45 | IN: "in" 46 | JUMPTO: "Vai a:" 47 | MEMBERS: "membri" 48 | POSTS: "Messaggi" 49 | SEARCHBUTTON: "Cerca" 50 | SELECT: "Seleziona" 51 | TOPICS: "Discussioni" 52 | ForumHolder: 53 | SEARCHEDFOR: "Hai cercato '%s'" 54 | SEARCHRESULTS: "Risultati della ricerca" 55 | ForumHolder_ss: 56 | FORUM: "Forum" 57 | LASTPOST: "Ultimo Post" 58 | POSTS: "Messaggi" 59 | THREADS: "Discussioni" 60 | ForumHolder_search_ss: 61 | NORESULTS: "Non ci sono risultati per questa/e parola/e" 62 | PAGE: "Pagina:" 63 | ForumLogin_ss: 64 | LOGGEDINAS: "Sei loggato come" 65 | LOGIN: "Login" 66 | LOGINEXPLICATION: "Clicca qui per fare il login" 67 | LOGOUT: "Scollegati" 68 | LOGOUTEXPLICATION: "Clicca qui per uscire" 69 | LOSTPASS: "Password dimenticata" 70 | LOSTPASSEXPLICATION: "Clicca qui per recuperare la vostra password" 71 | OPENID: "registrati con OpenID" 72 | OPENIDDESC1: "OpenID è un sistema di identificazione per siti Internet che ti permette di accedere a molti siti web con un unico account. " 73 | OPENIDDESC2: "Con OpenID, il tuo ID diventa un URL (ad esempio http://username.myopenid.com/). È possibile ottenere un OpenID da myopenid.com." 74 | OPENIDDESC3: "Per ulteriori informazioni visita il sito ufficiale OpenID." 75 | OPENIDEXPLICATION: "Clicca qui per registrarti con OpenID" 76 | PROFILE: "Profilo" 77 | PROFILEEXPLICATION: "Clicca qui per modificare questo profilo" 78 | REGEXPLICATION: "Clicca qui per registrarti" 79 | REGISTER: "Registrati" 80 | WHATOPENID: "Cos'è OpenID?" 81 | WHATOPENIDUPPER: "Cos'è OpenID?" 82 | ForumMemberProfile: 83 | AUTHENTICATIONFAILED: "L'autenticazione con OpenID/i-name non è riuscita." 84 | CANCELLEDVERIFICATION: "La verifica è stata annullata. Riprova." 85 | EMAILEXISTS: "Spiacente, l'indirizzo email è già in uso. Specificarne un'altro." 86 | ENTEROPENID: "Inserisci il tuo OpenID per continuare la registrazione" 87 | FORUMREGTITLE: "Registrazione al Forum" 88 | FORUMUSERPROFILE: "Profilo Utente del Forum" 89 | FORUMUSERREGISTER: "Registrazione Forum" 90 | NICKNAMEEXISTS: "Spiacente, il nickname è già in uso. Specificarne un'altro." 91 | OPENIDEXISTS: "Spiacente, questo OpenID è già registrato. Specificarne un'altro o registrati senza OpenID" 92 | REGISTER: "Registrati" 93 | REGISTEROPENID: "Registrati con OpenID" 94 | SAVECHANGES: "Salva modifiche" 95 | UNEXPECTEDERROR: "Si è verificato un errore inatteso. Riprova ancora o registrati senza OpenID" 96 | USERPROFILE: "Profilo utente" 97 | WRONGPERMISSION: "Non hai i permessi per modificare questo membro." 98 | ForumMemberProfile_show_ss: 99 | AVATAR: "Avatar" 100 | COUNTRY: "Paese" 101 | EMAIL: "Email" 102 | FIRSTNAME: "Nome" 103 | FORUMRANK: "Forum ranking" 104 | LASTPOST: "Ultimo messaggio: %s" 105 | LATESTPOSTS: "Ultimi Messaggi" 106 | NICKNAME: "Nickname" 107 | NORANK: "No ranking" 108 | OCCUPATION: "Occupazione" 109 | POSTNO: "Numero di messaggi" 110 | PROFILE: "Profilo" 111 | SURNAME: "Cognome" 112 | USERSAVATAR: "avatar" 113 | ForumMember_ForgotNicknameEmail_ss: 114 | HI: "Salve," 115 | MESSAGE: "Questo è il tuo nome utente per %s" 116 | USERNAME: "Nome utente:" 117 | ForumMember_TopicNotification_ss: 118 | HI: "Salve %s," 119 | NEWPOSTMESSAGE: "E' stato inserito un nuovo post alla discussione a cui ti sei iscritto. Puoi vedere il post cliccando qui." 120 | ForumRole: 121 | ADMIN: "Amministratore" 122 | ANONYMOUS: "Utente Anonimo" 123 | AVATAR: "Carica avatar" 124 | COMMEMBER: "Membro della community" 125 | COUNTRY: "Paese" 126 | EMAIL: "Email" 127 | FIRSTNAME: "Nome" 128 | MOD: "Moderatore" 129 | NICKNAME: "Nickname" 130 | OCCUPATION: "Occupazione" 131 | OPENIDINAME: "OpenID/i-name" 132 | PASSOPTMESSAGE: "Dal momento che hai fornito un OpenID, rispettivamente i-name, la password è facoltativa. Se ne inserisci uno, sarai in grado di accedere anche con il tuo indirizzo e-mail." 133 | PASSWORD: "Password" 134 | PERSONAL: "Dettagli Personali" 135 | RATING: "User rating" 136 | SURNAME: "Cognome" 137 | TRANSFERSUCCEEDED: "Il trasferimento dati è avvenuto con successo. In ogni caso, per completare, devi eliminare la tabella ForumMember . Per farlo, esegui la query \"DROP TABLE 'ForumMember'\"." 138 | Forum_editpost_ss: 139 | AVAILABLEBB: "Tags BB Code disponibili" 140 | Forum_reply_ss: 141 | AVAILABLEBB: "Tags BB Code disponibili" 142 | Forum_show_ss: 143 | AUTHOR: "Autore" 144 | CLICKGOTOEND: "Clicca qui per andare alla fine di questo post" 145 | CLICKGOTOTOP: "Clicca qui per andare all'inizio di questo post" 146 | CLICKREPLY: "Clicca per Rispondere" 147 | GOTOEND: "Vai alla Fine" 148 | GOTOTOP: "Vai all'inizio" 149 | NEXTLINK: "Succ" 150 | NEXTTITLE: "Mostra la pagina successiva" 151 | PAGE: "Pagina:" 152 | PREVLINK: "Prec" 153 | PREVTITLE: "Mostra la pagina precedente" 154 | REPLY: "Rispondi" 155 | TOPIC: "Messaggio:" 156 | VIEWS: "Visite" 157 | Forum_starttopic_ss: 158 | AVAILABLEBB: "Tags BB Code Disponibili" 159 | Post: 160 | DELETE: "elimina" 161 | EDIT: "modifica" 162 | POSTEDTO: "Postato in: %s" 163 | RESPONSE: "R: %s" 164 | SinglePost_ss: 165 | ATTACHED: "File Allegati" 166 | GOTOPROFILE: "Vai a questo Profilo Utente" 167 | LASTEDITED: "Ultima modifica:" 168 | -------------------------------------------------------------------------------- /lang/nb.yml: -------------------------------------------------------------------------------- 1 | nb: 2 | Forum: 3 | ACCESSATTACH: "Kan brukere legge ved filer?" 4 | ACCESSPOST: "Hvem kan skrive i forumet?" 5 | BBCODEHINT: "Vis formatteringshjelp" 6 | EDITPOST: "Endre en melding" 7 | FORUMMONTHLYPOSTS: "Foruminnlegg sortert etter måned" 8 | FORUMSIGNUPS: "Nye foruminnmeldinger etter måned " 9 | LOGINAGAIN: "Du er logget ut av forum. Hvis du ønsker å logge inn igjen, skriv inn brukernavn og passord under." 10 | LOGINALREADY: "Jeg beklager, men du kan ikke få tilgang til forum før du er logget inn. Om du ønsker å logge inn som noen andre, gjør det under" 11 | LOGINDEFAULT: "Skriv inn epostadresse og passord for å vise dette forum." 12 | LOGINTOPOST: "Du må logge inn før du kan skrive til forum. Vennligst se under." 13 | LOGINTOPOSTAGAIN: "Du er logget ut av forum. Om du ønsker å logge inn igjen for å skrive i forum, skriv inn brukernavn og passord under." 14 | LOGINTOPOSTLOGGEDIN: "Jeg beklager, men du kan ikke skrive i dette forum før du er logget inn. Om du ønsker å logge inn som noen andre, gjør det under. Om du er logget inn og du fortsatt ikke kan skrive i forum, så har du ikke korrekt tilgang til å skrive." 15 | NEWTOPIC: "Start et nytt emne" 16 | NO: "Nei" 17 | PLURALNAME: "Forum" 18 | POSTTOTOPIC: "Skriv melding til '%s' emne" 19 | READANYONE: "Alle" 20 | READLIST: "Bare disse menneskene" 21 | READLOGGEDIN: "Brukere som er logget inn" 22 | READNOONE: "Ingen. Gjør forumet til \"kun lese\"" 23 | REMOVE: "Fjern" 24 | RSSFORUM: "Send til '%s' forum" 25 | RSSFORUMS: "Send til alle forum" 26 | SINGULARNAME: "Forum" 27 | SUBSCRIBETOPIC: "Meld deg på dette emne (Motta epostmelding når ett nytt svar er lagt til)" 28 | YES: "Ja" 29 | Forum_ss: 30 | ANNOUNCEMENTS: "Annonseringer" 31 | GOTOTHISTOPIC: "Gå til %s emne" 32 | LASTPOST: "Siste meldinger" 33 | NEWTOPIC: "Klikk her for å starte nytt emne" 34 | NEWTOPICIMAGE: "Start nytt emne" 35 | NEWTOPICTEXT: "klikk her for å starte et nytt emne" 36 | NOTOPICS: "Det er ingen emner i dette forum," 37 | POSTS: "Meldinger" 38 | PREVLNK: "Forrige side" 39 | READONLYFORUM: "Dette forum kan bare leses. Du kan ikke svare eller starte nye tråder." 40 | TOPIC: "Emne" 41 | ForumAdmin_right_ss: 42 | EDITPAGE: "Endre side" 43 | WELCOME: "Velkommen til %s! Vennligst klikk på en av inngangene på venstre side." 44 | ForumCategory: 45 | PLURALNAME: "Forum Kategorier" 46 | SINGULARNAME: "Forum Kategori" 47 | ForumFooter_ss: 48 | CURRENTLYON: "Pålogget nå:" 49 | ISONLINE: "er pålogget" 50 | LATESTMEMBER: "Velkommen til vårt nyeste medlem:" 51 | NOONLINE: "Ingen er pålogget." 52 | ForumHeader_ss: 53 | BY: "av" 54 | IN: "i" 55 | JUMPTO: "Gå til:" 56 | MEMBERS: "medlemmer" 57 | POSTS: "Meldinger" 58 | SEARCHBUTTON: "Søk" 59 | SELECT: "Velg" 60 | TOPICS: "Emner" 61 | ForumHolder: 62 | PLURALNAME: "Forum Holdere" 63 | SEARCHEDFOR: "Du søkte etter '%s'." 64 | SEARCHRESULTS: "Søkeresultat" 65 | SINGULARNAME: "Forum Holder" 66 | ForumHolder_ss: 67 | FORUM: "Forum" 68 | FORUMS: "Forum" 69 | LASTPOST: "Siste melding" 70 | POSTS: "Meldinger" 71 | THREADS: "Tråder" 72 | ForumHolder_search_ss: 73 | NORESULTS: "Det er ingen resultater for disse ord(ene)" 74 | PAGE: "Side:" 75 | ForumLogin_ss: 76 | LOGGEDINAS: "Du er logget inn som" 77 | LOGIN: "Logg inn" 78 | LOGINEXPLICATION: "Klikk her for å logge inn" 79 | LOGOUT: "Logge ut" 80 | LOGOUTEXPLICATION: "Klikk her for å logge ut" 81 | LOSTPASS: "Glemt passord" 82 | LOSTPASSEXPLICATION: "Klikk her for å motta ditt passord" 83 | OPENID: "registrer med OpenID" 84 | OPENIDDESC1: "OpenID er et internett identifikasjonssystem som gir deg anledning til å logge deg på mange websider med en enkelt konto." 85 | OPENIDDESC2: "Med OpenID, din ID blir en URL (f.eks. http://username.myopenid.com/). du kan få en fri OpenID f.eks fra myopenid.com." 86 | OPENIDDESC3: "For mere informasjon besøk offisiell OpenID side." 87 | OPENIDEXPLICATION: "Klikk her for å registrere med OpenID" 88 | PROFILE: "Profil" 89 | PROFILEEXPLICATION: "Klikk her for å endre din profil" 90 | REGEXPLICATION: "Klikk her for å registrere deg" 91 | REGISTER: "Registrer" 92 | WHATOPENID: "Hva er OpenID?" 93 | WHATOPENIDUPPER: "Hva er OpenID?" 94 | ForumMemberProfile: 95 | AUTHENTICATIONFAILED: "OpenID/i-navn autentifiseringen feilet." 96 | CANCELLEDVERIFICATION: "Verifikasjonen ble avbrutt. Vennligst prøv igjen." 97 | EMAILEXISTS: "Beklager men den epostadressen eksisterer allerede. Vennligst velg en annen." 98 | ENTEROPENID: "Vennligst skriv inn din OpenID for å fortsette registrering" 99 | FORUMREGTITLE: "Forum Registrering" 100 | FORUMUSERPROFILE: "Forum brukerprofil" 101 | FORUMUSERREGISTER: "Forum registrering" 102 | NICKNAMEEXISTS: "Beklager, dette nicket eksisterer allerede. Vennligst velg et annet." 103 | OPENIDEXISTS: "Beklager, men den OpenID eksisterer allerede. Vennligst velg en anne eller registrer uten OpenID." 104 | REGISTER: "Register" 105 | REGISTEROPENID: "Registrer med OpenID" 106 | SAVECHANGES: "Lagre endringer" 107 | UNEXPECTEDERROR: "En uventet feil oppstod. Vennligst forsøk å registrer en gang til uten OpenID" 108 | USERPROFILE: "Brukerprofil" 109 | WRONGPERMISSION: "Du har ikke tilgang til å endre det medlemmet." 110 | ForumMemberProfile_show_ss: 111 | AVATAR: "Avatar" 112 | COUNTRY: "Land" 113 | EMAIL: "Epost" 114 | FIRSTNAME: "Fornavn" 115 | FORUMRANK: "Forum rangering" 116 | LASTPOST: "Siste melding %s" 117 | LATESTPOSTS: "Siste meldinger" 118 | NICKNAME: "Nick" 119 | NORANK: "Ingen rangering" 120 | OCCUPATION: "Yrke" 121 | POSTNO: "Antall meldinger" 122 | PROFILE: "Profil" 123 | SURNAME: "Etternavn" 124 | USERSAVATAR: "'s avatar" 125 | ForumMember_ForgotNicknameEmail_ss: 126 | HI: "Hei," 127 | MESSAGE: "Her er ditt brukernavn for %s." 128 | USERNAME: "Brukernavn:" 129 | ForumMember_TopicNotification_ss: 130 | HI: "Hei %s," 131 | NEWPOSTMESSAGE: "En ny melding er lagt til emne du har meldt deg på." 132 | REPLYLINK: "Vis emne" 133 | UNSUBSCRIBETEXT: "Meld av dette emne" 134 | ForumRole: 135 | ADMIN: "Administrator" 136 | ANONYMOUS: "Anonym bruker" 137 | AVATAR: "Last opp avatar" 138 | CANGRAVATAR: "Om du bruker Gravatars så la denne være tom" 139 | COMMEMBER: "Forum medlem" 140 | COUNTRY: "Land" 141 | EMAIL: "Epost" 142 | FIRSTNAME: "Fornavn" 143 | MOD: "Moderator" 144 | NICKNAME: "Nick" 145 | OCCUPATION: "Yrke" 146 | OPENIDINAME: "OpenID/i-name" 147 | PASSOPTMESSAGE: "Siden du har en OpenID eller et i-name passordet valgfritt. Om du skriver inn et, vil du også kunne logge inn med din epostadresse." 148 | PASSWORD: "Passord" 149 | PERSONAL: "Personlige opplysninger" 150 | RATING: "Bruker poeng" 151 | SURNAME: "Etternavn" 152 | TRANSFERSUCCEEDED: "Dataoverføringen var vellykket. Men, for å fullføre den må du slette forummedlemstabell. For å gjøre dette, utfør spørringen \"DROP TABLE 'ForumMember'\"" 153 | Forum_editpost_ss: 154 | AVAILABLEBB: "Tilgjengelige BB Kode tagger" 155 | Forum_reply_ss: 156 | AVAILABLEBB: "Tilgjengelige BB Kode tagger" 157 | Forum_show_ss: 158 | AUTHOR: "Forfatter" 159 | CLICKGOTOEND: "klikk her for å gå til slutten av meldingen" 160 | CLICKGOTOTOP: "Klikk her for å gå til toppen av meldingen" 161 | CLICKREPLY: "Klikk for å svare" 162 | GOTOEND: "Gå til slutten" 163 | GOTOTOP: "Gå til toppen" 164 | NEXTLINK: "Neste" 165 | NEXTTITLE: "Vis neste side" 166 | PAGE: "Side:" 167 | PREVLINK: "Forrige" 168 | PREVTITLE: "Vis forrige side" 169 | REPLY: "Svar" 170 | TOPIC: "Emne:" 171 | VIEWS: "Visninger" 172 | Forum_starttopic_ss: 173 | AVAILABLEBB: "Tilgjengelige BB Kode tagger" 174 | Post: 175 | DELETE: "slette" 176 | EDIT: "endre" 177 | PLURALNAME: "Poster" 178 | POSTEDTO: "Sende til: %s" 179 | REPLYLINK: "Svar på post" 180 | RESPONSE: "Sv: %s" 181 | SHOWLINK: "Vis tråd" 182 | SINGULARNAME: "Post" 183 | SinglePost_ss: 184 | ATTACHED: "Vedlagte filer" 185 | GOTOPROFILE: "Gå til brukerprofil" 186 | LASTEDITED: "Sist endret:" 187 | TopicListing_ss: 188 | BY: "av" 189 | CLICKTOUSER: "Klikk her for å vise" 190 | GOTOFIRSTUNREAD: "Gå til den første uleste posten i %s emne." 191 | -------------------------------------------------------------------------------- /lang/pl.yml: -------------------------------------------------------------------------------- 1 | pl: 2 | Forum: 3 | ACCESSATTACH: "Czy użytkownik może dodawać pliki?" 4 | ACCESSPOST: "Kto może pisać na tym forum?" 5 | BBCODEHINT: "Pokaż pomoc do formatowania" 6 | EDITPOST: "Edytuj Post" 7 | LOGINAGAIN: "Wylogowałeś się z forum. Jeśli chcesz się ponownie zalogować, podaj nazwę użytkownika i hasło poniżej" 8 | LOGINALREADY: "Wybacz, ale nie możesz uzyskać dostępu do tego forum, dopóki nie jesteś zalogowany. Jeśli chcesz się zalogować, zrób to poniżej" 9 | LOGINDEFAULT: "Podaj swój adres e-mail i hasło, aby zobaczyć to forum." 10 | LOGINTOPOST: "Musisz się zalogować aby uzyskać dostęp do forum. Proszę, zrób to poniżej." 11 | LOGINTOPOSTAGAIN: "Wylogowałeś się z forum. Jeśli chcesz zalogować się ponownie aby wysyłać wiadomości, podaj nazwę użytkownika i hasło poniżej." 12 | LOGINTOPOSTLOGGEDIN: "Wybacz, ale nie możesz pisać na tym forum, dopóki nie jesteś zalogowany. Jeśli chcesz się zalogować jako ktoś inny, zrób to poniżej. Jeśli jesteś zalogowany i nadal nie możesz wysyłać wiadomości, to znaczy, że nie masz odpowiednich uprawnień na tym forum." 13 | NEWTOPIC: "Rozpocznij Nowy Temat" 14 | NO: "Nie" 15 | POSTTOTOPIC: "Wiadomości w wątku '%s'" 16 | READANYONE: "Każdy" 17 | READLIST: "Tylko ci użytkownicy (wybierz z listy)" 18 | READLOGGEDIN: "Zalogowani użytkownicy" 19 | READNOONE: "Nikt. Zmień forum na \"tylko do odczytu\"" 20 | REMOVE: "usuń" 21 | RSSFORUM: "Wiadomości na forum '%s'" 22 | RSSFORUMS: "Wiadomości na wszystkich forach" 23 | SUBSCRIBETOPIC: "Śledź ten wątek (system będzie wysyłał do Ciebie e-mail, gdy w wątku pojawi się nowa wiadomość)" 24 | YES: "Tak" 25 | Forum_ss: 26 | LASTPOST: "Ostatni Post" 27 | NEWTOPIC: "Kliknij tutaj, aby rozpocząć nowy wątek." 28 | NEWTOPICIMAGE: "Nowy Temat" 29 | NEWTOPICTEXT: "kliknij tutaj aby zacząć nowy temat" 30 | NOTOPICS: "Nie ma tematów na tym forum," 31 | POSTS: "Posty" 32 | PREVLNK: "Poprzednia Strona" 33 | READONLYFORUM: "To jest forum tylko do odczytu. Nie możesz odpowiadać na wiadomości ani wysyłać nowych wątków." 34 | TOPIC: "Temat" 35 | ForumAdmin_right_ss: 36 | EDITPAGE: "Edytuj Stronę" 37 | ForumFooter_ss: 38 | CURRENTLYON: "Aktualnie Online:" 39 | ISONLINE: "jest online" 40 | LATESTMEMBER: "Witamy najnowszego użytkownika:" 41 | NOONLINE: "Nie ma nikogo online." 42 | ForumHeader_ss: 43 | BY: "przez" 44 | IN: "w" 45 | JUMPTO: "Przejdź do:" 46 | MEMBERS: "użytkowników" 47 | POSTS: "Posty" 48 | SEARCHBUTTON: "Szukaj" 49 | SELECT: "Wybierz" 50 | TOPICS: "Tematach" 51 | ForumHolder: 52 | SEARCHEDFOR: "Szukałeś '%s'." 53 | SEARCHRESULTS: "Wyniki wyszukiwania" 54 | ForumHolder_ss: 55 | FORUM: "Forum" 56 | LASTPOST: "Ostatni Post" 57 | POSTS: "Posty" 58 | THREADS: "Wątki" 59 | ForumHolder_search_ss: 60 | PAGE: "Strona:" 61 | ForumLogin_ss: 62 | LOGGEDINAS: "Jesteś zalogowany jako" 63 | LOGIN: "Login" 64 | LOGINEXPLICATION: "Zaloguj się" 65 | LOGOUT: "Wyloguj" 66 | LOGOUTEXPLICATION: "Kliknij tutaj aby się wylogować" 67 | LOSTPASS: "Zapomniałeś hasła?" 68 | LOSTPASSEXPLICATION: "Kliknij tutaj aby odzyskać swoje hasło" 69 | OPENID: "rejestracja OpenID" 70 | OPENIDDESC1: "OpenID to ogólnointernetowy system identyfikacji, dzięki któremu możesz logować się na wiele stron przy pomocy tylko jednego konta." 71 | OPENIDDESC2: "Z OpenID, Twój identyfikator staje się adersem internetowym (np. http://NazwaUżytkownika.openid.pl/). Możesz zdobyć swoje OpenID za darmo w wielu miejscach, np. openid.pl." 72 | OPENIDDESC3: "Odwiedź oficjalną stronę OpenID, aby uzyskać więcej informacji." 73 | OPENIDEXPLICATION: "Kliknij tutaj, aby się zarejestrować za pomocą OpenID" 74 | PROFILE: "Profil" 75 | PROFILEEXPLICATION: "Edytuj profil" 76 | REGEXPLICATION: "Kliknij tutaj aby się zarejestrować" 77 | REGISTER: "Rejestracja" 78 | WHATOPENID: "Czym jest OpenID?" 79 | WHATOPENIDUPPER: "Czym jest OpenID?" 80 | ForumMemberProfile: 81 | CANCELLEDVERIFICATION: "Weryfikacja została przerwana. Proszę spróbować ponownie." 82 | EMAILEXISTS: "Wybacz, ale ten e-mail został już przez kogoś wykorzystany. Proszę wybrać inny." 83 | ENTEROPENID: "Podaj swoje OpenID, aby kontynuować rejestrację." 84 | FORUMREGTITLE: "Rejestracja na forum" 85 | FORUMUSERPROFILE: "Profil Użytkownika" 86 | FORUMUSERREGISTER: "Rejestracja na Forum" 87 | OPENIDEXISTS: "Wybacz, ale to OpenID zostało już przez kogoś wykorzystane. Proszę wybrać inne lub zarejestrować się bez OpenID." 88 | REGISTER: "Rejestracja" 89 | REGISTEROPENID: "Zarejestruj z OpenID" 90 | SAVECHANGES: "Zapisz zmiany" 91 | UNEXPECTEDERROR: "Wystąpił niespodziewany błąd. Proszę spróbować ponownie, bądź zrezygnować z wykorzystania OpenID podczas rejestracji." 92 | USERPROFILE: "Profil Użytkownika" 93 | WRONGPERMISSION: "Nie masz wystarczających uprawnień, aby modyfikować dane tego użytkownika." 94 | ForumMemberProfile_show_ss: 95 | AVATAR: "Avatar" 96 | COUNTRY: "Państwo" 97 | EMAIL: "Email" 98 | FIRSTNAME: "Imię" 99 | FORUMRANK: "Ranking na forum" 100 | LASTPOST: "Ostatni post: %s" 101 | LATESTPOSTS: "Ostatnie Posty" 102 | NICKNAME: "Pseudonim" 103 | NORANK: "Brak rankingu" 104 | OCCUPATION: "Zawód" 105 | POSTNO: "Ilość postów" 106 | PROFILE: "Profil" 107 | SURNAME: "Nazwisko" 108 | USERSAVATAR: "'s avatar" 109 | ForumMember_ForgotNicknameEmail_ss: 110 | HI: "Witaj," 111 | MESSAGE: "Oto Twoja nazwa użytkownika dla %s." 112 | USERNAME: "Nazwa użytkownika:" 113 | ForumMember_TopicNotification_ss: 114 | HI: "Witaj %s," 115 | NEWPOSTMESSAGE: "Nowa wiadomość pojawiła się w śledzonym przez Ciebie wątku. Możesz zobaczyć tą wiadomość klikając tutaj." 116 | ForumRole: 117 | ADMIN: "Administrator" 118 | ANONYMOUS: "Anonimowy użytkownik" 119 | AVATAR: "Wgraj avatar" 120 | COMMEMBER: "Członek społeczności" 121 | COUNTRY: "Państwo" 122 | EMAIL: "Email" 123 | FIRSTNAME: "Imię" 124 | MOD: "Moderator" 125 | NICKNAME: "Pseudonim" 126 | OCCUPATION: "Zawód" 127 | OPENIDINAME: "OpenID/i-name" 128 | PASSWORD: "Hasło" 129 | PERSONAL: "Szczegóły" 130 | RATING: "Ranking użytkownika" 131 | SURNAME: "Nazwisko" 132 | TRANSFERSUCCEEDED: "Transfer danych zakończył się sukcesem. Musisz teraz skasować tabelę ForumMember. Aby to zrobić, wykonaj zapytanie SQL \"DROP TABLE 'ForumMembers'\"." 133 | Forum_editpost_ss: 134 | AVAILABLEBB: "Dostępne tagi BB Code" 135 | Forum_reply_ss: 136 | AVAILABLEBB: "Dostępne tagi BB Code" 137 | Forum_show_ss: 138 | AUTHOR: "Autor" 139 | CLICKREPLY: "Kliknij tutaj, aby odpowiedzieć" 140 | GOTOEND: "Przejdź do końca" 141 | GOTOTOP: "Przejdź do góry" 142 | NEXTLINK: "Następny" 143 | PAGE: "Strona:" 144 | PREVLINK: "Poprzednia" 145 | PREVTITLE: "Przejdź do poprzedniej strony" 146 | REPLY: "Odpowiedz" 147 | TOPIC: "Temat:" 148 | VIEWS: "Wyświetlenia" 149 | Forum_starttopic_ss: 150 | AVAILABLEBB: "Dostępne tagi BBCode" 151 | Post: 152 | DELETE: "usuń" 153 | EDIT: "edytuj" 154 | POSTEDTO: "Wysłano do: %s" 155 | RESPONSE: "Re: %s" 156 | SinglePost_ss: 157 | ATTACHED: "Dołączone Pliki:" 158 | GOTOPROFILE: "Przejdź do Profilu Użytkownika" 159 | LASTEDITED: "Ostatnio edytowane:" 160 | -------------------------------------------------------------------------------- /lang/pt_BR.yml: -------------------------------------------------------------------------------- 1 | pt_BR: 2 | Forum: 3 | ACCESSATTACH: "Usuários podem adicionar arquivos?" 4 | ACCESSPOST: "Quem pode escrever no fórum?" 5 | BBCODEHINT: "Ver ajuda sobre formatação" 6 | EDITPOST: "Editar um item" 7 | FORUMMONTHLYPOSTS: "Posts do fórum por mês" 8 | FORUMSIGNUPS: "Logados no fórum por Mês" 9 | LOGINAGAIN: "Você saiu do fórum. Se você quiser se logar novamente, use o formulário abaixo" 10 | LOGINALREADY: "Desculpe-nos, mais para acessar este fórum, você deve esta logado. Se você deseja acessar este fórum como outra pessoa, use o formulário abaixo" 11 | LOGINDEFAULT: "Você tem que esta logado para acessar este fórum" 12 | LOGINTOPOST: "Você precisa esta logado pra poder acessar o forum. Por favor, utilize o formulário abaixo." 13 | LOGINTOPOSTAGAIN: "Você fez o logout do fórum. Caso deseje logar-se novamente, utilize o formulário a seguir." 14 | LOGINTOPOSTLOGGEDIN: "Você precisa esta logado pra poder acessar o forum. Se quiser se logar como uma outra pessoa, utilize o formulário a seguer. Caso ainda não consiga acessar o fórum é porque você não tem permissão." 15 | NEWTOPIC: "Iniciar um novo tópico" 16 | NO: "Não" 17 | PLURALNAME: "Fórums" 18 | POSTTOTOPIC: "Itens do tópico '%s' " 19 | READANYONE: "Todo mundo" 20 | READLIST: "Apenas as pessoas selecionadas nesta lista" 21 | READLOGGEDIN: "Usuários Logados" 22 | READNOONE: "Ninguém. Este foram é somente leitura" 23 | REMOVE: "excluir" 24 | RSSFORUM: "Escrito no fórum '%s' " 25 | RSSFORUMS: "Escrever em todos os fóruns" 26 | SINGULARNAME: "Fórum" 27 | SUBSCRIBETOPIC: "Inscrever-se neste tópico(Receba notificações via email quando este tópico for atualizado)" 28 | YES: "Sim" 29 | Forum_ss: 30 | ANNOUNCEMENTS: "Anúncios" 31 | GOTOTHISTOPIC: "Ir para o tópico %s" 32 | LASTPOST: "Ultimo Post" 33 | NEWTOPIC: "Clique aqui para adicionar novo tópico" 34 | NEWTOPICIMAGE: "Iniciar novo tópico" 35 | NEWTOPICTEXT: "clique aqui para iniciar um novo tópico" 36 | NOTOPICS: "Não existe tópicos neste fórum," 37 | POSTS: "Posts" 38 | PREVLNK: "Página inicial" 39 | READONLYFORUM: "Este Fórum é apenas leitura. Você não pode escrever replica ou criar novas threads" 40 | TOPIC: "Tópico" 41 | ForumAdmin_right_ss: 42 | EDITPAGE: "Editar Página" 43 | WELCOME: "Bem vindo ao %s! Por favor, selecione um dos itens do painel esquerdo." 44 | ForumCategory: 45 | PLURALNAME: "Categorias do fórum" 46 | SINGULARNAME: "Categoria do fórum" 47 | ForumFooter_ss: 48 | CURRENTLYON: "Logados:" 49 | ISONLINE: "esta online" 50 | LATESTMEMBER: "Bem vindo ao nosso ultimo usuário:" 51 | NOONLINE: "Não existe ninguém online." 52 | ForumHeader_ss: 53 | BY: "por" 54 | IN: "em" 55 | JUMPTO: "Ir para:" 56 | MEMBERS: "usuários" 57 | POSTS: "Artigos" 58 | SEARCHBUTTON: "Pesquisa:" 59 | SELECT: "Selecione" 60 | TOPICS: "Tópicos" 61 | ForumHolder: 62 | PLURALNAME: "Repositórios de Fórum" 63 | SEARCHEDFOR: "Sua pesquisa por '%s'." 64 | SEARCHRESULTS: "Resultados da pesquisa" 65 | SINGULARNAME: "Repositório de Fórum" 66 | ForumHolder_ss: 67 | FORUM: "Fórum" 68 | FORUMS: "Fóruns" 69 | LASTPOST: "Ultimo Post" 70 | POSTS: "Posts" 71 | THREADS: "Threads" 72 | ForumHolder_search_ss: 73 | NORESULTS: "Não existe resultados para esta(s) palavra(s)" 74 | PAGE: "Página:" 75 | ForumLogin_ss: 76 | LOGGEDINAS: "Você esta logado como" 77 | LOGIN: "Login" 78 | LOGINEXPLICATION: "Clique aqui para logar" 79 | LOGOUT: "Sair" 80 | LOGOUTEXPLICATION: "clique aqui para sair" 81 | LOSTPASS: "Esqueceu a senha" 82 | LOSTPASSEXPLICATION: "Clique aqui para recuperar sua senha" 83 | OPENID: "registrar com OpenID" 84 | OPENIDDESC1: "É um sistema de identificação muito utilizado que permite que você se logue em diversos sites com apenas uma conta." 85 | OPENIDDESC2: "Com o OpenID, sua identificação se torna (ex. http://nomedeusuario.myopenid.com/). Você pode obter uma conta OpenID grátis por exemplo no site myopenid.com." 86 | OPENIDDESC3: "Para mais informação visite Site oficial do OpenID." 87 | OPENIDEXPLICATION: "Clique aqui para se registrar com OpenID" 88 | PROFILE: "Perfil" 89 | PROFILEEXPLICATION: "Clique aqui para editar seu pefil" 90 | REGEXPLICATION: "Clique aqui para se registar" 91 | REGISTER: "registar" 92 | WHATOPENID: "O que é OpenID?" 93 | WHATOPENIDUPPER: "O que é OpenID?" 94 | ForumMemberProfile: 95 | AUTHENTICATIONFAILED: "A autenticação usando OpenID falhou." 96 | CANCELLEDVERIFICATION: "A verificação foi cancelada. Tente novamente." 97 | EMAILEXISTS: "Desculpe-nos, mais o e-mail que informou já esta cadastrado. Por favor, informe outro." 98 | ENTEROPENID: "Por favor, entre com o seu OpenID para continuar seu cadastro" 99 | FORUMREGTITLE: "Registo do fórum" 100 | FORUMUSERPROFILE: "Perfil do usuário do forúm" 101 | FORUMUSERREGISTER: "Registo do fórum" 102 | NICKNAMEEXISTS: "Desculpe-nos, mais este apelido já esta em uso. Por favor escolha outro." 103 | OPENIDEXISTS: "Desculpe-nos, mais o OpenID que você informou já esta cadastrado. Por favor, escolha outro ou cadastre-se sem OpenID" 104 | REGISTER: "Registo" 105 | REGISTEROPENID: "Registo com OpenID" 106 | SAVECHANGES: "Mudanças salvas" 107 | UNEXPECTEDERROR: "Ocorreu um erro não identificado. Por favor, tente novamente ou registre-se sem utilizar o OpenID" 108 | USERPROFILE: "Perfil do usuário" 109 | WRONGPERMISSION: "Você não tem permissão para editar este usuário." 110 | ForumMemberProfile_show_ss: 111 | AVATAR: "Avatar" 112 | COUNTRY: "Pais" 113 | EMAIL: "E-mail" 114 | FIRSTNAME: "Primeiro nome" 115 | FORUMRANK: "Classificação do Fórum" 116 | LASTPOST: "Ultimo item: %s " 117 | LATESTPOSTS: "Ultimo item" 118 | NICKNAME: "Apelido" 119 | NORANK: "Sem classificação" 120 | OCCUPATION: "Ocupação" 121 | POSTNO: "Numero de posts" 122 | PROFILE: "Perfil" 123 | SURNAME: "Sobrenome" 124 | USERSAVATAR: "'s avatar" 125 | ForumMember_ForgotNicknameEmail_ss: 126 | HI: "Oi," 127 | MESSAGE: "Aqui esta o seu login para %s." 128 | USERNAME: "Login:" 129 | ForumMember_TopicNotification_ss: 130 | HI: "Oi %s," 131 | NEWPOSTMESSAGE: "Um novo post foi incluível para o tópico que você esta inscrito." 132 | REPLYLINK: "Visualizar tópico" 133 | UNSUBSCRIBETEXT: "Desligar-se do tópico" 134 | ForumRole: 135 | ADMIN: "Administrador" 136 | ANONYMOUS: "Usuário Anonimo" 137 | AVATAR: "Enviar imagem de Avatar" 138 | CANGRAVATAR: "se você usa Gravatars deixe isto em branco" 139 | COMMEMBER: "Comunidade" 140 | COUNTRY: "Pais" 141 | EMAIL: "Email" 142 | FIRSTNAME: "Primeiro nome" 143 | MOD: "Moderador" 144 | NICKNAME: "Apelido" 145 | OCCUPATION: "Ocupação" 146 | OPENIDINAME: "OpenID/i-name" 147 | PASSOPTMESSAGE: "Como você informou um OpenID e um i-name, a senha é opcional. Caso você informe um e-mail, você também poderá logar com ele." 148 | PASSWORD: "Senha" 149 | PERSONAL: "Dados pessoais" 150 | RATING: "Avaliação do usuário" 151 | SURNAME: "Sobrenome" 152 | TRANSFERSUCCEEDED: "A transferência foi realizada com sucesso. Contudo, para completar, você precisa excluir a tabela ForumMember. Para isto, execute o comando \"DROP TABLE 'ForumMember'\"." 153 | Forum_editpost_ss: 154 | AVAILABLEBB: "Tags do BB disponíveis" 155 | Forum_reply_ss: 156 | AVAILABLEBB: "Tags BBCode válidas" 157 | Forum_show_ss: 158 | AUTHOR: "Autor" 159 | CLICKGOTOEND: "Clique aqui para ir para o final da página" 160 | CLICKGOTOTOP: "Clique aqui para ir para o topo deste post" 161 | CLICKREPLY: "Clique para responder" 162 | GOTOEND: "Ir para o final" 163 | GOTOTOP: "Ir para o topo" 164 | NEXTLINK: "Próximo" 165 | NEXTTITLE: "Ver a próxima página" 166 | PAGE: "Página:" 167 | PREVLINK: "Anterior" 168 | PREVTITLE: "Ver página anterior" 169 | REPLY: "Responder" 170 | TOPIC: "Tópico:" 171 | VIEWS: "visualizações" 172 | Forum_starttopic_ss: 173 | AVAILABLEBB: "Tags BBCode validas" 174 | Post: 175 | DELETE: "Excluir" 176 | EDIT: "Editar" 177 | PLURALNAME: "Publicações" 178 | POSTEDTO: "Escrito por: %s" 179 | REPLYLINK: "Resposta" 180 | RESPONSE: "Re: %s" 181 | SHOWLINK: "mostrar Thread" 182 | SINGULARNAME: "Postagem" 183 | SinglePost_ss: 184 | ATTACHED: "Arquivos Anexados" 185 | GOTOPROFILE: "Ir para página do usuário" 186 | LASTEDITED: "Ultimo editado:" 187 | TopicListing_ss: 188 | BY: "por" 189 | CLICKTOUSER: "Clique aqui para visualizar" 190 | GOTOFIRSTUNREAD: "Ir para o primeiro post não lido do tópico %s" 191 | -------------------------------------------------------------------------------- /lang/sv.yml: -------------------------------------------------------------------------------- 1 | sv: 2 | Forum: 3 | ACCESSATTACH: "Får användare bifoga filer?" 4 | ACCESSPOST: "Vem kan skriva i det här forumet?" 5 | BBCODEHINT: "Visa formatteringshjälp" 6 | EDITPOST: "Redigera ett inlägg" 7 | LOGINAGAIN: "Du har nu loggat ut från forumet. Om du vill logga in igen, var god och ange ditt användarnamn och lösenord nedan" 8 | LOGINALREADY: "Jag är ledsen, men du kan inte komma åt det här forumet om du inte är inloggad. Om du vill logga in som någon annan, gör det nedan" 9 | LOGINDEFAULT: "Fyll i din e-postadress och ditt lösenord för att kunna läsa det här forumet." 10 | LOGINTOPOST: "Du måste logga in innan du kan skriva inlägg i det forumet. Var god att göra det nedan." 11 | LOGINTOPOSTAGAIN: "Du har blivit utloggad. Om du vill logga in igen, fyll i ditt användarnamn och lösenord nedan." 12 | LOGINTOPOSTLOGGEDIN: "Jag är ledsen, men du kan inte skriva inlägg i det här forumet innan du har loggat in. Om du vill logga in som någon annan, gör det nedan. Om du redan är inloggad men ändå inte kan skriva inlägg så har du helt enkelt inte behörighet." 13 | NEWTOPIC: "Starta ny tråd" 14 | NO: "Nej" 15 | PLURALNAME: "Forum" 16 | READANYONE: "Alla" 17 | READLIST: "Bara de här personerna (välj från listan)" 18 | READLOGGEDIN: "Inloggade användare" 19 | READNOONE: "Ingen. Lås forumet" 20 | REMOVE: "ta bort" 21 | RSSFORUM: "Inlägg i %s forum" 22 | RSSFORUMS: "Inlägg i alla forum" 23 | SINGULARNAME: "Forum" 24 | SUBSCRIBETOPIC: "Prenumerera på inlägg i den här tråden. (Du kommer att få e-post när någon skriver ett inlägg.)" 25 | YES: "Ja" 26 | Forum_ss: 27 | LASTPOST: "Senaste inlägget" 28 | NEWTOPIC: "Klicka här för att starta en ny tråd" 29 | NEWTOPICIMAGE: "Starta ny tråd" 30 | NEWTOPICTEXT: "klicka här för att starta en ny tråd" 31 | NOTOPICS: "Det finns inga trådar i det här forumet, " 32 | POSTS: "Inlägg" 33 | PREVLNK: "Föregånde sida" 34 | READONLYFORUM: "Det här forumet får bara läsas. Du kan inte skriva svar eller starta nya trådar" 35 | TOPIC: "Rubrik" 36 | ForumAdmin_right_ss: 37 | EDITPAGE: "Redigera sida" 38 | WELCOME: "Välkommen till %s! Var god klicka på ett av inläggen i panelen till vänster." 39 | ForumCategory: 40 | PLURALNAME: "Forum-kategorier" 41 | SINGULARNAME: "Forum-kategori" 42 | ForumFooter_ss: 43 | CURRENTLYON: "Inloggadde just nu:" 44 | ISONLINE: "är inloggad" 45 | LATESTMEMBER: "Vi hälsar vår senaste medlem välkommen:" 46 | NOONLINE: "Ingen är inloggad nu." 47 | ForumHeader_ss: 48 | BY: "av" 49 | IN: "i" 50 | JUMPTO: "Hoppa till:" 51 | MEMBERS: "medlemmar" 52 | POSTS: "Inlägg" 53 | SEARCHBUTTON: "Sök" 54 | SELECT: "Välj" 55 | TOPICS: "Rubriker" 56 | ForumHolder: 57 | PLURALNAME: "Forum-hållare" 58 | SEARCHEDFOR: "Du sökte efter '%s'." 59 | SEARCHRESULTS: "Sök resultat" 60 | SINGULARNAME: "Forum-hållare" 61 | ForumHolder_ss: 62 | FORUM: "Forum" 63 | FORUMS: "Forum" 64 | LASTPOST: "Senaste inlägget" 65 | POSTS: "Inlägg" 66 | THREADS: "Trådar" 67 | ForumHolder_search_ss: 68 | NORESULTS: "Hittade inget resultat för de ord(en)" 69 | PAGE: "Sida:" 70 | ForumLogin_ss: 71 | LOGGEDINAS: "Du är inloggad som" 72 | LOGIN: "Logga in" 73 | LOGINEXPLICATION: "Klicka här för att logga in" 74 | LOGOUT: "Logga ut" 75 | LOGOUTEXPLICATION: "Klicka här för att logga ut" 76 | LOSTPASS: "Glömt lösenord" 77 | LOSTPASSEXPLICATION: "Klicka här för att återskapa ditt lösenord" 78 | OPENID: "registrera med OpenID" 79 | OPENIDEXPLICATION: "Klicka här för att registrera med OpenID" 80 | PROFILE: "Profil" 81 | PROFILEEXPLICATION: "Klicka här för att redigera din profil" 82 | REGEXPLICATION: "Klicka här för att registrera" 83 | REGISTER: "Registrera" 84 | WHATOPENID: "Vad är OpenID?" 85 | WHATOPENIDUPPER: "Vad är OpenID?" 86 | ForumMemberProfile: 87 | EMAILEXISTS: "Ledsen, men den e-postadressen finns redan. Var god och ange en annan." 88 | FORUMREGTITLE: "Forumregistrering" 89 | FORUMUSERPROFILE: "Forum-användareprofil" 90 | FORUMUSERREGISTER: "Forumregistrering" 91 | NICKNAMEEXISTS: "Tyvärr är det användarnamnet redan upptaget. Du får välja ett annat." 92 | REGISTER: "Registrera" 93 | REGISTEROPENID: "Registrera med OpenID" 94 | SAVECHANGES: "Spara ändringar" 95 | USERPROFILE: "Användarprofil" 96 | ForumMemberProfile_show_ss: 97 | AVATAR: "Avatar" 98 | COUNTRY: "Land" 99 | EMAIL: "E-post" 100 | FIRSTNAME: "Förnamn" 101 | FORUMRANK: "Forumranking" 102 | LASTPOST: "Senaste inlägget: %s" 103 | LATESTPOSTS: "Senaste inläggen" 104 | NICKNAME: "Smeknamn" 105 | NORANK: "Ingen ranking" 106 | OCCUPATION: "Yrke" 107 | POSTNO: "Antal inlägg" 108 | PROFILE: "Profil" 109 | SURNAME: "Efternamn" 110 | USERSAVATAR: "'s avatar" 111 | ForumMember_ForgotNicknameEmail_ss: 112 | HI: "Hej," 113 | USERNAME: "Användarnamn:" 114 | ForumMember_TopicNotification_ss: 115 | HI: "Hej %s," 116 | REPLYLINK: "Visa rubriken" 117 | UNSUBSCRIBETEXT: "Av" 118 | ForumRole: 119 | ADMIN: "Administratör" 120 | ANONYMOUS: "Anonym användare" 121 | AVATAR: "Ladda upp avatar" 122 | COUNTRY: "Land" 123 | EMAIL: "E-post" 124 | FIRSTNAME: "Förnamn" 125 | MOD: "Moderator" 126 | NICKNAME: "Smeknamn" 127 | OCCUPATION: "Yrke" 128 | OPENIDINAME: "OpenID/i-name" 129 | PASSWORD: "Lösenord" 130 | SURNAME: "Efternamn" 131 | Forum_editpost_ss: 132 | AVAILABLEBB: "Tillgängliga BB Code-taggar" 133 | Forum_reply_ss: 134 | AVAILABLEBB: "Tillgängliga BB Code-taggar" 135 | Forum_show_ss: 136 | AUTHOR: "Författare" 137 | CLICKGOTOEND: "Klicka här för att gå till slutet av det här inlägget" 138 | CLICKREPLY: "Klicka för att svara" 139 | GOTOEND: "Gå till slutet" 140 | GOTOTOP: "Gå till toppen" 141 | NEXTLINK: "Nästa" 142 | NEXTTITLE: "Visa nästa sida" 143 | PAGE: "Sida:" 144 | PREVLINK: "Föregående" 145 | PREVTITLE: "Visa den föregående sida" 146 | REPLY: "Svara" 147 | TOPIC: "Tråd:" 148 | VIEWS: "Visningar" 149 | Forum_starttopic_ss: 150 | AVAILABLEBB: "Tillgängliga BB Code-taggar" 151 | Post: 152 | DELETE: "radera" 153 | EDIT: "ändra" 154 | PLURALNAME: "Inlägg" 155 | REPLYLINK: "Skicka svar" 156 | RESPONSE: "Sv: %s" 157 | SHOWLINK: "Visa tråd" 158 | SINGULARNAME: "Inlägg" 159 | SinglePost_ss: 160 | ATTACHED: "Bifogade filer" 161 | GOTOPROFILE: "Gå till den här användarens profil" 162 | LASTEDITED: "Senast redigerad:" 163 | TopicListing_ss: 164 | BY: "av" 165 | CLICKTOUSER: "Klicka här för att visa" 166 | -------------------------------------------------------------------------------- /lang/tr.yml: -------------------------------------------------------------------------------- 1 | tr: 2 | Forum: 3 | ACCESSATTACH: "Kullanıcıları dosya ekleyebilirlermi?" 4 | ACCESSPOST: "Foruma kimler yazabilir?" 5 | BBCODEHINT: "Görünüm Formatı Yardımı" 6 | EDITPOST: "Gönderiyi düzenle" 7 | FORUMMONTHLYPOSTS: "Bu aya ait Forum Gönderileri" 8 | FORUMSIGNUPS: "Bu aya ait Forum Kayıtları" 9 | LOGINAGAIN: "Forumlardan çıktınız. Sisteme tekrar bağlanmak istiyorsanız lütfen aşağıya kullanıcı adı ve parolanızı giriniz." 10 | LOGINALREADY: "Üzgünüz, bu forumu sisteme giriş yapmadan göremezsiniz. Eğer herhangi birisi olarak giriş yapmak istiyorsanız aşağıdan devam edin" 11 | LOGINDEFAULT: "Bu forumu görebilmek için e-posta adresinizi ve parolanızı girmelisiniz" 12 | LOGINTOPOST: "Bu foruma yazabilmek için bağlı olmalısınız. Lütfen giriş yapınız" 13 | LOGINTOPOSTAGAIN: "Forumlardan çıktınız. Yazabilmek için sisteme tekrar bağlanmak istiyorsanız lütfen aşağıya kullanıcı adı ve parolanızı giriniz." 14 | LOGINTOPOSTLOGGEDIN: "Üzgünüz, bu foruma sisteme giriş yapmadan yazamazsınız. Eğer herhangi birisi olarak giriş yapmak istiyorsanız aşağıdan devam edin. Eğer giriş yapmanıza rağmen yazamıyorsanız gerekli yetkiye sahip değilsiniz demektir." 15 | NEWTOPIC: "Yeni konu başlat" 16 | NO: "Hayır" 17 | PLURALNAME: "Forumlar" 18 | POSTTOTOPIC: "'%s' konusuna yazılanlar" 19 | READANYONE: "Herkes" 20 | READLIST: "Sadece bu kişiler (listeden seçiniz)" 21 | READLOGGEDIN: "Giriş yapan kullanıcılar" 22 | READNOONE: "Hiçkimse. Forum sadece okunabilsin" 23 | REMOVE: "sil" 24 | RSSFORUM: "'%s' forumuna yazılanlar" 25 | RSSFORUMS: "Tüm forumlara yazılanlar" 26 | SINGULARNAME: "Forum" 27 | SUBSCRIBETOPIC: "Bu konuya kayıt ol (bu konuya yanıt verildikçe e-posta adresinizden uyarı alırsınız)" 28 | YES: "Evet" 29 | Forum_ss: 30 | ANNOUNCEMENTS: "Duyurular" 31 | GOTOTHISTOPIC: "%s konusunu aç" 32 | LASTPOST: "Son Gönderi" 33 | NEWTOPIC: "Yeni konu başlatmak için tıkla" 34 | NEWTOPICIMAGE: "Yeni konu başlat" 35 | NEWTOPICTEXT: "yeni konu başlatmak için tıklayınız" 36 | NOTOPICS: "Bu forumda konu bulunmuyor" 37 | POSTS: "Gönderiler" 38 | PREVLNK: "Önceki Sayfa" 39 | READONLYFORUM: "Bu forumu sadece okuyabilirsiniz. Yeni konular açamaz yada konulara cevaplar gönderemezsiniz." 40 | TOPIC: "Konu" 41 | ForumAdmin_right_ss: 42 | EDITPAGE: "Sayafayı Düzenle" 43 | WELCOME: "Sayın %s, Hoşgeldiniz! Lütfen sol paneldeki girdilerden birini seçiniz." 44 | ForumCategory: 45 | PLURALNAME: "Forum Kategorileri" 46 | SINGULARNAME: "Forum Kategorisi" 47 | ForumFooter_ss: 48 | CURRENTLYON: "Şuanda Online" 49 | ISONLINE: "online" 50 | LATESTMEMBER: "Son üyemize hoşgeldin diyoruz:" 51 | NOONLINE: "Hiç kimse online değil" 52 | ForumHeader_ss: 53 | BY: "tarafından" 54 | IN: ":" 55 | JUMPTO: "Atla" 56 | MEMBERS: "üyeler" 57 | POSTS: "Gönderiler" 58 | SEARCHBUTTON: "Ara" 59 | SELECT: "Seç" 60 | TOPICS: "Konular" 61 | ForumHolder: 62 | PLURALNAME: "Forum Sahipleri" 63 | SEARCHEDFOR: "Aradığınız: '%s'." 64 | SEARCHRESULTS: "Arama sonuçları" 65 | SINGULARNAME: "Forum Sahibi" 66 | ForumHolder_ss: 67 | FORUM: "Forum" 68 | FORUMS: "Forumlar" 69 | LASTPOST: "Son İleti" 70 | POSTS: "İletiler" 71 | THREADS: "Konular" 72 | ForumHolder_search_ss: 73 | NORESULTS: "Bu kelime(ler) için sonuç bulunamadı." 74 | PAGE: "Sayfa" 75 | ForumLogin_ss: 76 | LOGGEDINAS: "Giriş yapıldı:" 77 | LOGIN: "Giriş" 78 | LOGINEXPLICATION: "Giriş yapmak için buraya tıkla" 79 | LOGOUT: "Çıkış" 80 | LOGOUTEXPLICATION: "Çıkış yapmak için tıkla" 81 | LOSTPASS: "Şifremi Unuttum" 82 | LOSTPASSEXPLICATION: "Şifrenizi almak için buraya tıklayın" 83 | OPENID: "OpenID ile kayıt ol" 84 | OPENIDDESC1: "OpenID birçok websitesine tek bir hesap ile giriş yapabilmenizi sağlayan kimlik tanıma sistemidir." 85 | OPENIDDESC2: "OpenID ile birlikte kimliğiniz bir URL olarak dönüştürülür (Ör: http://kullanici.myopenid.com/). myopenid.com adresinden ücretsiz olarak bir OpenID alabilirsiniz." 86 | OPENIDDESC3: "Daha fazla bilgi için OpenID resmi sitesini ziyaret edebilirsiniz ." 87 | OPENIDEXPLICATION: "OpenID ile kayıt olmak için buraya tıkla" 88 | PROFILE: "Profil" 89 | PROFILEEXPLICATION: "Profilini düzenlemek için tıkla" 90 | REGEXPLICATION: "Kayıt olmak için tıkla" 91 | REGISTER: "Kayıt Ol" 92 | WHATOPENID: "OpenID Nedir?" 93 | WHATOPENIDUPPER: "OpenID Nedir?" 94 | ForumMemberProfile: 95 | AUTHENTICATIONFAILED: "OpenID/i-name oturum açma başarısız." 96 | CANCELLEDVERIFICATION: "Doğrulama iptal edildi. Lütfen tekrar deneyin." 97 | EMAILEXISTS: "Üzgünüz, bu adres sistemde zaten kullanımda. Lütfen başka bir tane seçiniz." 98 | ENTEROPENID: "Kayıda devam etmek için lütfen OpenID hesabınızı kullanın." 99 | FORUMREGTITLE: "Forum Üyelik Kaydı" 100 | FORUMUSERPROFILE: "Forum Kullanıcı Profili" 101 | FORUMUSERREGISTER: "Forum Üyeliği" 102 | NICKNAMEEXISTS: "Üzgünüz, bu kullanıcı adı kullanılıyor. Lütfen farklı bir tane deneyin." 103 | OPENIDEXISTS: "Üzgünüz, bu OpenID zaten sistemde kayıtlı. Lütfen başka bir tane seçiniz veya OpenID olmadan üye olunuz." 104 | REGISTER: "Kayıt Ol" 105 | REGISTEROPENID: "OpenID hesabınızla üye olun" 106 | SAVECHANGES: "Değişiklikleri kaydet" 107 | UNEXPECTEDERROR: "Beklenmeyen bir hata oluştu. Lütfen tekrar deneyin ya da OpenID kullanmadan üye olun." 108 | USERPROFILE: "Kullanıcı profili" 109 | WRONGPERMISSION: "Bu üyeyi düzenleme izniniz bulunmuyor." 110 | ForumMemberProfile_show_ss: 111 | AVATAR: "Avatar" 112 | COUNTRY: "Ülke" 113 | EMAIL: "E-posta" 114 | FIRSTNAME: "Ad" 115 | FORUMRANK: "Forum rütbesi" 116 | LASTPOST: "Son konu: %s" 117 | LATESTPOSTS: "Son iletiler" 118 | NICKNAME: "Kullanıcı Adı" 119 | NORANK: "Rütbesiz" 120 | OCCUPATION: "İş" 121 | POSTNO: "Konu sayısı" 122 | PROFILE: "Profil" 123 | SURNAME: "Soyad" 124 | USERSAVATAR: "için avatar" 125 | ForumMember_ForgotNicknameEmail_ss: 126 | HI: "Merhaba," 127 | MESSAGE: "%s için kullanıcı adınız." 128 | USERNAME: "Kullanıcı adı:" 129 | ForumMember_TopicNotification_ss: 130 | HI: "Merhaba %s," 131 | NEWPOSTMESSAGE: "Abone olduğunuz konuya yeni bir gönderi eklendi." 132 | REPLYLINK: "Konuyu Göster" 133 | UNSUBSCRIBETEXT: "Konu aboneliğini iptal et" 134 | ForumRole: 135 | ADMIN: "Yönetici" 136 | ANONYMOUS: "Anonim Kullanıcı" 137 | AVATAR: "Avatar Yükle" 138 | CANGRAVATAR: "Eğer Gravatar kullanıyorsanız burayı boş bırakınız" 139 | COMMEMBER: "Topluluk Üyesi" 140 | COUNTRY: "Ülke" 141 | EMAIL: "Email" 142 | FIRSTNAME: "Ad" 143 | MOD: "Moderatör" 144 | NICKNAME: "Kullanıcı Adı" 145 | OCCUPATION: "İş" 146 | OPENIDINAME: "OpenID/i-name" 147 | PASSOPTMESSAGE: "OpenID/i-name girişi yapıldığında, parola girişi opsiyoneldir. Parola girişi yapılırsa, eposta adresiyle de giriş yapabilirsiniz." 148 | PASSWORD: "Şifre" 149 | PERSONAL: "Kişisel Ayrıntılar" 150 | RATING: "Popülarite" 151 | SURNAME: "Soyad" 152 | TRANSFERSUCCEEDED: "Veri transferi başarıyla gerçekleştirildi. İşlemi tamamlamak için ForumMember tablosunu silmelisiniz. Bunun için \"DROP TABLE 'ForumMember'\" sorgusunu çalıştırabilirsiniz." 153 | Forum_editpost_ss: 154 | AVAILABLEBB: "Geçerli BB Kod Etiketleri" 155 | Forum_reply_ss: 156 | AVAILABLEBB: "Olanaklı BB Kod Etiketleri" 157 | Forum_show_ss: 158 | AUTHOR: "Yazan" 159 | CLICKGOTOEND: "Gönderinin sonuna gitmek için tıklayınız" 160 | CLICKGOTOTOP: "Gönderinin başına gitmek için tıklayınız" 161 | CLICKREPLY: "Cevaplamak için tıklayınız" 162 | GOTOEND: "Sona Git" 163 | GOTOTOP: "Yukarı Git" 164 | NEXTLINK: "Sonraki" 165 | NEXTTITLE: "Sonraki sayfayı göster" 166 | PAGE: "Sayfa:" 167 | PREVLINK: "Önceki" 168 | PREVTITLE: "Önceki sayfayı görüntüle" 169 | REPLY: "Cevapla" 170 | TOPIC: "Konu:" 171 | VIEWS: "Görüntülemeler" 172 | Forum_starttopic_ss: 173 | AVAILABLEBB: "Mevcut BB Kod etiketleri" 174 | Post: 175 | DELETE: "sil" 176 | EDIT: "düzenle" 177 | PLURALNAME: "Gönderiler" 178 | POSTEDTO: "Gönderilen: %s" 179 | REPLYLINK: "Cevap Gönder" 180 | RESPONSE: "Cvp: %s" 181 | SHOWLINK: "Konuyu Göster" 182 | SINGULARNAME: "Gönderi" 183 | SinglePost_ss: 184 | ATTACHED: "Eklenmiş Dosyalar" 185 | GOTOPROFILE: "Bu kullanıcı'nın profiline git" 186 | LASTEDITED: "En son düzenlenme" 187 | TopicListing_ss: 188 | BY: ":" 189 | CLICKTOUSER: "Görüntülemek için tıklayınız" 190 | GOTOFIRSTUNREAD: "%s konusundaki okunmamış ilk gönderiyi göster" 191 | -------------------------------------------------------------------------------- /templates/Includes/ForumAdmin_left.ss: -------------------------------------------------------------------------------- 1 |
My Site
2 | 3 |
4 |
5 | $SiteTreeAsUL 6 |
7 |
-------------------------------------------------------------------------------- /templates/Includes/ForumAdmin_right.ss: -------------------------------------------------------------------------------- 1 |
2 |
3 | <% _t('ForumAdmin_right_ss.EDITPAGE','Edit Page') %> 4 |
5 |
6 | <% include Editor_toolbar %> 7 | 8 | <% if $EditForm %> 9 | $EditForm 10 | <% else %> 11 |
12 |

$ApplicationName

13 |

<% sprintf(_t('ForumAdmin_right_ss.WELCOME',"Welcome to %s! Please choose click on one of the entries on the left pane."),$ApplicationName) %>

14 |
15 | <% end_if %> 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /templates/Includes/ForumFooter.ss: -------------------------------------------------------------------------------- 1 | <% with $ForumHolder %> 2 | 28 | <% end_with %> 29 | -------------------------------------------------------------------------------- /templates/Includes/ForumHeader.ss: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | 6 | 7 | 16 | 17 |
18 | 19 | 40 |
41 | 42 | <% if $NumPosts %> 43 |

44 | $NumPosts 45 | <% _t('ForumHeader_ss.POSTS','Posts') %> 46 | <% _t('ForumHeader_ss.IN','in') %> $NumTopics <% _t('ForumHeader_ss.TOPICS','Topics') %> 47 | <% _t('ForumHeader_ss.BY','by') %> $NumAuthors <% _t('ForumHeader_ss.MEMBERS','members') %> 48 |

49 | <% end_if %> 50 | 51 |
52 | 53 | 54 |

$HolderSubtitle

55 |

$Breadcrumbs

56 |

$ForumHolder.HolderAbstract

57 | 58 | <% if $Moderators %> 59 |

60 | Moderators: 61 | <% loop $Moderators %> 62 | $Nickname 63 | <% if not $Last %>, <% end_if %> 64 | <% end_loop %> 65 |

66 | <% end_if %> 67 | 68 |
69 | -------------------------------------------------------------------------------- /templates/Includes/ForumHolder_List.ss: -------------------------------------------------------------------------------- 1 | 2 | 3 | $Title 4 | <% if $Content || $Moderators %> 5 |
6 |

$Content.LimitCharacters(80)

7 | <% if $Moderators %> 8 |

Moderators: <% loop $Moderators %> 9 | $Nickname 10 | <% if not $Last %>, <% end_if %><% end_loop %>

11 | <% end_if %> 12 |
13 | <% end_if %> 14 | 15 | 16 | $NumTopics 17 | 18 | 19 | $NumPosts 20 | 21 | 22 | <% if $LatestPost %> 23 | <% with $LatestPost %> 24 | 25 | <% with $Author %> 26 |

by <% if $Link %><% if $Nickname %>$Nickname<% else %>Anon<% end_if %><% else %>Anon<% end_if %>

27 | <% end_with %> 28 | <% end_with %> 29 | <% end_if %> 30 | 31 | 32 | -------------------------------------------------------------------------------- /templates/Includes/ForumLogin.ss: -------------------------------------------------------------------------------- 1 |
2 | <% if $CurrentMember %> 3 |

4 | <% _t('ForumLogin_ss.LOGGEDINAS','You\'re logged in as') %> <% if $CurrentMember.Nickname %>$CurrentMember.Nickname<% else %><% _t('ForumLogin_ss.ANONYMOUS','Anonymous') %><% end_if %> | 5 | <% _t('ForumLogin_ss.LOGOUT','Log Out') %> | <% _t('ForumLogin_ss.PROFILE','Profile') %>

6 | <% else %> 7 |

8 | <% _t('ForumLogin_ss.LOGIN','Login') %> | 9 | <% _t('ForumLogin_ss.LOSTPASS','Forgot password') %> | 10 | <% _t('ForumLogin_ss.REGISTER','Register') %> 11 | <% if $OpenIDAvailable %> | 12 | Register with OpenID <% _t('ForumLogin_ss.OPENID','register with OpenID') %> <% _t('ForumLogin_ss.OPENIDEXPLICATION') %> 13 | (<% _t('ForumLogin_ss.WHATOPENID','What is OpenID?') %>) 14 | <% end_if %> 15 |

16 |
17 | X 18 |

<% _t('ForumLogin_ss.WHATOPENIDUPPER','What is OpenID?') %>

19 |

<% _t('ForumLogin_ss.OPENIDDESC1','OpenID is an Internet-wide identity system that allows you to sign in to many websites with a single account.') %>

20 |

<% _t('ForumLogin_ss.OPENIDDESC2','With OpenID, your ID becomes a URL (e.g. http://username.myopenid.com/). You can get a free OpenID for example from myopenid.com.') %>

21 |

<% _t('ForumLogin_ss.OPENIDDESC3','For more information visit the official OpenID site.') %>

22 |
23 | <% end_if %> 24 |
25 | -------------------------------------------------------------------------------- /templates/Includes/ForumPagination.ss: -------------------------------------------------------------------------------- 1 | <% with $SearchResults %> 2 | <% if $MoreThanOnePage %> 3 |
    4 | <% if $NotFirstPage %> 5 | 6 | <% else %> 7 | 8 | <% end_if %> 9 | 10 | <% loop $PaginationSummary(4) %> 11 | <% if $CurrentBool %> 12 |
  • $PageNum
  • 13 | <% else %> 14 | <% if $Link %> 15 |
  • $PageNum
  • 16 | <% else %> 17 |
  • ...
  • 18 | <% end_if %> 19 | <% end_if %> 20 | <% end_loop %> 21 | <% if $NotLastPage %> 22 | 23 | <% else %> 24 | 25 | <% end_if %> 26 |
27 | <% end_if %> 28 | <% end_with %> 29 | -------------------------------------------------------------------------------- /templates/Includes/ForumThreadSubscribe.ss: -------------------------------------------------------------------------------- 1 | <% _t('ForumThreadSubscribe_ss.UNSUBSCRIBE','Unsubscribe') %> 2 | 3 | -------------------------------------------------------------------------------- /templates/Includes/Forum_BBCodeHint.ss: -------------------------------------------------------------------------------- 1 | <% if $BBTags %> 2 |
3 |

<% _t('Forum_BBCodeHint_ss.AVAILABLEBB','Available BB Code tags') %>

4 |
    5 | <% loop $BBTags %> 6 |
  • 7 | $Title<% if $Description %>: $Description<% end_if %> $Example 8 |
  • 9 | <% end_loop %> 10 |
11 |
12 | <% end_if %> 13 | -------------------------------------------------------------------------------- /templates/Includes/Post_rss.ss: -------------------------------------------------------------------------------- 1 | $Content.Parse('BBCodeParser') 2 | 3 |
4 |

<% _t('Post_rss_ss.POSTEDTO',"Posted to:") %> $Thread.Title | $ShowLink | $ReplyLink

5 | -------------------------------------------------------------------------------- /templates/Includes/SinglePost.ss: -------------------------------------------------------------------------------- 1 |
2 | 19 | 20 |
21 | 22 |
23 | <% if $Thread.canPost %> 24 |

$Top.ReplyLink

25 | <% end_if %> 26 |
27 |

$Title Link to this post

28 | 32 | 33 | <% if $EditLink || $DeleteLink %> 34 |
35 | <% if $EditLink %> 36 | $EditLink 37 | <% end_if %> 38 | 39 | <% if $DeleteLink %> 40 | $DeleteLink 41 | <% end_if %> 42 | 43 | <% if $MarkAsSpamLink %> 44 | $MarkAsSpamLink 45 | <% end_if %> 46 | 47 | <% if $BanLink || $GhostLink %> 48 | | 49 | <% if $BanLink %>$BanLink<% end_if %> 50 | <% if $GhostLink %>$GhostLink<% end_if %> 51 | <% end_if %> 52 | 53 |
54 | <% end_if %> 55 |
56 | $Content.Parse('BBCodeParser') 57 |
58 | 59 | <% if $Thread.DisplaySignatures %> 60 | <% with $Author %> 61 | <% if $Signature %> 62 |
63 |

$Signature

64 |
65 | <% end_if %> 66 | <% end_with %> 67 | <% end_if %> 68 | 69 | <% if $Attachments %> 70 |
71 | <% _t('SinglePost_ss.ATTACHED','Attached Files') %> 72 |
    73 | <% loop $Attachments %> 74 |
  • 75 | 76 | $Name
    77 | <% if $ClassName == "Image" %>$Width x $Height - <% end_if %>$Size 78 |
  • 79 | <% end_loop %> 80 |
81 |
82 | <% end_if %> 83 |
84 |
85 |
86 | -------------------------------------------------------------------------------- /templates/Includes/TopicListing.ss: -------------------------------------------------------------------------------- 1 | 2 | 3 | $Title 4 |

5 | <% _t('TopicListing_ss.BY','By') %> 6 | <% with $FirstPost %> 7 | <% with $Author %> 8 | <% if $Link %> 9 | <% if $Nickname %>$Nickname<% else %>Anon<% end_if %> 10 | <% else %> 11 | Anon 12 | <% end_if %> 13 | <% end_with %> 14 | <% _t('TopicListing_ss.ON','on') %> $Created.Long 15 | <% end_with %> 16 |

17 | 18 | 19 | $NumPosts 20 | 21 | 22 | <% with $LatestPost %> 23 |

$Created.Ago

24 |

25 | <% _t('TopicListing_ss.BY','by') %> 26 | <% with $Author %> 27 | <% if $Link %> 28 | 29 | <% if $Nickname %>$Nickname<% else %>Anon<% end_if %> 30 | 31 | <% else %> 32 | Anon 33 | <% end_if %> 34 | <% end_with %> 35 | 36 |

37 | <% end_with %> 38 | 39 | 40 | -------------------------------------------------------------------------------- /templates/Layout/Forum.ss: -------------------------------------------------------------------------------- 1 | <% include ForumHeader %> 2 | 3 | <% if ForumAdminMsg %> 4 |

$ForumAdminMsg

5 | <% end_if %> 6 | 7 | <% if CurrentMember.isSuspended %> 8 |

9 | $CurrentMember.ForumSuspensionMessage 10 |

11 | <% end_if %> 12 | 13 | <% if ForumPosters = NoOne %> 14 |

<% _t('Forum_ss.READONLYFORUM', 'This Forum is read only. You cannot post replies or start new threads') %>

15 | <% end_if %> 16 | <% if canPost %> 17 |

<% _t('Forum_ss.NEWTOPICIMAGE','Start new topic') %>

18 | <% end_if %> 19 | 20 |
21 | <% if $getStickyTopics(0) %> 22 | 23 | 24 | 25 | 26 | <% loop $getStickyTopics(0) %> 27 | <% include TopicListing %> 28 | <% end_loop %> 29 |
<% _t('Forum_ss.ANNOUNCEMENTS', 'Announcements') %>
30 | <% end_if %> 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | <% if $Topics %> 42 | <% loop $Topics %> 43 | <% include TopicListing %> 44 | <% end_loop %> 45 | <% else %> 46 | 47 | 48 | 49 | <% end_if %> 50 |
<% _t('Forum_ss.THREADS', 'Threads') %>
<% _t('Forum_ss.TOPIC','Topic') %><% _t('Forum_ss.POSTS','Posts') %><% _t('Forum_ss.LASTPOST','Last Post') %>
<% _t('Forum_ss.NOTOPICS','There are no topics in this forum, ') %><% _t('Forum_ss.NEWTOPICTEXT','click here to start a new topic') %>.
51 | 52 | <% if $Topics.MoreThanOnePage %> 53 |

54 | <% if $Topics.PrevLink %> < <% _t('Forum_ss.PREVLNK','Previous Page') %><% end_if %> 55 | <% if $Topics.NextLink %><% _t('Forum_ss.NEXTLNK','Next Page') %> ><% end_if %> 56 | 57 | <% loop $Topics.Pages %> 58 | <% if $CurrentBool %> 59 | $PageNum 60 | <% else %> 61 | $PageNum 62 | <% end_if %> 63 | <% end_loop %> 64 |

65 | <% end_if %> 66 | 67 |
68 | 69 | <% include ForumFooter %> 70 | -------------------------------------------------------------------------------- /templates/Layout/ForumHolder.ss: -------------------------------------------------------------------------------- 1 | <% include ForumHeader %> 2 | 3 | 4 | 5 | <% if $GlobalAnnouncements %> 6 | 7 | 8 | 9 | <% loop $GlobalAnnouncements %> 10 | <% include ForumHolder_List %> 11 | <% end_loop %> 12 | <% end_if %> 13 | 14 | <% if $ShowInCategories %> 15 | <% loop Forums %> 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | <% loop $CategoryForums %> 24 | <% include ForumHolder_List %> 25 | <% end_loop %> 26 | <% end_loop %> 27 | <% else %> 28 | 29 | 30 | 31 | 32 | 33 | 34 | <% loop $Forums %> 35 | <% include ForumHolder_List %> 36 | <% end_loop %> 37 | <% end_if %> 38 |
<% _t('ForumHolder_ss.ANNOUNCEMENTS', 'Announcements') %>
$Title
<% if Count = 1 %><% _t('ForumHolder_ss.FORUM','Forum') %><% else %><% _t('ForumHolder_ss.FORUMS', 'Forums') %><% end_if %><% _t('ForumHolder_ss.THREADS','Threads') %><% _t('ForumHolder_ss.POSTS','Posts') %><% _t('ForumHolder_ss.LASTPOST','Last Post') %>
<% _t('ForumHolder_ss.FORUM','Forum') %><% _t('ForumHolder_ss.THREADS','Threads') %><% _t('ForumHolder_ss.POSTS','Posts') %><% _t('ForumHolder_ss.LASTPOST','Last Post') %>
39 | 40 | <% include ForumFooter %> 41 | -------------------------------------------------------------------------------- /templates/Layout/ForumHolder_memberlist.ss: -------------------------------------------------------------------------------- 1 | <% include ForumHeader %> 2 |
3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | <% loop $Members %> 13 | 14 | 15 | 16 | 17 | 18 | 19 | <% end_loop %> 20 |
<% _t('ForumHolder_memberlist_ss.MEMBERNAME', 'Member Name') %>:<% _t('ForumHolder_memberlist_ss.COUNTRY', 'Country') %>:<% _t('ForumHolder_memberlist_ss.FORUMPOSTS', 'Forum Posts') %>:<% _t('ForumHolder_memberlist_ss.JOINED', 'Joined') %>:
$Nickname<% if $CountryPublic %>$FullCountry<% else %>Private<% end_if %><% if $NumPosts %>$NumPosts<% end_if %><% loop $Created %>$DayOfMonth $ShortMonth $Year<% end_loop %>
21 | 22 | <% if $Members.MoreThanOnePage %> 23 |
24 |

25 | <% if $Members.NotFirstPage %> 26 | 27 | <% end_if %> 28 | 29 | 30 | <% loop $Members.PaginationSummary(4) %> 31 | <% if $CurrentBool %> 32 | $PageNum 33 | <% else %> 34 | <% if $PageNum %> 35 | $PageNum 36 | <% else %> 37 | ... 38 | <% end_if %> 39 | <% end_if %> 40 | <% end_loop %> 41 | 42 | 43 | <% if $Members.NotLastPage %> 44 | 45 | <% end_if %> 46 |

47 |
48 | <% end_if %> 49 |
50 | 51 | <% include ForumFooter %> 52 | -------------------------------------------------------------------------------- /templates/Layout/ForumHolder_popularthreads.ss: -------------------------------------------------------------------------------- 1 | <% include ForumHeader %> 2 |
3 | 4 |
5 |

<% _t('ForumHolder_popularthreas_ss.SORTTHREADSBY', 'Sort threads by:') %> class="current"<% end_if %> href="{$Link}popularthreads?by=posts"><% _t('ForumHolder_popularthreas_ss.POSTCOUNT', 'Post count') %> | class="current"<% end_if %> href="{$Link}popularthreads?by=views"><% _t('ForumHolder_popularthreas_ss.NUMVIEWS', 'Number of views') %>

6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | <% loop $Threads %> 17 | 18 | 19 | 20 | 21 | 22 | 23 | <% end_loop %> 24 |
<% _t('ForumHolder_popularthreas_ss.POSTS', 'Posts') %><% _t('ForumHolder_popularthreas_ss.VIEWS', 'Views') %><% _t('ForumHolder_popularthreas_ss.TITLE', 'Title') %><% _t('ForumHolder_popularthreas_ss.DATECREATED', 'Date created') %>
$Posts.Count$NumViews$Title$Created.Nice
25 | 26 | <% if $Threads.MoreThanOnePage %> 27 |
28 |

29 | <% if $Threads.NotFirstPage %> 30 | 31 | <% end_if %> 32 | 33 | 34 | <% loop $Threads.PaginationSummary(4) %> 35 | <% if $CurrentBool %> 36 | $PageNum 37 | <% else %> 38 | <% if $PageNum %> 39 | $PageNum 40 | <% else %> 41 | ... 42 | <% end_if %> 43 | <% end_if %> 44 | <% end_loop %> 45 | 46 | 47 | <% if $Threads.NotLastPage %> 48 | 49 | <% end_if %> 50 |

51 |
52 | <% end_if %> 53 |
54 | 55 | <% include ForumFooter %> 56 | -------------------------------------------------------------------------------- /templates/Layout/ForumHolder_search.ss: -------------------------------------------------------------------------------- 1 | <% include ForumHeader %> 2 | 3 | <% if $SearchResults %> 4 | 38 | <% else %> 39 |
40 | 41 | 42 |
<% _t('ForumHolder_search_ss.NORESULTS','There are no results for those word(s)') %>
43 |
44 | <% end_if %> 45 | 46 | <% include ForumFooter %> 47 | -------------------------------------------------------------------------------- /templates/Layout/ForumMemberProfile.ss: -------------------------------------------------------------------------------- 1 | <% include ForumHeader %> 2 | $Content 3 | <% if $Form %> 4 |
5 | $Form 6 |
7 | <% end_if %> 8 | <% include ForumFooter %> 9 | -------------------------------------------------------------------------------- /templates/Layout/ForumMemberProfile_register.ss: -------------------------------------------------------------------------------- 1 | <% include ForumHeader %> 2 | $Content 3 |
4 | <% if $CurrentMember %> 5 |

<% _t('ForumMemberProfile_register_ss.PLEASELOGOUT', 'Please logout before you register') %> - <% _t('ForumMemberProfile_register_ss.LOGOUT', 'Logout') %>

6 | <% else %> 7 | $RegistrationForm 8 | <% end_if %> 9 |
10 | 11 | <% include ForumFooter %> 12 | -------------------------------------------------------------------------------- /templates/Layout/ForumMemberProfile_show.ss: -------------------------------------------------------------------------------- 1 | <% include ForumHeader %> 2 | <% if $Member.IsBanned %>

This user has been banned. Please contact us if you believe this is a mistake

3 | <% else_if $Member.isGhost %>

This user has been ghosted. Please contact us if you believe this is a mistake

4 | <% else %> 5 | <% with $Member %> 6 |
7 |

<% if $Nickname %>$Nickname<% else %>Anon<% end_if %>'s <% _t('ForumMemberProfile_show_ss.PROFILE','Profile') %>

8 | <% if $isSuspended %> 9 |

10 | <% _t('ForumMemberProfile_show_ss.ForumRole.SUSPENSIONNOTE') %> 11 |

12 | <% end_if %> 13 |

<% if $Nickname %>$Nickname<% else %>Anon<% end_if %>

14 | <% if $FirstNamePublic %> 15 |

$FirstName

16 | <% end_if %> 17 | <% if $SurnamePublic %> 18 |

$Surname

19 | <% end_if %> 20 | <% if $EmailPublic %> 21 |

$Email

22 | <% end_if %> 23 | <% if $OccupationPublic %> 24 |

$Occupation

25 | <% end_if %> 26 | <% if $CompanyPublic %> 27 |

$Company

28 | <% end_if %> 29 | <% if $CityPublic %> 30 |

$City

31 | <% end_if %> 32 | <% if $CountryPublic %> 33 |

$FullCountry

34 | <% end_if %> 35 |

$NumPosts

36 |
<% if $ForumRank %>

$ForumRank

<% else %>

<% _t('ForumMemberProfile_show_ss.NORANK','No ranking') %>

<% end_if %>
37 | 38 |
39 | 40 |

<% if $Nickname %>$Nickname<% else %>Anon<% end_if %><% _t('ForumMemberProfile_show_ss.USERSAVATAR',''s avatar') %>

41 |
42 |
43 | <% end_with %> 44 | <% if $LatestPosts %> 45 |
46 |

<% _t('ForumMemberProfile_show_ss.LATESTPOSTS','Latest Posts') %>

47 |
    48 | <% loop $LatestPosts %> 49 |
  • $Title (<% sprintf(_t('ForumMemberProfile_show_ss.LASTPOST',"Last post: %s "),$Created.Ago) %>)
  • 50 | <% end_loop %> 51 |
52 |
53 | <% end_if %> 54 | <% end_if %> 55 | <% include ForumFooter %> 56 | -------------------------------------------------------------------------------- /templates/Layout/Forum_editpost.ss: -------------------------------------------------------------------------------- 1 | <% include ForumHeader %> 2 | 3 | $EditForm 4 | 5 | <% include ForumFooter %> -------------------------------------------------------------------------------- /templates/Layout/Forum_post.ss: -------------------------------------------------------------------------------- 1 |
2 |
3 | <% include TopicListing %> 4 |
5 |
6 | $TopicTree 7 |
8 |
9 | -------------------------------------------------------------------------------- /templates/Layout/Forum_reply.ss: -------------------------------------------------------------------------------- 1 | <% include ForumHeader %> 2 | $PostMessageForm 3 | 4 | 14 | 15 | <% include ForumFooter %> 16 | -------------------------------------------------------------------------------- /templates/Layout/Forum_show.ss: -------------------------------------------------------------------------------- 1 | <% include ForumHeader %> 2 | 3 | 4 | 5 | 6 | 17 | 20 | 28 | 29 | 30 | 33 | 36 | 39 | 40 |
7 | <% _t('Forum_show_ss.PAGE','Page:') %> 8 | <% loop $Posts.Pages %> 9 | <% if $CurrentBool %> 10 | $PageNum 11 | <% else %> 12 | $PageNum 13 | <% end_if %> 14 | <% if not $Last %>,<% end_if %> 15 | <% end_loop %> 16 | 18 | <% _t('Forum_show_ss.GOTOEND','Go to End') %> 19 | 21 | <% if $ForumThread.canCreate %> 22 | <% _t('Forum_show_ss.REPLY','Reply') %> 23 | <% end_if %> 24 | <% if $CurrentMember %> 25 | <% include ForumThreadSubscribe %> 26 | <% end_if %> 27 |
31 | <% _t('Forum_show_ss.AUTHOR','Author') %> 32 | 34 | <% _t('Forum_show_ss.TOPIC','Topic:') %> $ForumThread.Title 35 | 37 | $ForumThread.NumViews <% _t('Forum_show_ss.VIEWS','Views') %> 38 |
41 | 42 | <% loop $Posts %> 43 | <% include SinglePost %> 44 | <% end_loop %> 45 | 46 | 47 | 48 | 49 | 50 | 53 | 54 | 55 | 62 | 65 | 76 | 77 |
   51 | $ForumThread.NumViews <% _t('Forum_show_ss.VIEWS','Views') %> 52 |
56 | <% if $Posts.MoreThanOnePage %> 57 | <% if $Posts.NotFirstPage %> 58 | 59 | <% end_if %> 60 | <% end_if %> 61 | 63 | <% _t('Forum_show_ss.GOTOTOP','Go to Top') %> 64 | 66 | <% if $ForumThread.canCreate %> 67 | <% _t('Forum_show_ss.REPLY', 'Reply') %> 68 | <% end_if %> 69 | 70 | <% if $Posts.MoreThanOnePage %> 71 | <% if Posts.NotLastPage %> 72 | 73 | <% end_if %> 74 | <% end_if %> 75 |
78 | 79 | <% if $AdminFormFeatures %> 80 |
81 |

Forum Admin Features

82 | $AdminFormFeatures 83 |
84 | <% end_if %> 85 | 86 | <% include ForumFooter %> 87 | -------------------------------------------------------------------------------- /templates/Layout/Forum_starttopic.ss: -------------------------------------------------------------------------------- 1 | <% include ForumHeader %> 2 |
3 |
4 | $PostMessageForm(1) 5 |
6 |
7 | <% include ForumFooter %> 8 | -------------------------------------------------------------------------------- /templates/email/ForumMember_ForgotNicknameEmail.ss: -------------------------------------------------------------------------------- 1 |

<% _t('ForumMember_ForgotNicknameEmail_ss.HI','Hi,') %>

2 | 3 |

<% sprintf(_t('ForumMember_ForgotNicknameEmail_ss.MESSAGE',"Here's your user name for %s."),$BaseHref) %>

4 | 5 |

6 | <% _t('ForumMember_ForgotNicknameEmail_ss.USERNAME','Username:') %> $Nickname 7 |

-------------------------------------------------------------------------------- /templates/email/ForumMember_NotifyModerator.ss: -------------------------------------------------------------------------------- 1 |

<% sprintf(_t('ForumMember_NotifyModerator_ss.HI',"Hi %s,"),$Author.Nickname) %>,

2 | 3 | <% if $NewThread %> 4 |

<% _t('ForumMember_NotifyModerator_ss.MODERATORNEWTHREADMESSAGE', "New forum thread has been started") %>.

5 | <% else %> 6 |

<% _t('ForumMember_NotifyModerator_ss.MODERATORNEWPOSTMESSAGE',"A forum post has been added or edited") %>.

7 | <% end_if %> 8 | 9 |

Content

10 |
11 |

12 | $Post.Title
13 | <% if $Author %> <% _t('ForumMember_NotifyModerator_ss.BY', "by") %> $Author.Nickname<% end_if %> 14 | <% _t('ForumMember_NotifyModerator_ss.DATEON', "on") %> {$Post.LastEdited.Nice}. 15 |

16 | <% loop $Post %> 17 |

$Content.Parse('BBCodeParser')

18 | <% end_loop %> 19 |
20 | 21 |

Actions

22 | 25 | 26 |

27 | <% _t('ForumMember_NotifyModerator_ss.MODERATORSIGNOFF', "Yours truly,\nThe Forum Robot.") %> 28 |

29 | 30 |

31 | <% _t('ForumMember_NotifyModerator_ss.MODERATORNOTE', "NOTE: This is an automated email sent to all moderators of this forum.") %> 32 |

33 | 34 | -------------------------------------------------------------------------------- /templates/email/ForumMember_TopicNotification.ss: -------------------------------------------------------------------------------- 1 |

<% sprintf(_t('ForumMember_TopicNotification_ss.HI',"Hi %s,"),$Nickname) %>

2 | 3 |

<% _t('ForumMember_TopicNotification_ss.NEWPOSTMESSAGE',"A new post has been added to a topic you've subscribed to") %> - '$Title' <% if $Author %><% _t('BY', "by") %> {$Author.Nickname}.<% end_if %>

4 | 5 | 9 | 10 |

11 | Thanks,
12 | The Forum Team. 13 |

14 | 15 |

NOTE: This is an automated email, any replies you make may not be read.

16 | -------------------------------------------------------------------------------- /tests/ForumHolderTest.php: -------------------------------------------------------------------------------- 1 | logInWithPermission('ADMIN'); 17 | } 18 | 19 | /** 20 | * Tests around multiple forum holders, to ensure that given a forum holder, methods only retrieve 21 | * categories and forums relevant to that holder. 22 | * 23 | * @return unknown_type 24 | */ 25 | public function testGetForums() 26 | { 27 | $fh = $this->objFromFixture("ForumHolder", "fh"); 28 | $fh_controller = new ForumHolder_Controller($fh); 29 | 30 | // one forum which is viewable. 31 | $this->assertEquals('1', $fh_controller->Forums()->Count(), "Forum holder has 1 forum"); 32 | 33 | // Test ForumHolder::Categories() on 'fh', from which we expect 2 categories 34 | $this->assertTrue($fh_controller->Categories()->Count() == 2, "fh has two categories"); 35 | 36 | // Test what we got back from the two categories. The first expects 2 forums, the second 37 | // expects none. 38 | $this->assertTrue($fh_controller->Categories()->First()->Forums()->Count() == 0, "fh first category has 0 forums"); 39 | $this->assertTrue($fh_controller->Categories()->Last()->Forums()->Count() == 2, "fh second category has 2 forums"); 40 | 41 | // Test ForumHolder::Categories() on 'fh2', from which we expect 2 categories 42 | $fh2 = $this->objFromFixture("ForumHolder", "fh2"); 43 | $fh2_controller = new ForumHolder_Controller($fh2); 44 | $this->assertTrue($fh2_controller->Categories()->Count() == 2, "fh first forum has two categories"); 45 | 46 | // Test what we got back from the two categories. Each expects 1. 47 | $this->assertTrue($fh2_controller->Categories()->First()->Forums()->Count() == 1, "fh first category has 1 forums"); 48 | $this->assertTrue($fh2_controller->Categories()->Last()->Forums()->Count() == 1, "fh second category has 1 forums"); 49 | 50 | 51 | // plain forums (not nested in categories) 52 | $forumHolder = $this->objFromFixture("ForumHolder", "fhNoCategories"); 53 | 54 | $this->assertEquals($forumHolder->Forums()->Count(), 1); 55 | $this->assertEquals($forumHolder->Forums()->First()->Title, "Forum Without Category"); 56 | 57 | // plain forums with nested in categories enabled (but shouldn't effect it) 58 | $forumHolder = $this->objFromFixture("ForumHolder", "fhNoCategories"); 59 | $forumHolder->ShowInCategories = true; 60 | $forumHolder->write(); 61 | 62 | $this->assertEquals($forumHolder->Forums()->Count(), 1); 63 | $this->assertEquals($forumHolder->Forums()->First()->Title, "Forum Without Category"); 64 | } 65 | 66 | public function testGetNumPosts() 67 | { 68 | // test holder with posts 69 | $fh = $this->objFromFixture("ForumHolder", "fh"); 70 | $this->assertEquals(24, $fh->getNumPosts()); 71 | 72 | // test holder that doesn't have posts 73 | $fh2 = $this->objFromFixture("ForumHolder", "fh2"); 74 | $this->assertEquals(0, $fh2->getNumPosts()); 75 | 76 | //Mark spammer accounts and retest the posts count 77 | $this->markGhosts(); 78 | $this->assertEquals(22, $fh->getNumPosts()); 79 | } 80 | 81 | public function testGetNumTopics() 82 | { 83 | // test holder with posts 84 | $fh = $this->objFromFixture("ForumHolder", "fh"); 85 | $this->assertEquals(6, $fh->getNumTopics()); 86 | 87 | // test holder that doesn't have posts 88 | $fh2 = $this->objFromFixture("ForumHolder", "fh2"); 89 | $this->assertEquals(0, $fh2->getNumTopics()); 90 | 91 | //Mark spammer accounts and retest the threads count 92 | $this->markGhosts(); 93 | $this->assertEquals(5, $fh->getNumTopics()); 94 | } 95 | 96 | public function testGetNumAuthors() 97 | { 98 | // test holder with posts 99 | $fh = $this->objFromFixture("ForumHolder", "fh"); 100 | $this->assertEquals(4, $fh->getNumAuthors()); 101 | 102 | // test holder that doesn't have posts 103 | $fh2 = $this->objFromFixture("ForumHolder", "fh2"); 104 | $this->assertEquals(0, $fh2->getNumAuthors()); 105 | 106 | //Mark spammer accounts and retest the authors count 107 | $this->markGhosts(); 108 | $this->assertEquals(2, $fh->getNumAuthors()); 109 | } 110 | 111 | protected function markGhosts() 112 | { 113 | //Mark a members as a spammers 114 | $spammer = $this->objFromFixture("Member", "spammer"); 115 | $spammer->ForumStatus = 'Ghost'; 116 | $spammer->write(); 117 | 118 | $spammer2 = $this->objFromFixture("Member", "spammer2"); 119 | $spammer2->ForumStatus = 'Ghost'; 120 | $spammer2->write(); 121 | } 122 | 123 | public function testGetRecentPosts() 124 | { 125 | // test holder with posts 126 | $fh = $this->objFromFixture("ForumHolder", "fh"); 127 | 128 | // make sure all the posts are included 129 | $this->assertEquals($fh->getRecentPosts()->Count(), 24); 130 | 131 | // check they're in the right order (well if the first and last are right its fairly safe) 132 | $this->assertEquals($fh->getRecentPosts()->First()->Content, "This is the last post to a long thread"); 133 | 134 | // test holder that doesn't have posts 135 | $fh2 = $this->objFromFixture("ForumHolder", "fh2"); 136 | $this->assertNull($fh2->getRecentPosts()); 137 | 138 | // test trying to get recent posts specific forum without posts 139 | $forum = $this->objFromFixture("Forum", "forum1cat2"); 140 | $this->assertNull($fh->getRecentPosts(50, $forum->ID)); 141 | 142 | // test trying to get recent posts specific to a forum which has posts 143 | $forum = $this->objFromFixture("Forum", "general"); 144 | 145 | $this->assertEquals($fh->getRecentPosts(50, $forum->ID)->Count(), 24); 146 | $this->assertEquals($fh->getRecentPosts(50, $forum->ID)->First()->Content, "This is the last post to a long thread"); 147 | 148 | // test trying to filter by a specific thread 149 | $thread = $this->objFromFixture("ForumThread", "Thread1"); 150 | 151 | $this->assertEquals($fh->getRecentPosts(50, null, $thread->ID)->Count(), 17); 152 | $this->assertEquals($fh->getRecentPosts(10, null, $thread->ID)->Count(), 10); 153 | $this->assertEquals($fh->getRecentPosts(50, null, $thread->ID)->First()->Content, 'This is the last post to a long thread'); 154 | 155 | // test limiting the response 156 | $this->assertEquals($fh->getRecentPosts(1)->Count(), 1); 157 | } 158 | 159 | public function testGlobalAnnouncements() 160 | { 161 | // test holder with posts 162 | $fh = $this->objFromFixture("ForumHolder", "fh"); 163 | $controller = new ForumHolder_Controller($fh); 164 | 165 | // make sure all the announcements are included 166 | $this->assertEquals($controller->GlobalAnnouncements()->Count(), 1); 167 | 168 | // test holder that doesn't have posts 169 | $fh2 = $this->objFromFixture("ForumHolder", "fh2"); 170 | $controller2 = new ForumHolder_Controller($fh2); 171 | 172 | $this->assertEquals($controller2->GlobalAnnouncements()->Count(), 0); 173 | } 174 | 175 | public function testGetNewPostsAvailable() 176 | { 177 | $fh = $this->objFromFixture("ForumHolder", "fh"); 178 | 179 | // test last visit. we can assume that these tests have been reloaded in the past 24 hours 180 | $data = array(); 181 | $this->assertTrue(ForumHolder::new_posts_available($fh->ID, $data, date('Y-m-d H:i:s', mktime(0, 0, 0, date('m'), date('d')-1, date('Y'))))); 182 | 183 | // set the last post ID (test the first post - so there should be a post, last post (false)) 184 | $fixtureIDs = $this->allFixtureIDs('Post'); 185 | $lastPostID = end($fixtureIDs); 186 | 187 | $this->assertTrue(ForumHolder::new_posts_available($fh->ID, $data, null, 1)); 188 | $this->assertFalse(ForumHolder::new_posts_available($fh->ID, $data, null, $lastPostID)); 189 | 190 | // limit to a specific forum 191 | $forum = $this->objFromFixture("Forum", "general"); 192 | $this->assertTrue(ForumHolder::new_posts_available($fh->ID, $data, null, null, $forum->ID)); 193 | $this->assertFalse(ForumHolder::new_posts_available($fh->ID, $data, null, $lastPostID, $forum->ID)); 194 | 195 | // limit to a specific thread 196 | $thread = $this->objFromFixture("ForumThread", "Thread1"); 197 | $this->assertTrue(ForumHolder::new_posts_available($fh->ID, $data, null, null, null, $thread->ID)); 198 | $this->assertFalse(ForumHolder::new_posts_available($fh->ID, $data, null, $lastPostID, null, $thread->ID)); 199 | } 200 | } 201 | -------------------------------------------------------------------------------- /tests/ForumMemberProfileTest.php: -------------------------------------------------------------------------------- 1 | get('ForumMemberProfile/register'); 18 | $this->assertNotContains('RegistrationForm_username', $response->getBody(), 'Honeypot is disabled by default'); 19 | 20 | ForumHolder::$use_honeypot_on_register = true; 21 | $response = $this->get('ForumMemberProfile/register'); 22 | $this->assertContains('RegistrationForm_username', $response->getBody(), 'Honeypot can be enabled'); 23 | 24 | // TODO Will fail if Member is decorated with further *required* fields, 25 | // through updateForumFields() or updateForumValidator() 26 | $baseData = array( 27 | 'Password' => array( 28 | '_Password' => 'text', 29 | '_ConfirmPassword' => 'text' 30 | ), 31 | "Nickname" => 'test', 32 | "Email" => 'test@test.com', 33 | ); 34 | 35 | $invalidData = array_merge($baseData, array('action_doregister' => 1, 'username' => 'spamtastic')); 36 | $response = $this->post('ForumMemberProfile/RegistrationForm', $invalidData); 37 | $this->assertEquals(403, $response->getStatusCode()); 38 | 39 | $validData = array_merge($baseData, array('action_doregister' => 1)); 40 | $response = $this->post('ForumMemberProfile/RegistrationForm', $validData); 41 | // Weak check (registration might still fail), but good enough to know if the honeypot is working 42 | $this->assertEquals(200, $response->getStatusCode()); 43 | 44 | ForumHolder::$use_honeypot_on_register = $origHoneypot; 45 | ForumHolder::$use_spamprotection_on_register = $origSpamprotection; 46 | } 47 | 48 | public function testMemberProfileSuspensionNote() 49 | { 50 | SS_Datetime::set_mock_now('2011-10-10'); 51 | 52 | $normalMember = $this->objFromFixture('Member', 'test1'); 53 | $this->loginAs($normalMember); 54 | $response = $this->get('ForumMemberProfile/edit/' . $normalMember->ID); 55 | 56 | $this->assertNotContains( 57 | _t('ForumRole.SUSPENSIONNOTE'), 58 | $response->getBody(), 59 | 'Normal profiles don\'t show suspension note' 60 | ); 61 | 62 | $suspendedMember = $this->objFromFixture('Member', 'suspended'); 63 | $this->loginAs($suspendedMember); 64 | $response = $this->get('ForumMemberProfile/edit/' . $suspendedMember->ID); 65 | $this->assertContains( 66 | _t('ForumRole.SUSPENSIONNOTE'), 67 | $response->getBody(), 68 | 'Suspended profiles show suspension note' 69 | ); 70 | 71 | SS_Datetime::clear_mock_now(); 72 | } 73 | 74 | public function testMemberProfileDisplays() 75 | { 76 | /* Get the profile of a secretive member */ 77 | $this->get('ForumMemberProfile/show/' . $this->idFromFixture('Member', 'test1')); 78 | 79 | /* Check that it just contains the bare minimum 80 | 81 | Commented out by wrossiter since this was breaking with custom themes. A test like this should not fail 82 | because of a custom theme. Will reenable these tests when we tackle the new Member functionality 83 | 84 | $this->assertExactMatchBySelector("div#UserProfile label", array( 85 | "Nickname:", 86 | "Number of posts:", 87 | "Forum ranking:", 88 | "Avatar:", 89 | )); 90 | $this->assertExactMatchBySelector("div#UserProfile p", array( 91 | 'test1', 92 | '5', 93 | 'n00b', 94 | '', 95 | )); 96 | 97 | /* Get the profile of a public member */ 98 | $this->get('ForumMemberProfile/show/' . $this->idFromFixture('Member', 'test2')); 99 | 100 | /* Check that it just contains everything 101 | 102 | $this->assertExactMatchBySelector("div#UserProfile label", array( 103 | "Nickname:", 104 | 'First Name:', 105 | 'Surname:', 106 | 'Email:', 107 | 'Occupation:', 108 | 'Country:', 109 | 'Number of posts:', 110 | 'Forum ranking:', 111 | 'Avatar:' 112 | )); 113 | $this->assertExactMatchBySelector("div#UserProfile p", array( 114 | 'test2', 115 | 'Test', 116 | 'Two', 117 | '', 118 | 'OtherUser', 119 | 'Australia', 120 | '8', 121 | 'l33t', 122 | '', 123 | )); 124 | */ 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /tests/ForumMemberProfileTest.yml: -------------------------------------------------------------------------------- 1 | Group: 2 | members: 3 | Title: Forum Members 4 | Code: forum-members 5 | admins: 6 | Title: Administrators 7 | Code: administrators 8 | Member: 9 | test1: 10 | Nickname: test1 11 | FirstName: Test 12 | Email: test1@example.com 13 | Surname: One 14 | Occupation: TestUser 15 | Country: NZ 16 | FirstNamePublic: 0 17 | SurnamePublic: 0 18 | OccupationPublic: 0 19 | CountryPublic: 0 20 | EmailPublic: 0 21 | ForumRank: n00b 22 | test2: 23 | Nickname: test2 24 | FirstName: Test 25 | Surname: Two 26 | Email: test2@example.com 27 | Occupation: OtherUser 28 | Country: AU 29 | FirstNamePublic: 1 30 | SurnamePublic: 1 31 | OccupationPublic: 1 32 | CountryPublic: 1 33 | EmailPublic: 1 34 | ForumRank: l33t 35 | ForumHolder: 36 | fh: 37 | Title: Forum 38 | ForbiddenWords: shit,fuck 39 | fh2: 40 | Title: Forum 2 41 | ForumCategory: 42 | fh1cat1: 43 | Title: cat1 44 | ForumHolderID: =>ForumHolder.fh 45 | fh1cat2: 46 | Title: cat2 47 | ForumHolderID: =>ForumHolder.fh 48 | fh2cat3: 49 | Title: cat3 50 | ForumHolderID: =>ForumHolder.fh2 51 | fh2cat4: 52 | Title: cat4 53 | ForumHolderID: =>ForumHolder.fh2 54 | Forum: 55 | general: 56 | Title: General Discussion 57 | ParentID: =>ForumHolder.fh 58 | CategoryID: =>ForumCategory.fh1cat1 59 | forum1cat2: 60 | Title: forum1cat2 61 | ParentID: =>ForumHolder.fh 62 | CategoryID: =>ForumCategory.fh1cat1 63 | forum2cat3: 64 | Title: forum2cat3 65 | ParentID: =>ForumHolder.fh2 66 | CategoryID: =>ForumCategory.fh2cat3 67 | forum2cat4: 68 | Title: forum2cat4 69 | ParentID: =>ForumHolder.fh2 70 | CategoryID: =>ForumCategory.fh2cat4 71 | -------------------------------------------------------------------------------- /tests/ForumReportTest.php: -------------------------------------------------------------------------------- 1 | objFromFixture('Member', 'admin'); 14 | $member->logIn(); 15 | } 16 | 17 | public function tearDown() 18 | { 19 | if ($member = Member::currentUser()) { 20 | $member->logOut(); 21 | } 22 | 23 | parent::tearDown(); 24 | } 25 | 26 | public function testMemberSignupsReport() 27 | { 28 | $r = new ForumReport_MemberSignups(); 29 | $before = $r->records(array()); 30 | 31 | // Create a new Member in current month 32 | $member = new Member(); 33 | $member->Email = 'testMemberSignupsReport'; 34 | $member->write(); 35 | 36 | // Ensure the signup count for current month has increased by one 37 | $this->assertEquals((int)$before->first()->Signups + 1, (int)$r->records(array())->first()->Signups); 38 | 39 | // Move our member to have signed up in April 2015 and check that month's signups 40 | $member->Created = '2015-04-01 12:00:00'; 41 | $member->write(); 42 | $this->assertEquals(1, $r->records(array())->find('Month', '2015 April')->Signups); 43 | 44 | // We should now be back to our original number of members in current month 45 | $this->assertEquals((int)$before->first()->Signups, (int)$r->records(array())->first()->Signups); 46 | } 47 | 48 | public function testMonthlyPostsReport() 49 | { 50 | $r = new ForumReport_MonthlyPosts(); 51 | $before = $r->records(array()); 52 | 53 | // Create a new post in current month 54 | $post = new Post(); 55 | $post->AuthorID = $this->objFromFixture('Member', 'test2')->ID; 56 | $post->ThreadID = $this->objFromFixture('ForumThread', 'Thread2')->ID; 57 | $post->ForumID = $this->objFromFixture('Forum', 'forum5')->ID; 58 | $post->write(); 59 | 60 | // Ensure the post count for current month has increased by one 61 | $this->assertEquals((int)$before->first()->Posts + 1, (int)$r->records(array())->first()->Posts); 62 | 63 | // Move our post to April 2015 and ensure there are two posts (one is specified in fixture file) 64 | $post->Created = '2015-04-01 12:00:00'; 65 | $post->write(); 66 | $this->assertEquals(2, $r->records(array())->find('Month', '2015 April')->Posts); 67 | 68 | // We should now be back to our original number of posts in current month 69 | $this->assertEquals((int)$before->first()->Posts, (int)$r->records(array())->first()->Posts); 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /tests/ForumThreadTest.php: -------------------------------------------------------------------------------- 1 | objFromFixture("ForumThread", "Thread1"); 18 | 19 | $this->assertEquals(17, $thread->getNumPosts()); 20 | } 21 | 22 | public function testIncViews() 23 | { 24 | $thread = $this->objFromFixture("ForumThread", "Thread1"); 25 | 26 | // clear session 27 | Session::clear('ForumViewed-'.$thread->ID); 28 | 29 | $this->assertEquals($thread->NumViews, '10'); 30 | 31 | $thread->incNumViews(); 32 | 33 | $this->assertEquals($thread->NumViews, '11'); 34 | } 35 | 36 | public function testGetLatestPost() 37 | { 38 | $thread = $this->objFromFixture("ForumThread", "Thread1"); 39 | 40 | $this->assertEquals($thread->getLatestPost()->Content, "This is the last post to a long thread"); 41 | } 42 | 43 | public function testGetFirstPost() 44 | { 45 | $thread = $this->objFromFixture("ForumThread", "Thread1"); 46 | 47 | $this->assertEquals($thread->getFirstPost()->Content, "This is my first post"); 48 | } 49 | 50 | public function testSubscription() 51 | { 52 | $thread = $this->objFromFixture("ForumThread", "Thread1"); 53 | $thread2 = $this->objFromFixture("ForumThread", "Thread2"); 54 | 55 | $member = $this->objFromFixture("Member", "test1"); 56 | $member2 = $this->objFromFixture("Member", "test2"); 57 | 58 | $this->assertTrue(ForumThread_Subscription::already_subscribed($thread->ID, $member->ID)); 59 | $this->assertTrue(ForumThread_Subscription::already_subscribed($thread->ID, $member2->ID)); 60 | 61 | $this->assertFalse(ForumThread_Subscription::already_subscribed($thread2->ID, $member->ID)); 62 | $this->assertFalse(ForumThread_Subscription::already_subscribed($thread2->ID, $member2->ID)); 63 | } 64 | 65 | public function testOnBeforeDelete() 66 | { 67 | $thread = new ForumThread(); 68 | $thread->write(); 69 | 70 | $post = new Post(); 71 | $post->ThreadID = $thread->ID; 72 | $post->write(); 73 | 74 | $postID = $post->ID; 75 | 76 | $thread->delete(); 77 | 78 | $this->assertFalse(DataObject::get_by_id('Post', $postID)); 79 | $this->assertFalse(DataObject::get_by_id('ForumThread', $thread->ID)); 80 | } 81 | 82 | public function testPermissions() 83 | { 84 | $member = $this->objFromFixture('Member', 'test1'); 85 | $this->session()->inst_set('loggedInAs', $member->ID); 86 | 87 | // read only thread. No one should be able to post to this (apart from the ) 88 | $readonly = $this->objFromFixture('ForumThread', 'ReadonlyThread'); 89 | $this->assertFalse($readonly->canPost()); 90 | $this->assertTrue($readonly->canView()); 91 | $this->assertFalse($readonly->canModerate()); 92 | 93 | // normal thread. They can post to these 94 | $thread = $this->objFromFixture('ForumThread', 'Thread1'); 95 | $this->assertTrue($thread->canPost()); 96 | $this->assertTrue($thread->canView()); 97 | $this->assertFalse($thread->canModerate()); 98 | 99 | // normal thread in a read only 100 | $disabledforum = $this->objFromFixture('ForumThread', 'ThreadWhichIsInInheritedForum'); 101 | $this->assertFalse($disabledforum->canPost()); 102 | $this->assertFalse($disabledforum->canView()); 103 | $this->assertFalse($disabledforum->canModerate()); 104 | 105 | // Moderator can access threads nevertheless 106 | $member = $this->objFromFixture('Member', 'moderator'); 107 | $member->logIn(); 108 | 109 | $this->assertFalse($disabledforum->canPost()); 110 | $this->assertTrue($disabledforum->canView()); 111 | $this->assertTrue($disabledforum->canModerate()); 112 | } 113 | } 114 | --------------------------------------------------------------------------------