From 05689a94215b1f2bed783e1857c4cd1f2b00a11d Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Wed, 20 Mar 2013 10:20:27 +0100 Subject: [PATCH 01/14] Deprecation docs --- docs/en/misc/release-process.md | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/docs/en/misc/release-process.md b/docs/en/misc/release-process.md index 5c7dabc1f..677620ed4 100644 --- a/docs/en/misc/release-process.md +++ b/docs/en/misc/release-process.md @@ -85,7 +85,7 @@ micro release. ## Deprecation -Needs of developers (both on core framework and custom projects) might outgrow the capabilities +Needs of developers (both on core framework and custom projects) can outgrow the capabilities of a certain API. Existing APIs might turn out to be hard to understand, maintain, test or stabilize. In these cases, it is best practice to "refactor" these APIs into something more useful. SilverStripe acknowledges that developers have built a lot of code on top of existing APIs, @@ -94,26 +94,31 @@ so we strive for giving ample warning on any upcoming changes through a "depreca How to deprecate an API: * Add a `@deprecated` item to the docblock tag, with a `{@link }` item pointing to the new API to use. -* Update the deprecated code to throw an `E_USER_NOTICE` error, with a message starting with the string 'DEPRECATED:'. -In time, we may use that string to identify deprecation errors, so please ensure that you add this string to the notice level error. +* Update the deprecated code to throw a `[api:Deprecation::notice()]` error. +* Both the docblock and error message should contain the **target version** where the functionality is removed. + So if you're committing the change to a 3.1 pre-release version, the target version will either be 3.2 or 4.0, + depending on how disruptive the change is. +* Deprecations should just be committed to pre-release branches, ideally before they enter the "beta" phase. + If deprecations are introduced after this point, their target version needs to be increased by one. * Make sure that the old deprecated function works by calling the new function - don't have duplicated code! -* Mark in which release the function was deprecated (find out next release in the [roadmap](http://open.silverstripe.com/roadmap)), so we can determine when to finally remove it. +* The commit message should contain an `API` prefix (see ["commit message format"](/misc/contributing/code#commit-messages)) +* Deprecated APIs can be removed after developers had a chance to react to the changes. As a rule of thumb, leave the code with the deprecation warning in for at least three micro releases. Only remove code in a minor or major release. + Here's an example for replacing `Director::isDev()` with a (theoretical) `Env::is_dev()`: :::php /** * Returns true if your are in development mode - * @deprecated (since 2.2.2) Use {@link Env::is_dev()} instead. + * @deprecated 3.1 Use {@link Env::is_dev()} instead. */ public function isDev() { - user_error("DEPRECATED: Use Env::is_dev() instead.", E_USER_NOTICE); + Deprecation::notice('3.1', 'Use Env::is_dev() instead'); return Env::is_dev(); } -* Deprecated APIs can be removed after developers had a chance to react to the changes. As a rule of thumb, leave the code with the deprecation warning in for at least three micro releases. Only remove code in a minor or major release. For example: - * Deprecated as of in 2.2.2 - * Still deprecated in 2.2.3 - * Still deprecated in 2.2.4 - * Removed from 2.3.0 + +This change could be committed to a 3.1.0-alpha2 release, stays deprecated in all following minor releases +(3.1.0-beta1, 3.1.0, 3.1.1), and gets removed from 3.2.0. If the change was introduced in an already +released version (e.g. 3.1.1), the target version becomes 3.2 instead. ## Security Releases From ea0cedb3dad5327254f94c09929350ebfabf6075 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Thu, 21 Mar 2013 12:44:34 +0100 Subject: [PATCH 02/14] Removed internal/outdated/speculative docs from requirements.md --- docs/en/reference/requirements.md | 58 ------------------------------- 1 file changed, 58 deletions(-) diff --git a/docs/en/reference/requirements.md b/docs/en/reference/requirements.md index 5e138beae..c69c1cf7a 100644 --- a/docs/en/reference/requirements.md +++ b/docs/en/reference/requirements.md @@ -124,63 +124,5 @@ In your controller's init() function, add: :::php Requirements::set_write_js_to_body(false); - -## CMS Requirements - -The SilverStripe core includes a lot of Requirements by itself. Most of these are collated in `[api:LeftAndMain]` first. - -## Motivation - -Every page requested is made up of a number of parts, and many of those parts require their own CSS or JavaScript. -Rather than force the developer to put all of those requests into the template, or the header function, you can -reference required files anywhere in your application. - -This lets you create very modular units of PHP+JavaScript+CSS, which a powerful concept but must be managed carefully. - -## Managing Generic CSS styling - -One of the aims of this is to create units of functionality that can be reasonably easily deployed as-is, while still -giving developers the option to customise them. The logical solution to this is to create 'generic' CSS to be applied -to these things. However, we must take great care to keep the CSS selectors very nonspecific. This precludes us from -adding any CSS that would "override customisations" in the form - for example, resetting the width of a field where 100% -width isn't appropriate. - -Another solution would be to include some "generic CSS" for form elements at the very high level, so that fixed widths -on forms were applied to the generic form, and could therefore be overridden by a field's generic stylesheet. Similar -to this is mandating the use of "form div.field input" to style form input tags, whether it's a generic form or a custom -one. - -Perhaps we could make use of a Requirements::disallowCSS() function, with which we could prevent the standard CSS from -being included in situations where it caused problems. But the complexity could potentially balloon, and really, it's a -bit of an admission of defeat - we shouldn't need to have to do this if our generic CSS was well-designed. - - -## Ideas/Problems - -### Ajax - -The whole "include it when you need it" thing shows some weaknesses in areas such as the CMS, where Ajax is used to load -in large pieces of the application, which potentially require more CSS and JavaScript to be included. At this stage, -the only workaround is to ensure that everything you might need is included on the first page-load. - -One idea is to mention the CSS and JavaScript which should be included in the header of the Ajax response, so that the -client can load up those scripts and stylesheets upon completion of the Ajax request. This could be coded quite -cleanly, but for best results we'd want to extend prototype.js with our own changes to their Ajax system, so that every -script had consistent support for this. - -### Lots of files - -Because everything's quite modular, it's easy to end up with a large number of small CSS and JavaScript files. This has -problems with download time, and potentially maintainability. - -We don't have any easy answers here, but here are some ideas: - -* Merging the required files into a single download on the server. The flip side of this is that if every page has a -slightly different JS/CSS requirements, the whole lot will be refetched. -* Better: "Tagging" each required file for different use-cases, and creating a small set of common functionalities -(e.g. everything tagged "base" such as prototype.js would always be included) -* Do lazy fetching of scripts within an ajax-call. This seems to be possible, but very tricky due to the asynchronous -nature of an ajax-request. Needs some more research - ## API Documentation `[api:Requirements]` \ No newline at end of file From 42a422775ef2b223f7ab6065266d17ad150b9810 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Sun, 24 Mar 2013 22:46:51 +0100 Subject: [PATCH 03/14] Fixed path in docs --- docs/en/installation/composer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/installation/composer.md b/docs/en/installation/composer.md index d98603acd..0b2715fab 100644 --- a/docs/en/installation/composer.md +++ b/docs/en/installation/composer.md @@ -217,7 +217,7 @@ Composer will scan all of the repositories you list, collect meta-data about the Now add an "upstream" remote to the original repository location so you can rebase or merge your fork as required. - cd advancedworkflow + cd cms git remote add -f upstream git://github.com/silverstripe/silverstripe-cms.git For more information, read the ["Repositories" chapter of the Composer documentation](http://getcomposer.org/doc/05-repositories.md). From 0a283eacb8bf741d479dee919e2afb8eb5fb210a Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Mon, 25 Mar 2013 23:39:37 +0100 Subject: [PATCH 04/14] FIX Unset internal metadata on TreeDropdownField setValue() Otherwise the hidden field value and metadata will get out of sync. Most commonly used together with setTitle('') as well. --- javascript/TreeDropdownField.js | 1 + 1 file changed, 1 insertion(+) diff --git a/javascript/TreeDropdownField.js b/javascript/TreeDropdownField.js index 7eeb01773..45b5afb5c 100644 --- a/javascript/TreeDropdownField.js +++ b/javascript/TreeDropdownField.js @@ -124,6 +124,7 @@ else this.loadTree(null, updateFn); }, setValue: function(val) { + this.data('metadata', $.extend(this.data('metadata'), {id: val})); this.find(':input:hidden').val(val).trigger('change'); }, getValue: function() { From 3f2b6a518f25fde92fc8f9d2a8c3e67a3776ebc1 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Mon, 25 Mar 2013 23:40:35 +0100 Subject: [PATCH 05/14] FIX Don't silently unset ParentID in "add page" dialog Happened when changing the page type, because the "selectedNode" property isn't set in all cases --- admin/javascript/LeftAndMain.AddForm.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/admin/javascript/LeftAndMain.AddForm.js b/admin/javascript/LeftAndMain.AddForm.js index 48d749095..3bde6d429 100644 --- a/admin/javascript/LeftAndMain.AddForm.js +++ b/admin/javascript/LeftAndMain.AddForm.js @@ -161,7 +161,9 @@ } // Set parent node (fallback to root) - this.find(':input[name=ParentID]').val(selectedNode ? selectedNode.data('id') : 0); + if(selectedNode.length) { + this.find(':input[name=ParentID]').val(selectedNode ? selectedNode.data('id') : 0); + } } }); }); From 600d9cff53388738cfe8df72e9dc9b5de93d6758 Mon Sep 17 00:00:00 2001 From: Hamish Friedlander Date: Wed, 27 Feb 2013 13:33:36 +1300 Subject: [PATCH 06/14] API Make Object::config use late static binding Can now be used in instance scope, like: $this->config()->db and in static scope, like: Page::config()->db --- core/Object.php | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/core/Object.php b/core/Object.php index 63ee46b1c..d57367580 100755 --- a/core/Object.php +++ b/core/Object.php @@ -52,23 +52,12 @@ abstract class Object { */ public $class; - - /** - * @todo Set this via dependancy injection? Can't call it $config, because too many clashes with form elements etc - * @var Config_ForClass - */ - private $_config_forclass = null; - /** * Get a configuration accessor for this class. Short hand for Config::inst()->get($this->class, .....). * @return Config_ForClass|null */ - public function config() { - if (!$this->_config_forclass) { - $this->_config_forclass = Config::inst()->forClass($this->class); - } - - return $this->_config_forclass; + static public function config() { + return Config::inst()->forClass(get_called_class()); } /** From 10f46ba08e13aff4ebdede59d799d24f38b40d14 Mon Sep 17 00:00:00 2001 From: Andrew Short Date: Fri, 29 Mar 2013 02:23:43 +1100 Subject: [PATCH 07/14] Include padding on padded edit form panels inside a tabset --- admin/css/screen.css | 1 + admin/scss/_style.scss | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/admin/css/screen.css b/admin/css/screen.css index ce1e606fa..ae77d3ee2 100644 --- a/admin/css/screen.css +++ b/admin/css/screen.css @@ -375,6 +375,7 @@ body.cms { overflow: hidden; } .ui-tabs .ui-tabs { position: static; } .ui-tabs .ui-tabs-panel { padding: 24px; background: transparent; border: 0; } .ui-tabs .ui-tabs-panel.cms-edit-form { padding: 0; } +.ui-tabs .ui-tabs-panel.cms-panel-padded { padding: 16px 16px; } .ui-tabs .ui-widget-header { border: 0; background: none; } .ui-tabs .ui-tabs-nav { float: right; margin: 16px 0 -1px 0; padding: 0 12px 0 0; border-bottom: none; } .ui-tabs .ui-tabs-nav ~ .ui-tabs-panel { border-top: 1px solid #c0c0c2; clear: both; } diff --git a/admin/scss/_style.scss b/admin/scss/_style.scss index 843477793..9983d6ef5 100644 --- a/admin/scss/_style.scss +++ b/admin/scss/_style.scss @@ -162,9 +162,13 @@ body.cms { padding: $grid-x*3; background: transparent; // default it's white border: 0; // suppress default borders + &.cms-edit-form { padding: 0; } + &.cms-panel-padded { + padding: $grid-y*2 $grid-x*2; + } } .ui-widget-header { From f033321adcaaf4e2306b5b1e2f9915054f7d9ec3 Mon Sep 17 00:00:00 2001 From: g4b0 Date: Thu, 28 Mar 2013 14:45:23 +0100 Subject: [PATCH 08/14] Solved json obj to array issue --- admin/code/LeftAndMain.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/admin/code/LeftAndMain.php b/admin/code/LeftAndMain.php index 2d344a4d5..299dcd3cb 100644 --- a/admin/code/LeftAndMain.php +++ b/admin/code/LeftAndMain.php @@ -1378,7 +1378,11 @@ class LeftAndMain extends Controller implements PermissionProvider { $cache = SS_Cache::factory('LeftAndMain_CMSVersion'); $cacheKey = filemtime($composerLockPath); $versions = $cache->load($cacheKey); - if(!$versions) $versions = array(); + if($versions) { + $versions = json_decode($versions, true); + } else { + $versions = array(); + } if(!$versions && $jsonData = file_get_contents($composerLockPath)) { $lockData = json_decode($jsonData); if($lockData && isset($lockData->packages)) { @@ -1394,7 +1398,7 @@ class LeftAndMain extends Controller implements PermissionProvider { } } } - + // Fall back to static version file foreach($modules as $moduleName => $moduleSpec) { if(!isset($versions[$moduleName])) { From 31f5e00a569875cad776364406db063c22a630d3 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Thu, 28 Mar 2013 22:13:55 +0100 Subject: [PATCH 09/14] Simplified travis builds (external setup scripts) --- .travis.yml | 32 +++++------- tests/travis/_config.php | 22 --------- tests/travis/_manifest_exclude | 0 tests/travis/_ss_environment.php | 37 -------------- tests/travis/before.php | 83 -------------------------------- 5 files changed, 12 insertions(+), 162 deletions(-) delete mode 100644 tests/travis/_config.php delete mode 100644 tests/travis/_manifest_exclude delete mode 100644 tests/travis/_ss_environment.php delete mode 100755 tests/travis/before.php diff --git a/.travis.yml b/.travis.yml index 3d4bbacee..b2b70c1d7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,37 +1,29 @@ language: php -php: - - 5.3 - - 5.4 - -env: - - TESTDB=MYSQL - - TESTDB=SQLITE matrix: - exclude: - - php: 5.4 - env: TESTDB=PGSQL - - php: 5.4 - env: TESTDB=SQLITE include: + - php: 5.3 + env: DB=MYSQL CORE_RELEASE=3.0 - php: 5.4 - env: - - PHPCS=1 + env: DB=MYSQL CORE_RELEASE=3.0 + - php: 5.3 + env: DB=PGSQL CORE_RELEASE=3.0 + - php: 5.4 + env: PHPCS=1 CORE_RELEASE=3.0 allow_failures: - - env: TESTDB=PGSQL + - env: DB=PGSQL CORE_RELEASE=3.0 - php: 5.4 - env: - - PHPCS=1 - - env: TESTDB=SQLITE + env: PHPCS=1 CORE_RELEASE=3.0 before_script: - pear install pear/PHP_CodeSniffer - phpenv rehash - - ./tests/travis/before.php --target ~/builds/ss --version="3.0.x-dev" --installer="3.0" + - git clone git://github.com/silverstripe-labs/silverstripe-travis-support.git ~/travis-support + - php ~/travis-support/travis_setup.php --source `pwd` --target ~/builds/ss - cd ~/builds/ss script: - - sh -c "if [ '$PHPCS' != '1' ]; then phpunit -c phpunit.xml.dist; else phpcs --encoding=utf-8 --tab-width=4 --standard=framework/tests/phpcs/ruleset.xml -np framework && phpcs --encoding=utf-8 --standard=framework/tests/phpcs/tabs.xml -np framework; fi" + - sh -c "if [ '$PHPCS' != '1' ]; then phpunit framework/tests; else phpcs --encoding=utf-8 --tab-width=4 --standard=framework/tests/phpcs/ruleset.xml -np framework && phpcs --encoding=utf-8 --standard=framework/tests/phpcs/tabs.xml -np framework; fi" branches: except: diff --git a/tests/travis/_config.php b/tests/travis/_config.php deleted file mode 100644 index 3508957db..000000000 --- a/tests/travis/_config.php +++ /dev/null @@ -1,22 +0,0 @@ - $version, - 'dist' => array( - 'type' => 'tar', - 'url' => "file://$parent/framework.tar" - ) -); - -// Generate a custom composer file. -$composer = json_encode(array( - 'repositories' => array(array('type' => 'package', 'package' => $package)), - 'require' => array( - 'silverstripe/framework' => $version, - 'silverstripe/postgresql' => '*', - 'silverstripe/sqlite3' => '*' - ), - 'minimum-stability' => 'dev' -)); - -echo "Generated composer file:\n"; -echo "$composer\n\n"; - -echo "Archiving framework...\n"; -`cd $framework`; -`tar -cf $parent/framework.tar .`; - -echo "Cloning installer@$installer...\n"; -`git clone --depth=100 --quiet -b $installer git://github.com/silverstripe/silverstripe-installer.git $target`; - -echo "Setting up project...\n"; -`cp $dir/_ss_environment.php $target`; -`cp $dir/_config.php $target/mysite`; - -echo "Replacing composer file...\n"; -unlink("$target/composer.json"); -file_put_contents("$target/composer.json", $composer); - -echo "Running composer...\n"; -`composer install --dev -d $target`; From 3ff103a04c0065a990efca5730c7fbd31405d061 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Thu, 28 Mar 2013 22:53:55 +0100 Subject: [PATCH 10/14] More straightfoward travis include/exclude --- .travis.yml | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index b2b70c1d7..a2dab1370 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,19 +1,27 @@ language: php +php: + - 5.3 + - 5.4 + +env: + - DB=MYSQL CORE_RELEASE=3.0 + - DB=PGSQL CORE_RELEASE=3.0 + - DB=SQLITE3 CORE_RELEASE=3.0 + - PHPCS=1 CORE_RELEASE=3.0 + matrix: - include: - - php: 5.3 - env: DB=MYSQL CORE_RELEASE=3.0 + exclude: - php: 5.4 - env: DB=MYSQL CORE_RELEASE=3.0 - - php: 5.3 env: DB=PGSQL CORE_RELEASE=3.0 + - php: 5.4 + env: DB=SQLITE3 CORE_RELEASE=3.0 - php: 5.4 env: PHPCS=1 CORE_RELEASE=3.0 allow_failures: - env: DB=PGSQL CORE_RELEASE=3.0 - - php: 5.4 - env: PHPCS=1 CORE_RELEASE=3.0 + - env: DB=SQLITE3 CORE_RELEASE=3.0 + - env: PHPCS=1 CORE_RELEASE=3.0 before_script: - pear install pear/PHP_CodeSniffer From 9b056456a15a1c73399a8cf5d4dcc18905ba9d7e Mon Sep 17 00:00:00 2001 From: Dan Date: Sat, 30 Mar 2013 03:03:50 -0300 Subject: [PATCH 11/14] Minor: Update "Editing Online" Adding emphasis to the "Edit this page" feature, and ensuring it comes before the more difficult option of locating the .md file manually. --- docs/en/misc/contributing/documentation.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/en/misc/contributing/documentation.md b/docs/en/misc/contributing/documentation.md index 73fc18f78..f20c75f0f 100644 --- a/docs/en/misc/contributing/documentation.md +++ b/docs/en/misc/contributing/documentation.md @@ -12,15 +12,14 @@ and a GitHub user account. ## Editing online -The easiest way of making a change to the documentation is to find the appropriate .md -file in the [github.com/silverstripe/sapphire](https://github.com/silverstripe/sapphire/tree/3.0/docs/) repository +The easiest way of making a change to the documentation is by clicking the "Edit this page" link at +the bottom of the page you want to edit. Alternativly, you can find the appropriate .md file in +the [github.com/silverstripe/sapphire](https://github.com/silverstripe/sapphire/tree/3.0/docs/) repository and press the "edit" button. You will need a GitHub account to do this. You should make the changes in the lowest branch they apply to. * After you have made your change, describe it in the "commit summary" and "extended description" fields below, and press "Commit Changes". * After that you will see form to submit a Pull Request. You should just be able to submit the form, and your changes will be sent to the core team for approval. -Each documentation page has have an "edit" link, to make it easier for you to find this feature. - ## Editing on your computer If you prefer to edit the content on your local machine, you can "[fork](http://help.github.com/forking/)" From 5ec85d06f68d09ab30b124312c54f1d84ce7d6f4 Mon Sep 17 00:00:00 2001 From: Andrew Short Date: Sat, 30 Mar 2013 19:47:17 +1100 Subject: [PATCH 12/14] API: Don't allow dots in URL segments --- model/URLSegmentFilter.php | 10 +++++----- tests/model/URLSegmentFilterTest.php | 9 +++++++-- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/model/URLSegmentFilter.php b/model/URLSegmentFilter.php index f086d67b5..03fc062e5 100644 --- a/model/URLSegmentFilter.php +++ b/model/URLSegmentFilter.php @@ -30,10 +30,10 @@ class URLSegmentFilter extends Object { '/&/u' => '-and-', '/&/u' => '-and-', '/\s/u' => '-', // remove whitespace - '/_/u' => '-', // underscores to dashes - '/[^A-Za-z0-9+.\-]+/u' => '', // remove non-ASCII chars, only allow alphanumeric plus dash and dot + '/[_.]+/u' => '-', // underscores and dots to dashes + '/[^A-Za-z0-9+\-]+/u' => '', // remove non-ASCII chars, only allow alphanumeric and dashes '/[\-]{2,}/u' => '-', // remove duplicate dashes - '/^[\.\-_]/u' => '', // Remove all leading dots, dashes or underscores + '/^[\-_]/u' => '', // Remove all leading dashes or underscores ); /** @@ -69,8 +69,8 @@ class URLSegmentFilter extends Object { $replacements = $this->getReplacements(); // Unset automated removal of non-ASCII characters, and don't try to transliterate - if($this->getAllowMultibyte() && isset($replacements['/[^A-Za-z0-9+.\-]+/u'])) { - unset($replacements['/[^A-Za-z0-9+.\-]+/u']); + if($this->getAllowMultibyte() && isset($replacements['/[^A-Za-z0-9+\-]+/u'])) { + unset($replacements['/[^A-Za-z0-9+\-]+/u']); } foreach($replacements as $regex => $replace) { diff --git a/tests/model/URLSegmentFilterTest.php b/tests/model/URLSegmentFilterTest.php index 0d1d084fe..c8d029ea5 100644 --- a/tests/model/URLSegmentFilterTest.php +++ b/tests/model/URLSegmentFilterTest.php @@ -26,7 +26,7 @@ class URLSegmentFilterTest extends SapphireTest { public function testReplacesCommonNonAsciiCharacters() { $f = new URLSegmentFilter(); $this->assertEquals( - urlencode('aa1-.'), + urlencode('aa1-'), $f->filter('Aa1~!@#$%^*()_`-=;\':"[]\{}|,./<>?') ); } @@ -56,5 +56,10 @@ class URLSegmentFilterTest extends SapphireTest { $f->filter('Tim&Struppi') ); } - + + public function testReplacesDots() { + $filter = new URLSegmentFilter(); + $this->assertEquals('url-contains-dot', $filter->filter('url-contains.dot')); + } + } From 1b83e489ef3bb98e397e5a882fe5bac1e55ad50b Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Tue, 2 Apr 2013 01:19:28 +0200 Subject: [PATCH 13/14] Updated bugtracker links --- README.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index dd3f498ee..752e410b9 100644 --- a/README.md +++ b/README.md @@ -10,25 +10,27 @@ Requires a [`silverstripe-installer`](http://github.com/silverstripe/silverstrip See [installation on different platforms](http://doc.silverstripe.org/framework/en/installation/), and [installation from source](http://doc.silverstripe.org/framework/en/installation/from-source). -## Development and contribution ## +## Bugtracker ## -If you would like to make changes to SilverStripe core product, we have an extensive [guide to contributing code](http://doc.silverstripe.org/framework/en/misc/contributing/code) that we invite you to look at before submitting a pull request. +Bugs are tracked on [github.com](https://github.com/silverstripe/framework/issues). +Please read our [issue reporting guidelines](http://doc.silverstripe.org/framework/en/misc/contributing/issues). -If you would like to get involved, but don't know what to fix, the [Trac tickets](http://open.silverstripe.org/report/125) are a good place to start. +## Development and Contribution ## -For other ways to contribute, see the [code contribution guidelines](http://doc.silverstripe.org/framework/en/misc/contributing) +If you would like to make changes to the SilverStripe core codebase, we have an extensive [guide to contributing code](http://doc.silverstripe.org/framework/en/misc/contributing/code). ## Links ## - * [Requirements](http://doc.silverstripe.org/framework/en/installation/server-requirements) + * [Server Requirements](http://doc.silverstripe.org/framework/en/installation/server-requirements) * [Changelogs](http://doc.silverstripe.org/framework/en/changelogs/) - * [Bugtracker](http://open.silverstripe.org) + * [Framework Bugtracker](https://github.com/silverstripe/sapphire/issues) + * [CMS Bugtracker](https://github.com/silverstripe/silverstripe-cms/issues) * [Forums](http://silverstripe.org/forums) * [Developer Mailinglist](https://groups.google.com/forum/#!forum/silverstripe-dev) ## License ## - Copyright (c) 2007-2012, SilverStripe Limited - www.silverstripe.com + Copyright (c) 2007-2013, SilverStripe Limited - www.silverstripe.com All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: From f5754c11aa22f180f7f5d03c63e72e97f5bd1a3c Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Tue, 2 Apr 2013 01:46:36 +0200 Subject: [PATCH 14/14] Contribution guidelines, new bugtracker links --- README.md | 5 +++-- docs/en/howto/index.md | 6 +----- docs/en/misc/contributing/code.md | 2 +- docs/en/misc/contributing/issues.md | 30 +++++++++++++++++++++----- docs/en/misc/index.md | 7 +----- docs/en/misc/module-release-process.md | 5 ++--- docs/en/misc/release-process.md | 10 ++++----- docs/en/topics/javascript.md | 3 +-- 8 files changed, 39 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 752e410b9..e90bbe99b 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,9 @@ If you would like to make changes to the SilverStripe core codebase, we have an * [Server Requirements](http://doc.silverstripe.org/framework/en/installation/server-requirements) * [Changelogs](http://doc.silverstripe.org/framework/en/changelogs/) - * [Framework Bugtracker](https://github.com/silverstripe/sapphire/issues) - * [CMS Bugtracker](https://github.com/silverstripe/silverstripe-cms/issues) + * [Bugtracker: Framework](https://github.com/silverstripe/sapphire/issues) + * [Bugtracker: CMS](https://github.com/silverstripe/silverstripe-cms/issues) + * [Bugtracker: Installer](https://github.com/silverstripe/silverstripe-installer/issues) * [Forums](http://silverstripe.org/forums) * [Developer Mailinglist](https://groups.google.com/forum/#!forum/silverstripe-dev) diff --git a/docs/en/howto/index.md b/docs/en/howto/index.md index 570e8a077..a7cad13df 100644 --- a/docs/en/howto/index.md +++ b/docs/en/howto/index.md @@ -16,8 +16,4 @@ the language and functions which are used in the guides. * [Howto customize the CMS menu](customize-cms-menu). * [How to create a navigation menu](navigation-menu). Create primary navigation for your website. * [Paginating A List](pagination). Add pagination for an SS_List object. -* [How to make a simple contact form](simple-contact-form). - -## Feedback - -If you have a topic you would like covered in these how to's please ask for it on our [Bug Tracker](http://open.silverstripe.org) \ No newline at end of file +* [How to make a simple contact form](simple-contact-form). \ No newline at end of file diff --git a/docs/en/misc/contributing/code.md b/docs/en/misc/contributing/code.md index 0a57d17b7..6576a17e2 100644 --- a/docs/en/misc/contributing/code.md +++ b/docs/en/misc/contributing/code.md @@ -71,7 +71,7 @@ If you aren't familiar with git and GitHub, try reading the ["GitHub bootcamp do We also found the [free online git book](http://progit.org/book/) and the [git crash course](http://gitref.org/) useful. If you're familiar with it, here's the short version of what you need to know. Once you fork and download the code: - * **Don't develop on the master branch.** Always create a development branch specific to "the issue" you're working on (mostly on [open.silverstripe.org](http://open.silverstripe.org)). Name it by issue number and description. For example, if you're working on Issue #100, a `DataObject::get_one()` bugfix, your development branch should be called 100-dataobject-get-one. If you decide to work on another issue mid-stream, create a new branch for that issue--don't work on both in one branch. + * **Don't develop on the master branch.** Always create a development branch specific to "the issue" you're working on (mostly on our [bugtracker](/misc/contributing/issues)). Name it by issue number and description. For example, if you're working on Issue #100, a `DataObject::get_one()` bugfix, your development branch should be called 100-dataobject-get-one. If you decide to work on another issue mid-stream, create a new branch for that issue--don't work on both in one branch. * **Do not merge the upstream master** with your development branch; *rebase* your branch on top of the upstream master. diff --git a/docs/en/misc/contributing/issues.md b/docs/en/misc/contributing/issues.md index a143cc763..6a13acf05 100644 --- a/docs/en/misc/contributing/issues.md +++ b/docs/en/misc/contributing/issues.md @@ -6,12 +6,16 @@ If you have discovered a bug in SilverStripe, we'd be glad to hear about it - well written bug reports can be half of the solution already! -Our bugtracker is located on [open.silverstripe.org](http://open.silverstripe.org/). + + * [Framework Bugtracker](https://github.com/silverstripe/sapphire/issues) + * [CMS Bugtracker](https://github.com/silverstripe/silverstripe-cms/issues) + * [Documentation Bugtracker](https://github.com/silverstripe/sapphire/issues) + * Search on [http://silverstripe.org/modules](http://silverstripe.org/modules) for module-specific bugtrackers Before submitting a bug: * Ask for assistance on the [forums](http://silverstripe.org/forums), [core mailinglist](http://groups.google.com/group/silverstripe-dev) or on [IRC](http://silverstripe.org/irc) if you're unsure if its really a bug. - * [Search for existing tickets](http://open.silverstripe.org/query?keywords=~&description=~&summary=~&col=id&col=summary&col=owner&col=type&col=status&col=priority&col=milestone&col=changetime&desc=1&order=changetime) before reporting a new one + * Search for similar, existing tickets * Is this a security issue? Please follow our separate reporting guidelines below. * Is this a issue with the core framework or cms? Modules have their own issue trackers (see [silverstripe.org/modules](http://www.silverstripe.org/modules)) * Try to reproduce your issue on a [clean installation](http://doc.silverstripe.org/framework/en/installation/composer#using-development-versions), maybe the bug has already been fixed on an unreleased branch? @@ -21,12 +25,28 @@ Before submitting a bug: If the issue does look like a new bug: - * [Create a new ticket](http://open.silverstripe.org/newticket) - * Describe the steps required to reproduce your issue, and the expected outcome. Unit tests and screencasts can help here. + * [Create a new ticket](https://github.com/silverstripe/sapphire/issues/new) + * Describe the steps required to reproduce your issue, and the expected outcome. Unit tests, screenshots and screencasts can help here. * Describe your environment as detailed as possible: SilverStripe version, Browser, PHP version, Operating System, any installed SilverStripe modules. - * Add keywords to help us organize issues, and please be realistic about the issue priority. Don't set milestones. * *(optional)* [Submit a pull request](/misc/contributing/code) which fixes the issue. +Lastly, don't get your hopes up too high. Unless your issue is a blocker affecting a large +number of users, don't expect SilverStripe developers to jump onto it right way. +Your issue is a starting point where others with the same problem can collaborate +with you to develop a fix. + +## Feature Requests + +
+Please don't file "feature requests" as issues. If there's a new feature you'd like to see +in SilverStripe, you either need to write it yourself (and [submit a pull request](/misc/contributing/code)) +or convince somebody else to write it for you. Any "wishlist" type issues without code attached +can be expected to be closed as soon as they're reviewed. +
+ +In order to gain interest and feedback in your feature, we encourage you to present +it to the community through the [forums](http://silverstripe.org/forums), [core mailinglist](http://groups.google.com/group/silverstripe-dev) or on [IRC](http://silverstripe.org/irc). + ## Reporting Security Issues Report security issues to [security@silverstripe.com](mailto:security@silverstripe.com). See our "[Release Process](release-process)" documentation for more info, and read our guide on [how to write secure code](/topics/security). diff --git a/docs/en/misc/index.md b/docs/en/misc/index.md index cbf365dc5..baed69c51 100644 --- a/docs/en/misc/index.md +++ b/docs/en/misc/index.md @@ -7,9 +7,4 @@ sections. * [Contributing](contributing): How you can be a part of the SilverStripe Open Source community * [Module release process](module-release-process): Creating and looking after a module * [Release process](release-process): Describes the Framework and CMS release process -* [SS markdown](ss-markdown): Markdown syntax for our technical documentation - -## Feedback - -If you have a topic you would like covered in the misc section please ask for it on our [Bug Tracker](http://open.silverstripe.org) - +* [SS markdown](ss-markdown): Markdown syntax for our technical documentation \ No newline at end of file diff --git a/docs/en/misc/module-release-process.md b/docs/en/misc/module-release-process.md index 0c56338a7..8a0341e93 100644 --- a/docs/en/misc/module-release-process.md +++ b/docs/en/misc/module-release-process.md @@ -52,7 +52,7 @@ your modules page on silverstripe.org Both Google Code and github.com provide their own bugtracker - we encourage you to use any built-in tools that come with your version control hoster. Most Silverstripe-maintained modules have their bugtracker on -[open.silverstripe.org](http://open.silverstripe.org). +[github.com](http://www.github.com) (see [issue reporting guidelines](/misc/contributing/issues)). Providing bugtracking is a major form of communicating with your users in an efficient way, and will provide a good overview of outstanding work and the stability of your code to an interested user. @@ -111,7 +111,7 @@ that you can link from the `README.md` file. Example: tutorial.md howto-search-mymodule.md -The ["docsviewer" module](http://open.silverstripe.org/browser/modules/docsviewer/trunk) can be used +The ["docsviewer" module](https://github.com/silverstripe/silverstripe-docsviewer) can be used to list and render content inside a `docs/` folder (although it is not required, Markdown is designed to be readable in plain text as well). @@ -120,7 +120,6 @@ to be readable in plain text as well). In return for all your hard work in putting a high-quality module on the site, the SilverStripe project has the following options to support you: -* Use of [trac](http://open.silverstripe.org) to keep your bugs and feature requests organised * Advertising of your module on the http://silverstripe.org/modules/ modules page once it has reached a beta stage and shown to meet our requirements above. * We might showcase your module on our blog and/or newsletter, when it's first released and/or when a major version with diff --git a/docs/en/misc/release-process.md b/docs/en/misc/release-process.md index 677620ed4..d63659d3e 100644 --- a/docs/en/misc/release-process.md +++ b/docs/en/misc/release-process.md @@ -9,13 +9,13 @@ The current maintainer responsible for planning and performing releases is Ingo ## Release Planning -Our most up-to-date release plans are typically in the [roadmap](http://open.silverstripe.com/roadmap). +Our most up-to-date release plans are typically in the ["framework" milestone](https://github.com/silverstripe/sapphire/issues/milestones) and ["cms" milestone](https://github.com/silverstripe/silverstripe-cms/issues/milestones). New features and API changes are typically discussed on the [core mailinglist](http://groups.google.com/group/silverstripe-dev). They are prioritized by the core team as tickets on -[open.silverstripe.org](http://open.silverstripe.com/). +github.com. Release dates are usually not published prior to the release, but you can get a good idea of the release status by -reviewing the [release milestone](http://open.silverstripe.com/roadmap) on open.silverstripe.org. Releases will be +reviewing the release milestone on github.com. Releases will be announced on the [release announcements mailing list](http://groups.google.com/group/silverstripe-announce). Releases of the *cms* and *framework* modules are coupled at the moment, they follow the same numbering scheme. Module @@ -124,8 +124,8 @@ released version (e.g. 3.1.1), the target version becomes 3.2 instead. ### Reporting an issue -Report security issues to [security@silverstripe.com](mailto:security@silverstripe.com). Please don't file security -issues in our [bugtracker](http://open.silverstripe.org). +Report security issues to [security@silverstripe.com](mailto:security@silverstripe.com). +Please don't file security issues in our [bugtracker](/misc/contributing/issues). ### Acknowledgement and disclosure diff --git a/docs/en/topics/javascript.md b/docs/en/topics/javascript.md index fa946f106..d6edaf66d 100644 --- a/docs/en/topics/javascript.md +++ b/docs/en/topics/javascript.md @@ -647,5 +647,4 @@ afraid to experiment with using other approaches. * [css](css) * [Unobtrusive Javascript](http://www.onlinetools.org/articles/unobtrusivejavascript/chapter1.html) -* [Quirksmode: In-depth Javascript Resources](http://www.quirksmode.org/resources.html) -* [behaviour.js documentation](http://open.silverstripe.org/browser/modules/sapphire/branches/2.4/thirdparty/behaviour/README.md) +* [Quirksmode: In-depth Javascript Resources](http://www.quirksmode.org/resources.html) \ No newline at end of file