diff --git a/.gitignore b/.gitignore index b3d5320..0133453 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,5 @@ /staticpublisher/ /toolbar/ /display_logic/ +/silverstripe-dynamodb/ +/crontask/ \ No newline at end of file diff --git a/.htaccess b/.htaccess index cbc8cf7..26436e2 100644 --- a/.htaccess +++ b/.htaccess @@ -9,6 +9,23 @@ Deny from all +# This denies access to all yml files, since developers might include sensitive +# information in them. See the docs for work-arounds to serve some yaml files + + Order allow,deny + Deny from all + + +ErrorDocument 404 /assets/error-404.html +ErrorDocument 500 /assets/error-500.html + + + RedirectMatch 403 /silverstripe-cache(/|$) + RedirectMatch 403 /vendor(/|$) + RedirectMatch 403 /composer\.(json|lock) + RedirectMatch 403 /assets/\.lucene-index(/|$) + + RewriteEngine On diff --git a/.htaccess_live b/.htaccess_live deleted file mode 100644 index 53ed5a7..0000000 --- a/.htaccess_live +++ /dev/null @@ -1,357 +0,0 @@ - - Order deny,allow - Deny from all - Allow from 127.0.0.1 - - - - Order deny,allow - Deny from all - - - - RewriteEngine On - - # Legacy rewrite from sapphire/ to framework/ namespace - RewriteCond %{REQUEST_FILENAME} !-f - RewriteCond %{REQUEST_URI} !^framework/main\.php - RewriteRule ^sapphire/?(.*) http://doc.silverstripe.org/framework/$1 [R=301,L] - - # DokuWiki rewrite rules: Need to happen before other rules in order to redirect /doku.php?id= - # to /pagename, which can then be matched by the legacy rewrite rules further down - RewriteCond %{QUERY_STRING} ^(\bid\b=([^&]*)&?(.*)?) - RewriteRule ^doku.php$ http://doc.silverstripe.org/%2?%3 [R=301,L] - - # Redirect legacy URLs (assumes we're not redirecting other assets, for performance reasons) - # Note: Just works on top-level domains, not if the webroot is in a subfolder - RewriteCond %{REQUEST_URI} ^(.*)$ - RewriteCond %{REQUEST_FILENAME} !-f - RewriteCond %{REQUEST_URI} !\.(css|gif|ico|jpg|js|png|swf|txt)$ - #RewriteRule ^execution-pipeline$ http://doc.silverstripe.org/framework/en/reference/ [R=301,L] - - RewriteRule ^arraydata$ http://api.silverstripe.org/search/lookup/?q=ArrayData&module=sapphire [R=301,L] - RewriteRule ^autocompletefield$ http://api.silverstripe.org/search/lookup/?q=AutocompleteField&module=sapphire [R=301,L] - RewriteRule ^bbcode$ http://doc.silverstripe.org/framework/en/reference/ [R=301,L] - RewriteRule ^building-for-modularity$ http://doc.silverstripe.org/framework/en/topics/module-development [R=301,L] - RewriteRule ^built-in-page-controls$ http://doc.silverstripe.org/framework/en/reference/built-in-page-controls [R=301,L] - RewriteRule ^cache-control$ http://wiki.silverstripe.org/howto:cache-control [R=301,L] - RewriteRule ^casting$ http://doc.silverstripe.org/framework/en/topics/data-types [R=301,L] - RewriteRule ^checkboxfield$ http://api.silverstripe.org/search/lookup/?q=CheckboxField&module=sapphire [R=301,L] - RewriteRule ^checkboxsetfield$ http://api.silverstripe.org/search/lookup/?q=CheckboxSetField&module=sapphire [R=301,L] - RewriteRule ^checkoutpagetest$ http://doc.silverstripe.org/old/checkoutpagetest [R=301,L] - RewriteRule ^cmsmain$ http://doc.silverstripe.org/framework/en/topics/extending-the-cms [R=301,L] - RewriteRule ^cmsmenu$ http://api.silverstripe.org/search/lookup/?q=CMSMenu&module=sapphire [R=301,L] - RewriteRule ^common-problems$ http://doc.silverstripe.org/framework/en/installation/common-problems [R=301,L] - RewriteRule ^community_run_third_party_websites$ http://doc.silverstripe.org/old/community_run_third_party_websites [R=301,L] - RewriteRule ^complextablefield$ http://doc.silverstripe.org/framework/en/reference/complextablefield [R=301,L] - RewriteRule ^complextablefieldexamples$ http://doc.silverstripe.org/old/complextablefieldexamples [R=301,L] - RewriteRule ^compositefield$ http://api.silverstripe.org/search/lookup/?q=CompositeField&module=sapphire [R=301,L] - RewriteRule ^configuration$ http://doc.silverstripe.org/framework/en/topics/configuration [R=301,L] - RewriteRule ^contentdeliverynetworkissues$ http://doc.silverstripe.org/old/contentdeliverynetworkissues [R=301,L] - RewriteRule ^contentnegotiator$ http://api.silverstripe.org/search/lookup/?q=ContentNegotiator&module=sapphire [R=301,L] - RewriteRule ^contributors$ http://doc.silverstripe.org/old/contributors [R=301,L] - RewriteRule ^contributing$ http://doc.silverstripe.org/framework/en/misc/contributing [R=301,L] - RewriteRule ^controller$ http://doc.silverstripe.org/framework/en/topics/controller [R=301,L] - RewriteRule ^controllers$ http://doc.silverstripe.org/framework/en/topics/controller [R=301,L] - RewriteRule ^creating-modules$ http://doc.silverstripe.org/framework/en/topics/module-development [R=301,L] - RewriteRule ^css$ http://doc.silverstripe.org/framework/en/reference/theme-development [R=301,L] - RewriteRule ^csvbulkloader$ http://api.silverstripe.org/search/lookup/?q=CSVBulkLoader&module=sapphire [R=301,L] - RewriteRule ^currencyfield$ http://api.silverstripe.org/search/lookup/?q=CurrencyField&module=sapphire [R=301,L] - RewriteRule ^daily-builds$ http://doc.silverstripe.org/old/daily-builds [R=301,L] - RewriteRule ^data-types$ http://doc.silverstripe.org/framework/en/topics/data-types [R=301,L] - RewriteRule ^database-structure$ http://doc.silverstripe.org/framework/en/reference/database-structure [R=301,L] - RewriteRule ^database-troubleshooting$ http://doc.silverstripe.org/framework/en/reference/database-troubleshooting [R=301,L] - RewriteRule ^datamodel$ http://doc.silverstripe.org/framework/en/topics/datamodel [R=301,L] - RewriteRule ^dataobject$ http://doc.silverstripe.org/framework/en/reference/dataobject [R=301,L] - RewriteRule ^dataobjectdecorator$ http://doc.silverstripe.org/framework/en/reference/dataobjectdecorator [R=301,L] - RewriteRule ^dataobjectset$ http://doc.silverstripe.org/framework/en/reference/dataobjectset [R=301,L] - RewriteRule ^datefield$ http://api.silverstripe.org/search/lookup/?q=DateField&module=sapphire [R=301,L] - RewriteRule ^debugging$ http://doc.silverstripe.org/framework/en/topics/debugging [R=301,L] - RewriteRule ^deprecation$ http://doc.silverstripe.org/framework/en/misc/release-process [R=301,L] - RewriteRule ^director$ http://api.silverstripe.org/search/lookup/?q=Director&module=sapphire [R=301,L] - RewriteRule ^directory-structure$ http://doc.silverstripe.org/framework/en/topics/directory-structure [R=301,L] - RewriteRule ^documentation-guidelines$ http://doc.silverstripe.org/framework/en/misc/contributing [R=301,L] - RewriteRule ^dropdownfield$ http://api.silverstripe.org/search/lookup/?q=DropdownField&module=sapphire [R=301,L] - RewriteRule ^ecommercerole$ http://doc.silverstripe.org/old/ecommercerole [R=301,L] - RewriteRule ^email$ http://doc.silverstripe.org/framework/en/topics/email [R=301,L] - RewriteRule ^emailfield$ http://api.silverstripe.org/search/lookup/?q=EmailField&module=sapphire [R=301,L] - RewriteRule ^environment-management$ http://doc.silverstripe.org/framework/en/topics/environment-management [R=301,L] - RewriteRule ^error-handling$ http://doc.silverstripe.org/framework/en/topics/error-handling [R=301,L] - RewriteRule ^escape-types$ http://doc.silverstripe.org/framework/en/topics/security [R=301,L] - RewriteRule ^fieldgroup$ http://api.silverstripe.org/search/lookup/?q=FieldGroup&module=sapphire [R=301,L] - RewriteRule ^filefield$ http://api.silverstripe.org/search/lookup/?q=FileField&module=sapphire [R=301,L] - RewriteRule ^flickrservice$ http://doc.silverstripe.org/old/flickrservice [R=301,L] - RewriteRule ^form$ http://doc.silverstripe.org/framework/en/topics/forms [R=301,L] - RewriteRule ^form-field-types$ http://doc.silverstripe.org/framework/en/reference/form-field-types [R=301,L] - RewriteRule ^form-validation$ http://doc.silverstripe.org/framework/en/topics/form-validation [R=301,L] - RewriteRule ^formaction$ http://api.silverstripe.org/search/lookup/?q=FormAction&module=sapphire [R=301,L] - RewriteRule ^functionaltest$ http://api.silverstripe.org/search/lookup/?q=FunctionalTest&module=sapphire [R=301,L] - RewriteRule ^framework/en/trunk/misc/collaboration-on-git http://doc.silverstripe.org/framework/en/trunk/misc/contributing/code [R=301,L] - RewriteRule ^gsoc$ http://doc.silverstripe.org/old/gsoc [R=301,L] - RewriteRule ^hasmanycomplextablefield$ http://api.silverstripe.org/search/lookup/?q=HasManyComplexTableField&module=sapphire [R=301,L] - RewriteRule ^hasonecomplextablefield$ http://api.silverstripe.org/search/lookup/?q=HasOneComplexTableField&module=sapphire [R=301,L] - RewriteRule ^headerfield$ http://api.silverstripe.org/search/lookup/?q=HeaderField&module=sapphire [R=301,L] - RewriteRule ^head_office_boston_ma_-can_never_forget$ http://doc.silverstripe.org/old/head_office_boston_ma_-can_never_forget [R=301,L] - RewriteRule ^hiddenfield$ http://api.silverstripe.org/search/lookup/?q=HiddenField&module=sapphire [R=301,L] - RewriteRule ^hide-ancestor$ http://doc.silverstripe.org/old/hide-ancestor [R=301,L] - RewriteRule ^hierarchy$ http://api.silverstripe.org/search/lookup/?q=Hierarchy&module=sapphire [R=301,L] - RewriteRule ^how-page-security-works$ http://doc.silverstripe.org/framework/en/topics/security [R=301,L] - RewriteRule ^html$ http://doc.silverstripe.org/framework/en/topics/theme-development [R=301,L] - RewriteRule ^htmleditorconfig$ http://api.silverstripe.org/search/lookup/?q=HTMLEditorConfig&module=sapphire [R=301,L] - RewriteRule ^htmleditorfield$ http://api.silverstripe.org/search/lookup/?q=HTMLEditorField&module=sapphire [R=301,L] - RewriteRule ^i18n$ http://doc.silverstripe.org/framework/en/topics/i18n [R=301,L] - RewriteRule ^image$ http://doc.silverstripe.org/framework/en/reference/image [R=301,L] - RewriteRule ^imagefield$ http://api.silverstripe.org/search/lookup/?q=ImageField&module=sapphire [R=301,L] - RewriteRule ^installation$ http://doc.silverstripe.org/framework/en/ [R=301,L] - RewriteRule ^installation-on-lighttpd$ http://doc.silverstripe.org/framework/en/installation/lighttpd [R=301,L] - RewriteRule ^installation-on-mac-osx$ http://doc.silverstripe.org/framework/en/installation/mac-osx [R=301,L] - RewriteRule ^installation-on-nginx$ http://doc.silverstripe.org/framework/en/installation/nginx [R=301,L] - RewriteRule ^installation-on-webserver$ http://doc.silverstripe.org/framework/en/installation/webserver [R=301,L] - RewriteRule ^installation-on-windows-manual-iis$ http://doc.silverstripe.org/framework/en/installation/windows-manual-iis [R=301,L] - RewriteRule ^installation-on-windows-server-2003-iis-6$ http://doc.silverstripe.org/framework/en/installation/windows-manual-iis [R=301,L] - RewriteRule ^installation-on-windows-pi$ http://doc.silverstripe.org/framework/en/installation/windows-pi [R=301,L] - RewriteRule ^installation-on-windows-wamp$ http://doc.silverstripe.org/framework/en/installation/windows-wamp [R=301,L] - RewriteRule ^installing-modules$ http://doc.silverstripe.org/framework/en/topics/modules [R=301,L] - RewriteRule ^javascript$ http://doc.silverstripe.org/framework/en/reference/javascript [R=301,L] - RewriteRule ^jquery$ http://doc.silverstripe.org/framework/en/reference/javascript [R=301,L] - RewriteRule ^labelfield$ http://api.silverstripe.org/search/lookup/?q=LabelField&module=sapphire [R=301,L] - RewriteRule ^languagedropdownfield$ http://api.silverstripe.org/search/lookup/?q=LanguageDropdownField&module=sapphire [R=301,L] - RewriteRule ^leftandmain$ http://doc.silverstripe.org/framework/en/reference/leftandmain [R=301,L] - RewriteRule ^listboxfield$ http://api.silverstripe.org/search/lookup/?q=ListBoxField&module=sapphire [R=301,L] - RewriteRule ^literalfield$ http://api.silverstripe.org/search/lookup/?q=LiteralField&module=sapphire [R=301,L] - RewriteRule ^manifestbuilder$ http://api.silverstripe.org/search/lookup/?q=ManifestBuilder&module=sapphire [R=301,L] - RewriteRule ^member$ http://doc.silverstripe.org/framework/en/reference/member [R=301,L] - RewriteRule ^modeladmin$ http://doc.silverstripe.org/framework/en/reference/modeladmin [R=301,L] - RewriteRule ^module-maintainers$ http://doc.silverstripe.org/framework/en/misc/module-release-process [R=301,L] - RewriteRule ^module-releases$ http://doc.silverstripe.org/framework/en/misc/module-release-process [R=301,L] - RewriteRule ^module:external-content$ http://doc.silverstripe.org/old/module:external-content [R=301,L] - RewriteRule ^module:external-content-alfresco-connector$ http://doc.silverstripe.org/old/module:external-content-alfresco-connector [R=301,L] - RewriteRule ^module:external-content-newconnector$ http://doc.silverstripe.org/old/module:external-content-newconnector [R=301,L] - RewriteRule ^module:external-content-quickstart$ http://doc.silverstripe.org/old/module:external-content-quickstart [R=301,L] - RewriteRule ^module:filesystem-connector$ http://doc.silverstripe.org/old/module:filesystem-connector [R=301,L] - RewriteRule ^module:simplewiki$ http://doc.silverstripe.org/old/module:simplewiki [R=301,L] - RewriteRule ^modules:auth_ext_ad$ http://doc.silverstripe.org/old/modules:auth_ext_ad [R=301,L] - RewriteRule ^modules:auth_ext_drivers$ http://doc.silverstripe.org/old/modules:auth_ext_drivers [R=301,L] - RewriteRule ^modules:auth_ext_ldap$ http://doc.silverstripe.org/old/modules:auth_ext_ldap [R=301,L] - RewriteRule ^modules:blog$ http://doc.silverstripe.org/old/modules:blog [R=301,L] - RewriteRule ^modules:bulkuploaderfield$ http://doc.silverstripe.org/old/modules:bulkuploaderfield [R=301,L] - RewriteRule ^modules:calendar$ http://doc.silverstripe.org/old/modules:calendar [R=301,L] - RewriteRule ^modules:cmsworkflow$ http://doc.silverstripe.org/old/modules:cmsworkflow [R=301,L] - RewriteRule ^modules:dataobjectmanager$ http://doc.silverstripe.org/old/modules:dataobjectmanager [R=301,L] - RewriteRule ^modules:dbplumber$ http://doc.silverstripe.org/old/modules:dbplumber [R=301,L] - RewriteRule ^modules:diary$ http://doc.silverstripe.org/old/modules:diary [R=301,L] - RewriteRule ^modules:ecommerce$ http://doc.silverstripe.org/old/modules:ecommerce [R=301,L] - RewriteRule ^modules:embargoexpiry$ http://doc.silverstripe.org/old/modules:embargoexpiry [R=301,L] - RewriteRule ^modules:events$ http://doc.silverstripe.org/old/modules:events [R=301,L] - RewriteRule ^modules:event_calendar$ http://doc.silverstripe.org/old/modules:event_calendar [R=301,L] - RewriteRule ^modules:external-authentication$ http://doc.silverstripe.org/old/modules:external-authentication [R=301,L] - RewriteRule ^modules:flickrgallery$ http://doc.silverstripe.org/old/modules:flickrgallery [R=301,L] - RewriteRule ^modules:flickrservice$ http://doc.silverstripe.org/old/modules:flickrservice [R=301,L] - RewriteRule ^modules:forum$ http://doc.silverstripe.org/old/modules:forum [R=301,L] - RewriteRule ^modules:gallery$ http://doc.silverstripe.org/old/modules:gallery [R=301,L] - RewriteRule ^modules:genericdataadmin$ http://doc.silverstripe.org/old/modules:genericdataadmin [R=301,L] - RewriteRule ^modules:genericviews$ http://doc.silverstripe.org/old/modules:genericviews [R=301,L] - RewriteRule ^modules:geocoderfield$ http://doc.silverstripe.org/old/modules:geocoderfield [R=301,L] - RewriteRule ^modules:gis$ http://doc.silverstripe.org/old/modules:gis [R=301,L] - RewriteRule ^modules:googleanalytics$ http://doc.silverstripe.org/old/modules:googleanalytics [R=301,L] - RewriteRule ^modules:googlesitemaps$ http://doc.silverstripe.org/old/modules:googlesitemaps [R=301,L] - RewriteRule ^modules:hasmanyfilemanager$ http://doc.silverstripe.org/old/modules:hasmanyfilemanager [R=301,L] - RewriteRule ^modules:image_gallery$ http://doc.silverstripe.org/old/modules:image_gallery [R=301,L] - RewriteRule ^modules:intranet$ http://doc.silverstripe.org/old/modules:intranet [R=301,L] - RewriteRule ^modules:maps$ http://doc.silverstripe.org/old/modules:maps [R=301,L] - RewriteRule ^modules:mollom$ http://doc.silverstripe.org/old/modules:mollom [R=301,L] - RewriteRule ^modules:mssql$ http://doc.silverstripe.org/old/modules:mssql [R=301,L] - RewriteRule ^modules:multiform$ http://doc.silverstripe.org/old/modules:multiform [R=301,L] - RewriteRule ^modules:newsletter$ http://doc.silverstripe.org/old/modules:newsletter [R=301,L] - RewriteRule ^modules:polls$ http://doc.silverstripe.org/old/modules:polls [R=301,L] - RewriteRule ^modules:privatemessage$ http://doc.silverstripe.org/old/modules:privatemessage [R=301,L] - RewriteRule ^modules:recaptcha$ http://doc.silverstripe.org/old/modules:recaptcha [R=301,L] - RewriteRule ^modules:securefiles$ http://doc.silverstripe.org/old/modules:securefiles [R=301,L] - RewriteRule ^modules:sharethis$ http://doc.silverstripe.org/old/modules:sharethis [R=301,L] - RewriteRule ^modules:simplehtmleditorfield$ http://doc.silverstripe.org/old/modules:simplehtmleditorfield [R=301,L] - RewriteRule ^modules:simpletreedropdownfield$ http://doc.silverstripe.org/old/modules:simpletreedropdownfield [R=301,L] - RewriteRule ^modules:simplewysiwygfield$ http://doc.silverstripe.org/old/modules:simplewysiwygfield [R=301,L] - RewriteRule ^modules:simple_guestbook$ http://doc.silverstripe.org/old/modules:simple_guestbook [R=301,L] - RewriteRule ^modules:sitetreeimporter$ http://doc.silverstripe.org/old/modules:sitetreeimporter [R=301,L] - RewriteRule ^modules:sortabledataobject$ http://doc.silverstripe.org/old/modules:sortabledataobject [R=301,L] - RewriteRule ^modules:spamprotection$ http://doc.silverstripe.org/old/modules:spamprotection [R=301,L] - RewriteRule ^modules:sphinx$ http://doc.silverstripe.org/old/modules:sphinx [R=301,L] - RewriteRule ^modules:sqlite$ http://doc.silverstripe.org/old/modules:sqlite [R=301,L] - RewriteRule ^modules:staticimporter$ http://doc.silverstripe.org/old/modules:staticimporter [R=301,L] - RewriteRule ^modules:subsites$ http://doc.silverstripe.org/old/modules:subsites [R=301,L] - RewriteRule ^modules:suggestions_field$ http://doc.silverstripe.org/old/modules:suggestions_field [R=301,L] - RewriteRule ^modules:swfuploadfield$ http://doc.silverstripe.org/old/modules:swfuploadfield [R=301,L] - RewriteRule ^modules:tagfield$ http://doc.silverstripe.org/old/modules:tagfield [R=301,L] - RewriteRule ^modules:technoratiservice$ http://doc.silverstripe.org/old/modules:technoratiservice [R=301,L] - RewriteRule ^modules:translation$ http://doc.silverstripe.org/old/modules:translation [R=301,L] - RewriteRule ^modules:userforms$ http://doc.silverstripe.org/old/modules:userforms [R=301,L] - RewriteRule ^modules:youtubeservice$ http://doc.silverstripe.org/old/modules:youtubeservice [R=301,L] - RewriteRule ^multilingualcontent$ http://doc.silverstripe.org/framework/en/topics/translation [R=301,L] - RewriteRule ^numericfield$ http://api.silverstripe.org/search/lookup/?q=NumericField&module=sapphire [R=301,L] - RewriteRule ^object$ http://api.silverstripe.org/search/lookup/?q=Object&module=sapphire [R=301,L] - RewriteRule ^objectmodel$ http://doc.silverstripe.org/framework/en/topics/datamodel [R=301,L] - RewriteRule ^optionsetfield$ http://api.silverstripe.org/search/lookup/?q=OptionSetField&module=sapphire [R=301,L] - RewriteRule ^page$ http://doc.silverstripe.org/framework/en/reference/page-types [R=301,L] - RewriteRule ^page-types$ http://doc.silverstripe.org/framework/en/topics/page-types [R=301,L] - RewriteRule ^pagecomment$ http://api.silverstripe.org/search/lookup/?q=PageComment&module=sapphire [R=301,L] - RewriteRule ^partial-caching$ http://doc.silverstripe.org/framework/en/reference/partial-caching [R=301,L] - RewriteRule ^passwordfield$ http://api.silverstripe.org/search/lookup/?q=PasswordField&module=sapphire [R=301,L] - RewriteRule ^permission$ http://doc.silverstripe.org/framework/en/reference/permission [R=301,L] - RewriteRule ^postale$ http://doc.silverstripe.org/old/postale [R=301,L] - RewriteRule ^readonlyfield$ http://api.silverstripe.org/search/lookup/?q=ReadonlyField&module=sapphire [R=301,L] - RewriteRule ^recipes:adding_metatags$ http://doc.silverstripe.org/old/recipes:adding_metatags [R=301,L] - RewriteRule ^recipes:ajax_basics$ http://doc.silverstripe.org/old/recipes:ajax_basics [R=301,L] - RewriteRule ^recipes:alphabetical_dataobjectset$ http://doc.silverstripe.org/old/recipes:alphabetical_dataobjectset [R=301,L] - RewriteRule ^recipes:alternative_sorting_order$ http://doc.silverstripe.org/old/recipes:alternative_sorting_order [R=301,L] - RewriteRule ^recipes:amazing_looking_forms_using_silverstripe_form_default_rendering$ http://doc.silverstripe.org/old/recipes:amazing_looking_forms_using_silverstripe_form_default_rendering [R=301,L] - RewriteRule ^recipes:bookmarklets$ http://doc.silverstripe.org/old/recipes:bookmarklets [R=301,L] - RewriteRule ^recipes:building_a_nice_tree_for_selected_pages$ http://doc.silverstripe.org/old/recipes:building_a_nice_tree_for_selected_pages [R=301,L] - RewriteRule ^recipes:change_site_name_and_tagline$ http://doc.silverstripe.org/old/recipes:change_site_name_and_tagline [R=301,L] - RewriteRule ^recipes:changingfields$ http://doc.silverstripe.org/old/recipes:changingfields [R=301,L] - RewriteRule ^recipes:cheat_sheet$ http://doc.silverstripe.org/old/recipes:cheat_sheet [R=301,L] - RewriteRule ^recipes:combining_files$ http://doc.silverstripe.org/old/recipes:combining_files [R=301,L] - RewriteRule ^recipes:controllers$ http://doc.silverstripe.org/old/recipes:controllers [R=301,L] - RewriteRule ^recipes:customising_image$ http://doc.silverstripe.org/old/recipes:customising_image [R=301,L] - RewriteRule ^recipes:customising_meta_tags$ http://doc.silverstripe.org/old/recipes:customising_meta_tags [R=301,L] - RewriteRule ^recipes:displaying_five_latest_pages_from_multiple_pagetypes$ http://doc.silverstripe.org/old/recipes:displaying_five_latest_pages_from_multiple_pagetypes [R=301,L] - RewriteRule ^recipes:examples_of_creating_and_saving_pages$ http://doc.silverstripe.org/old/recipes:examples_of_creating_and_saving_pages [R=301,L] - RewriteRule ^recipes:example_config_file$ http://doc.silverstripe.org/old/recipes:example_config_file [R=301,L] - RewriteRule ^recipes:example_of_data_object$ http://doc.silverstripe.org/old/recipes:example_of_data_object [R=301,L] - RewriteRule ^recipes:example_of_quotes_on_a_page$ http://doc.silverstripe.org/old/recipes:example_of_quotes_on_a_page [R=301,L] - RewriteRule ^recipes:extending_the_event_calendar$ http://doc.silverstripe.org/old/recipes:extending_the_event_calendar [R=301,L] - RewriteRule ^recipes:final_parent$ http://doc.silverstripe.org/old/recipes:final_parent [R=301,L] - RewriteRule ^recipes:forms$ http://doc.silverstripe.org/old/recipes:forms [R=301,L] - RewriteRule ^recipes:gallery$ http://doc.silverstripe.org/old/recipes:gallery [R=301,L] - RewriteRule ^recipes:grouping_fields_from_your_data_object$ http://doc.silverstripe.org/old/recipes:grouping_fields_from_your_data_object [R=301,L] - RewriteRule ^recipes:installation-into-subversion$ http://doc.silverstripe.org/old/recipes:installation-into-subversion [R=301,L] - RewriteRule ^recipes:loopthroughassets$ http://doc.silverstripe.org/old/recipes:loopthroughassets [R=301,L] - RewriteRule ^recipes:many_many-example$ http://doc.silverstripe.org/old/recipes:many_many-example [R=301,L] - RewriteRule ^recipes:members-only-page$ http://doc.silverstripe.org/old/recipes:members-only-page [R=301,L] - RewriteRule ^recipes:menus_with_different_colour_buttons$ http://doc.silverstripe.org/old/recipes:menus_with_different_colour_buttons [R=301,L] - RewriteRule ^recipes:migratefilemanager$ http://doc.silverstripe.org/old/recipes:migratefilemanager [R=301,L] - RewriteRule ^recipes:multilingual_content$ http://doc.silverstripe.org/old/recipes:multilingual_content [R=301,L] - RewriteRule ^recipes:overriding-loginform$ http://doc.silverstripe.org/old/recipes:overriding-loginform [R=301,L] - RewriteRule ^recipes:page_selection_for_special_menu$ http://doc.silverstripe.org/old/recipes:page_selection_for_special_menu [R=301,L] - RewriteRule ^recipes:pretty_i18n_urls$ http://doc.silverstripe.org/old/recipes:pretty_i18n_urls [R=301,L] - RewriteRule ^recipes:previousornext$ http://doc.silverstripe.org/old/recipes:previousornext [R=301,L] - RewriteRule ^recipes:publishing-to-web-server$ http://doc.silverstripe.org/old/recipes:publishing-to-web-server [R=301,L] - RewriteRule ^recipes:rebranding-the-cms$ http://doc.silverstripe.org/old/recipes:rebranding-the-cms [R=301,L] - RewriteRule ^recipes:removingassetsfromsearch$ http://doc.silverstripe.org/old/recipes:removingassetsfromsearch [R=301,L] - RewriteRule ^recipes:requiredfieldsclass$ http://doc.silverstripe.org/old/recipes:requiredfieldsclass [R=301,L] - RewriteRule ^recipes:retrieving_image_from_your_page$ http://doc.silverstripe.org/old/recipes:retrieving_image_from_your_page [R=301,L] - RewriteRule ^recipes:selecting_pages_with_the_same_grandparent$ http://doc.silverstripe.org/old/recipes:selecting_pages_with_the_same_grandparent [R=301,L] - RewriteRule ^recipes:setting_menu_width_dynamically$ http://doc.silverstripe.org/old/recipes:setting_menu_width_dynamically [R=301,L] - RewriteRule ^recipes:siblings$ http://doc.silverstripe.org/old/recipes:siblings [R=301,L] - RewriteRule ^recipes:simplesignupform$ http://doc.silverstripe.org/old/recipes:simplesignupform [R=301,L] - RewriteRule ^recipes:site-news$ http://doc.silverstripe.org/old/recipes:site-news [R=301,L] - RewriteRule ^recipes:start$ http://doc.silverstripe.org/old/recipes:start [R=301,L] - RewriteRule ^recipes:structural-guidelines$ http://doc.silverstripe.org/old/recipes:structural-guidelines [R=301,L] - RewriteRule ^recipes:syntax-highlighting$ http://doc.silverstripe.org/old/recipes:syntax-highlighting [R=301,L] - RewriteRule ^recipes:typography_overview$ http://doc.silverstripe.org/old/recipes:typography_overview [R=301,L] - RewriteRule ^recipes:update_records_for_a_class_using_code$ http://doc.silverstripe.org/old/recipes:update_records_for_a_class_using_code [R=301,L] - RewriteRule ^recipes:what_to_return_from_a_function$ http://doc.silverstripe.org/old/recipes:what_to_return_from_a_function [R=301,L] - RewriteRule ^recipes:widget-forms-2.3$ http://doc.silverstripe.org/old/recipes:widget-forms-2.3 [R=301,L] - RewriteRule ^releases$ http://doc.silverstripe.org/framework/en/misc/release-process [R=301,L] - RewriteRule ^requirements$ http://doc.silverstripe.org/framework/en/reference/requirements [R=301,L] - RewriteRule ^restfulserver$ http://api.silverstripe.org/search/lookup/?q=RestfulServer&module=sapphire [R=301,L] - RewriteRule ^restfulservice$ http://doc.silverstripe.org/framework/en/reference/restfulservice [R=301,L] - RewriteRule ^rssfeed$ http://doc.silverstripe.org/framework/en/reference/rssfeed [R=301,L] - RewriteRule ^sake$ http://doc.silverstripe.org/framework/en/topics/commandline [R=301,L] - RewriteRule ^searchcontext$ http://doc.silverstripe.org/framework/en/topics/search [R=301,L] - RewriteRule ^searchform$ http://doc.silverstripe.org/framework/en/topics/search [R=301,L] - RewriteRule ^secure-development$ http://doc.silverstripe.org/framework/en/topics/security [R=301,L] - RewriteRule ^security$ http://doc.silverstripe.org/framework/en/topics/security [R=301,L] - RewriteRule ^security-statement$ http://doc.silverstripe.org/old/security-statement [R=301,L] - RewriteRule ^selectiongroup$ http://api.silverstripe.org/search/lookup/?q=SelectionGroup&module=sapphire [R=301,L] - RewriteRule ^server-requirements$ http://doc.silverstripe.org/framework/en/installation/server-requirements [R=301,L] - RewriteRule ^sessions$ http://api.silverstripe.org/search/lookup/?q=Session&module=sapphire [R=301,L] - RewriteRule ^shortcodes$ http://doc.silverstripe.org/framework/en/reference/bbcode [R=301,L] - RewriteRule ^silverstripe-book-errata$ http://doc.silverstripe.org/old/silverstripe-book-errata [R=301,L] - RewriteRule ^siteconfig$ http://doc.silverstripe.org/framework/en/reference/siteconfig [R=301,L] - RewriteRule ^sitetree$ http://doc.silverstripe.org/framework/en/reference/sitetree [R=301,L] - RewriteRule ^sqlquery$ http://doc.silverstripe.org/framework/en/reference/sqlquery [R=301,L] - RewriteRule ^start$ http://doc.silverstripe.org/framework/en/ [R=301,L] - RewriteRule ^staticexporter$ http://api.silverstripe.org/search/lookup/?q=StaticExporter&module=sapphire [R=301,L] - RewriteRule ^staticpublisher$ http://doc.silverstripe.org/framework/en/reference/staticpublisher [R=301,L] - RewriteRule ^suggested-web-hosts$ http://doc.silverstripe.org/old/suggested-web-hosts [R=301,L] - RewriteRule ^subversion$ http://doc.silverstripe.org/framework/en/installation/from-source [R=301,L] - RewriteRule ^tab$ http://api.silverstripe.org/search/lookup/?q=Tab&module=sapphire [R=301,L] - RewriteRule ^tablefield$ http://doc.silverstripe.org/framework/en/reference/tablefield [R=301,L] - RewriteRule ^tablelistfield$ http://doc.silverstripe.org/framework/en/reference/tablelistfield [R=301,L] - RewriteRule ^tabset$ http://api.silverstripe.org/search/lookup/?q=TabSet&module=sapphire [R=301,L] - RewriteRule ^templates$ http://doc.silverstripe.org/framework/en/topics/templates [R=301,L] - RewriteRule ^testing-guide$ http://doc.silverstripe.org/framework/en/topics/testing/ [R=301,L] - RewriteRule ^testing-guide-glossary$ http://doc.silverstripe.org/framework/en/topics/testing/ [R=301,L] - RewriteRule ^testing-guide-intro$ http://doc.silverstripe.org/framework/en/topics/testing/testing-guide [R=301,L] - RewriteRule ^testing-guide-troubleshooting$ http://doc.silverstripe.org/framework/en/topics/testing/testing-guide-troubleshooting [R=301,L] - RewriteRule ^testing-howto:create-functional-test$ http://doc.silverstripe.org/framework/en/topics/testing/create-functional-test [R=301,L] - RewriteRule ^testing-howto:create-sapphire-test$ http://doc.silverstripe.org/framework/en/topics/testing/create-sapphire-test [R=301,L] - RewriteRule ^testing-howto:test-email-sending$ http://doc.silverstripe.org/framework/en/topics/testing/email-sending [R=301,L] - RewriteRule ^textareafield$ http://api.silverstripe.org/search/lookup/?q=TextAreaField&module=sapphire [R=301,L] - RewriteRule ^textfield$ http://api.silverstripe.org/search/lookup/?q=TextField&module=sapphire [R=301,L] - RewriteRule ^themes$ http://doc.silverstripe.org/framework/en/topics/themes [R=301,L] - RewriteRule ^themes:developing$ http://doc.silverstripe.org/framework/en/topics/theme-development [R=301,L] - RewriteRule ^third-party-packages$ http://doc.silverstripe.org/old/third-party-packages [R=301,L] - RewriteRule ^tools$ http://doc.silverstripe.org/old/tools [R=301,L] - RewriteRule ^tools:dreamweaver$ http://doc.silverstripe.org/old/tools:dreamweaver [R=301,L] - RewriteRule ^tools:eclipse$ http://doc.silverstripe.org/old/tools:eclipse [R=301,L] - RewriteRule ^tools:gedit$ http://doc.silverstripe.org/old/tools:gedit [R=301,L] - RewriteRule ^tools:netbeans$ http://doc.silverstripe.org/old/tools:netbeans [R=301,L] - RewriteRule ^tools:textmate$ http://doc.silverstripe.org/old/tools:textmate [R=301,L] - RewriteRule ^translatable$ http://doc.silverstripe.org/framework/en/topics/translation [R=301,L] - RewriteRule ^translation$ http://doc.silverstripe.org/framework/en/topics/translation [R=301,L] - RewriteRule ^treedropdownfield$ http://api.silverstripe.org/search/lookup/?q=TreeDropdownField&module=sapphire [R=301,L] - RewriteRule ^treemultiselectfield$ http://api.silverstripe.org/search/lookup/?q=TreeMultiSelectField&module=sapphire [R=301,L] - RewriteRule ^tutorial:1-building-a-basic-site$ http://doc.silverstripe.org/framework/en/tutorials/1-building-a-basic-site [R=301,L] - RewriteRule ^tutorial:2-extending-a-basic-site$ http://doc.silverstripe.org/framework/en/tutorials/2-extending-a-basic-site [R=301,L] - RewriteRule ^tutorial:3-forms$ http://doc.silverstripe.org/framework/en/tutorials/3-forms [R=301,L] - RewriteRule ^tutorial:4-site-search$ http://doc.silverstripe.org/framework/en/tutorials/4-site-search [R=301,L] - RewriteRule ^tutorial:5-dataobject-relationship-management$ http://doc.silverstripe.org/framework/en/tutorials/5-dataobject-relationship-management [R=301,L] - RewriteRule ^tutorials$ http://doc.silverstripe.org/framework/en/tutorials/ [R=301,L] - RewriteRule ^tutorials$ http://doc.silverstripe.org/framework/en/tutorials/ [R=301,L] - RewriteRule ^typography$ http://doc.silverstripe.org/framework/en/reference/typography [R=301,L] - RewriteRule ^upgrading$ http://doc.silverstripe.org/framework/en/installation/upgrading [R=301,L] - RewriteRule ^upgrading$ http://doc.silverstripe.org/framework/en/installation/upgrading/ [R=301,L] - RewriteRule ^uploadify$ http://doc.silverstripe.org/old/uploadify [R=301,L] - RewriteRule ^urlvariabletools$ http://doc.silverstripe.org/framework/en/reference/urlvariabletools [R=301,L] - RewriteRule ^validator$ http://api.silverstripe.org/search/lookup/?q=Validator&module=sapphire [R=301,L] - RewriteRule ^versioned$ http://doc.silverstripe.org/framework/en/reference/versioned [R=301,L] - RewriteRule ^videotours$ http://doc.silverstripe.org/old/videotours [R=301,L] - RewriteRule ^virtualpage$ http://api.silverstripe.org/search/lookup/?q=VirtualPage&module=sapphire [R=301,L] - RewriteRule ^widgets$ http://doc.silverstripe.org/framework/en/topics/widgets [R=301,L] - RewriteRule ^buildbot-try-server$ http://doc.silverstripe.org/old/buildbot-try-server [R=301,L] - - # Legacy rewrite: Can't use 'master' as it confuses api.ss.org linking - RewriteRule ^framework/en/master(.*) http://doc.silverstripe.org/framework/en/trunk$1 [R=301,L] - - # Legacy rewrite: sapphire should point to framework - RewriteRule ^sapphire(.*) http://doc.silverstripe.org/framework$1 [R=301,L] - - # Anything in sapphire/en//misc is redirected to trunk, the info in there is usually not version specific, - # and only updated on master (e.g. contribution and coding guidelines) - RewriteRule ^framework/en/misc/?(.*) http://doc.silverstripe.org/framework/en/trunk/misc/$1 [R=301,L] - RewriteRule ^framework/en/[\d.]*/misc/?(.*) http://doc.silverstripe.org/framework/en/trunk/misc/$1 [R=301,L] - - - RewriteCond %{REQUEST_URI} ^(.*)$ - RewriteCond %{REQUEST_FILENAME} !-f - RewriteCond %{REQUEST_URI} !\.(css|gif|ico|jpg|js|png|swf|txt)$ - RewriteRule .* framework/main.php?url=%1&%{QUERY_STRING} [L] - - -ErrorDocument 404 /assets/error-404.html -ErrorDocument 500 /assets/error-500.html - -FileETag INode MTime - - -ExpiresActive on -ExpiresByType image/* "access plus 7 days" -ExpiresByType text/css "access plus 7 days" -ExpiresByType application/x-javascript "access plus 7 days" -ExpiresByType application/javascript "access plus 7 days" - - - - SetOutputFilter DEFLATE - diff --git a/Makefile b/Makefile deleted file mode 100644 index b4c9ed7..0000000 --- a/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -all: - @echo "Available commands:" - @grep "^[^#[:space:]].*:$$" Makefile - -update: - @make fetch - @make index - -fetch: - @./bin/update.sh $(CURDIR) - -index: - @php framework/cli-script.php dev/tasks/RebuildLuceneDocsIndex flush=1 - -test: - $(MAKE) QUERYSTRING="$(QUERYSTRING)&SkipTests=RestfulServiceTest" -C sapphire test - diff --git a/README.md b/README.md index 3097583..77c3811 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ This is the source code powering http://docs.silverstripe.org. It primarily consists of the SilverStripe [framework](https://github.com/silverstripe/silverstripe-framework) -and [docsviewer](https://github.com/silverstripe/silverstripe-docsviewer) +and the [docsviewer](https://github.com/silverstripe/silverstripe-docsviewer) module with minimal configuration. For adding functionality or editing the style of the documentation see the @@ -15,9 +15,15 @@ To set up a test instance: * Clone this repository to a LAMP server. * Install [Composer](http://docs.silverstripe.org/en/getting_started/composer) + * Install [sake](https://docs.silverstripe.org/en/developer_guides/cli/). * After installing composer run `composer install --prefer-source` to grab the modules. - * Run `make update` to check out the repositories from which it builds the - docs (this will take a while the first time) + * Run the docs crontask in the browser `dev/tasks/UpdateDocsCronTask` + to download all fresh markdown documentation files and reindex them. Note: this + will take some time to run. Alternatively, you can use sake + to perform these tasks by firstly running the command `sake + dev/tasks/RefreshMarkdownTask flush=1` and secondly `sake + dev/tasks/RebuildLuceneDocsIndex flush=1`. + * Make sure to flush the cache for markdown content to show up. ## Source Documentation Files @@ -27,17 +33,33 @@ ignored from this repository to allow for easier updating and to keep this project small. To update or download the source documentation at any time run the following -make command in your terminal: +BuildTask command with sake: cd /Sites/doc.silverstripe.org/ - make fetch + sake dev/tasks/RefreshMarkdownTask flush=1 -`make fetch` will call bin/update.sh to download / update each module as listed -in the bin/update.sh file. +This build task will download / update each module as listed in the +`app/_config/docs-repositories.yml` file. Running `sake +dev/tasks/RebuildLuceneDocsIndex flush=1` will then create a search +index and reindex the documentation to facilitate searching. -Once the `make fetch` command has executed and downloaded the latest files, +Once the build task has executed and downloaded the latest files, those files are registered along with the module version the folder relates to -through the [docsviewer.yml](https://github.com/silverstripe/doc.silverstripe.org/blob/master/app/_config/docsviewer.yml) file. +through the `app/_config/docsviewer.yml` file. + +```yaml +DocumentationManifest: + register_entities: + - + Path: "src/framework_3.2/docs/" + Title: "Developer Documentation" + Version: "3.2" + Stable: true + DefaultEntity: true +``` + +Set `Stable: true` on the set of documentation relating the current stable version of SilverStripe. + ## Contribution @@ -56,9 +78,12 @@ docs.silverstripe.org via a cron job. ## Cron job -The cron job keeps docs.silverstripe.org up to date with the latest code. This -cron task calls `make update`, a script that fetches the latest documentation -for each module from git and rebuilds the search indexes. +The cron job `UpdateDocsCronTask` includes tasks that fetch the latest documentation for each module from git and rebuilds the search indexes. - 05 * * * * sites make -f /sites/ss2doc-v2/www/Makefile -C /sites/ss2doc-v2/www update + public function getSchedule() { + return "0 20 * * *"; // runs process() function every day at 8PM + } +## Deployment + +Deployment is via the SilverStripe Platform deployment tool and uses StackShare. diff --git a/app/_config.php b/app/_config.php index 8fe7818..120b348 100644 --- a/app/_config.php +++ b/app/_config.php @@ -4,10 +4,11 @@ global $project; $project = 'app'; global $database; -$database = 'SS_ssdoc'; -if (defined('SS_DATABASE_NAME')) { +if(defined('SS_DATABASE_NAME') && SS_DATABASE_NAME) { $database = SS_DATABASE_NAME; +} else { + $database = 'SS_ssdoc'; } if(isset($_ENV['CLEARDB_DATABASE_URL'])) { @@ -57,9 +58,7 @@ Config::inst()->update('DocumentationSearch', 'boost_by_path', array( )); // Set shared index (avoid issues with different temp paths between CLI and web users) -if(file_exists(BASE_PATH . '/.lucene-index')) { - Config::inst()->update('DocumentationSearch', 'index_location', BASE_PATH . '/.lucene-index'); -} +Config::inst()->update('DocumentationSearch', 'index_location', BASE_PATH . '/assets/.lucene-index'); // Fix invalid character in iconv // see http://stackoverflow.com/questions/4723135/invalid-characters-for-lucene-text-search diff --git a/app/_config/config.yml b/app/_config/config.yml index d1ac530..c27c045 100644 --- a/app/_config/config.yml +++ b/app/_config/config.yml @@ -9,4 +9,4 @@ StaticExporter: disable_sitetree_export: true Controller: extensions: - - ControllerExtension + - ControllerExtension \ No newline at end of file diff --git a/app/_config/docs-repositiories.yml b/app/_config/docs-repositiories.yml new file mode 100644 index 0000000..b6bbacf --- /dev/null +++ b/app/_config/docs-repositiories.yml @@ -0,0 +1,32 @@ +--- +Name: docs-repos +After: + - framework/* + - cms/* +--- +RefreshMarkdownTask: + documentation_repositories: + - + - silverstripe/silverstripe-framework + - framework + - master + - + - silverstripe/silverstripe-framework + - framework + - "3.3" + - + - silverstripe/silverstripe-framework + - framework + - "3.2" + - + - silverstripe/silverstripe-framework + - framework + - "3.1" + - + - silverstripe/silverstripe-framework + - framework + - "3.0" + - + - silverstripe/silverstripe-framework + - framework + - "2.4" \ No newline at end of file diff --git a/app/_config/docsviewer.yml b/app/_config/docsviewer.yml index 8fcda1d..e23a9e6 100644 --- a/app/_config/docsviewer.yml +++ b/app/_config/docsviewer.yml @@ -10,41 +10,35 @@ DocumentationManifest: automatic_registration: false register_entities: - - Path: "src/framework_master/docs/" + Path: "assets/src/framework_master/docs/" Title: "Framework" Version: "4.0" Branch: "master" DefaultEntity: true - - Path: "src/framework_3/docs/" - Title: "Framework" - Version: "3.4" - Branch: "3" - DefaultEntity: true - - - Path: "src/framework_3.3/docs/" + Path: "assets/src/framework_3.3/docs/" Title: "Framework" Version: "3.3" Branch: "3.3" DefaultEntity: true - - Path: "src/framework_3.2/docs/" + Path: "assets/src/framework_3.2/docs/" Title: "Framework" Version: "3.2" Stable: true DefaultEntity: true - - Path: "src/framework_3.1/docs/" + Path: "assets/src/framework_3.1/docs/" Title: "Framework" Version: "3.1" DefaultEntity: true - - Path: "src/framework_3.0/docs/" + Path: "assets/src/framework_3.0/docs/" Title: "Framework" Version: "3.0" DefaultEntity: true - - Path: "src/framework_2.4/docs/" + Path: "assets/src/framework_2.4/docs/" Title: "Framework" Version: "2.4" DefaultEntity: true diff --git a/app/_config/routes.yml b/app/_config/routes.yml index 541719a..e74f2f7 100644 --- a/app/_config/routes.yml +++ b/app/_config/routes.yml @@ -1,5 +1,5 @@ --- -Name: docs +Name: docs-routes After: framework/routes#coreroutes --- Director: diff --git a/app/_config/toolbar.yml b/app/_config/toolbar.yml index b78334e..f5f099b 100644 --- a/app/_config/toolbar.yml +++ b/app/_config/toolbar.yml @@ -22,7 +22,7 @@ Only: environment: test --- GlobalNav: - hostname: '//sssites-ssorg-uat.sites.silverstripe.com/' + hostname: '//www.silverstripe.org/' css_path: '/themes/ssv3/css/toolbar.min.css' snippet_path: '/assets' use_localhost: false diff --git a/app/code/RefreshMarkdownTask.php b/app/code/RefreshMarkdownTask.php new file mode 100644 index 0000000..bf18556 --- /dev/null +++ b/app/code/RefreshMarkdownTask.php @@ -0,0 +1,119 @@ +printLine("refreshing markdown files..."); + + $repositories = $this->getRepositories(); + + foreach ($repositories as $repository) { + $this->cloneRepository($repository); + $this->cleanRepository($repository); + } + } + + /** + * @return string + * + * @todo document this new configuration parameter + */ + private function getPath() + { + return ASSETS_PATH; + } + + /** + * @param string $message + */ + private function printLine($message) + { + $this->eol = Director::is_cli() ? PHP_EOL : "
"; + print $message . $this->eol; + flush(); + } + + /** + * Returns the array of repos to source markdown docs from + * + * @return array + * + */ + private function getRepositories() + { + if($repos = $this->config()->documentation_repositories) + { + return $repos; + } else { + user_error("You need to set 'RefreshMarkdownTask:documentation_repositories' array in a yaml configuration file", E_USER_WARNING); + return null; + } + } + + /** + * @param array $repository + * + * @todo test this works with all modules + */ + private function cloneRepository(array $repository) + { + list($remote, $folder, $branch) = $repository; + + $path = $this->getPath(); + + exec("mkdir -p {$path}/src"); + exec("rm -rf {$path}/src/{$folder}_{$branch}"); + + $this->printLine("cloning " . $remote . "/" . $branch); + + chdir("{$path}/src"); + exec("git clone -q git://github.com/{$remote}.git {$folder}_{$branch} --quiet"); + + chdir("{$path}/src/{$folder}_{$branch}"); + exec("git fetch origin"); + exec("git checkout -q origin/{$branch}"); + } + + /** + * Clears out any non markdown files stored in assets + * + * @param array $repository + */ + private function cleanRepository(array $repository) + { + $paths = array_merge(glob("*"), glob(".*")); + + foreach ($paths as $path) { + if ($path !== "docs" && $path !== "." && $path !== "..") { + exec("rm -rf {$path}"); + } + } + } +} diff --git a/app/code/UpdateDocsCronTask.php b/app/code/UpdateDocsCronTask.php new file mode 100644 index 0000000..9ada0d7 --- /dev/null +++ b/app/code/UpdateDocsCronTask.php @@ -0,0 +1,28 @@ +run(null); + + //reindex markdown files + $reindex_task = new RebuildLuceneDocsIndex(); + $reindex_task->run(null); + + } +} diff --git a/bin/update.sh b/bin/update.sh deleted file mode 100755 index 28ad974..0000000 --- a/bin/update.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash - -dir=$1 - -if [ ! "$dir" ]; then - echo "Usage: $0 /base/folder/to/docs" - exit 1 -fi - -#=== FUNCTION ================================================================ -# NAME: checkout -# DESCRIPTION: Checks out a specific branch of a module into a folder. Not -# particular good for taking up space, but at the moment separate -# folders for each version we need will do. -# -# The master branch will checked out by default -# PARAMETERS: -# $1 - module path on github (e.g silverstripe/sapphire.git) -# $2 - branch name (e.g 3.0) -# $3 - module name (e.g sapphire) -# -#=============================================================================== -# Parameters: github path -function checkout { - # Create dirs - if [ ! -d $dir/src ]; then - mkdir $dir/src - fi - - if [ ! -d $dir/src/$2_$3 ]; then - echo "Cloning $1 branch $3" - cd $dir/src - git clone -b $3 --depth=100 git://github.com/$1 $dir/src/$2_$3 --quiet - else - echo "Updating $2 from branch $3" - cd $dir/src/$2_$3 - git reset --hard -q - git fetch origin -q - git pull -q origin $3 - fi -} - -# core -checkout 'silverstripe/silverstripe-framework.git' 'framework' 'master' -checkout 'silverstripe/silverstripe-framework.git' 'framework' '3' -checkout 'silverstripe/silverstripe-framework.git' 'framework' '3.3' -checkout 'silverstripe/silverstripe-framework.git' 'framework' '3.2' -checkout 'silverstripe/silverstripe-framework.git' 'framework' '3.1' -checkout 'silverstripe/silverstripe-framework.git' 'framework' '3.0' -checkout 'silverstripe/silverstripe-framework.git' 'framework' '2.4' - -echo "Done." \ No newline at end of file diff --git a/composer.json b/composer.json index 8a5f99f..6a29945 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,8 @@ "ext-mbstring": "*", "silverstripe/docsviewer": "dev-master", "silverstripe/framework": "^3.2", - "silverstripe/toolbar": "^4.0" + "silverstripe/toolbar": "^4.0", + "silverstripe/dynamodb": "^1.1" }, "require-dev": { "phpunit/PHPUnit": "~3.7@stable" diff --git a/composer.lock b/composer.lock index 9bd0e37..836e30e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,25 +4,88 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "cd69d6da542e5a55eb70de4717509fec", - "content-hash": "2d681db39312cbcf607f72a193a9c2b1", + "hash": "1ddd85476025c0b7a81ac788f843c0ee", + "content-hash": "fc7210e99b3e3e346c1ea1bd9edf7cb8", "packages": [ { - "name": "composer/installers", - "version": "v1.0.22", + "name": "aws/aws-sdk-php", + "version": "2.8.27", "source": { "type": "git", - "url": "https://github.com/composer/installers.git", - "reference": "bd9b14f094c89c8b5804a4e41edeb7853bb85046" + "url": "https://github.com/aws/aws-sdk-php.git", + "reference": "c1605360b6624958a5397601ad5543cd45fcf8f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/installers/zipball/bd9b14f094c89c8b5804a4e41edeb7853bb85046", - "reference": "bd9b14f094c89c8b5804a4e41edeb7853bb85046", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/c1605360b6624958a5397601ad5543cd45fcf8f7", + "reference": "c1605360b6624958a5397601ad5543cd45fcf8f7", "shasum": "" }, "require": { - "composer-plugin-api": "1.0.0" + "guzzle/guzzle": "~3.7", + "php": ">=5.3.3" + }, + "require-dev": { + "doctrine/cache": "~1.0", + "ext-openssl": "*", + "monolog/monolog": "~1.4", + "phpunit/phpunit": "~4.0", + "phpunit/phpunit-mock-objects": "2.3.1", + "symfony/yaml": "~2.1" + }, + "suggest": { + "doctrine/cache": "Adds support for caching of credentials and responses", + "ext-apc": "Allows service description opcode caching, request and response caching, and credentials caching", + "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", + "monolog/monolog": "Adds support for logging HTTP requests and responses", + "symfony/yaml": "Eases the ability to write manifests for creating jobs in AWS Import/Export" + }, + "type": "library", + "autoload": { + "psr-0": { + "Aws": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Amazon Web Services", + "homepage": "http://aws.amazon.com" + } + ], + "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", + "homepage": "http://aws.amazon.com/sdkforphp", + "keywords": [ + "amazon", + "aws", + "cloud", + "dynamodb", + "ec2", + "glacier", + "s3", + "sdk" + ], + "time": "2016-01-30 00:53:32" + }, + { + "name": "composer/installers", + "version": "v1.0.23", + "source": { + "type": "git", + "url": "https://github.com/composer/installers.git", + "reference": "6213d900e92647831f7a406d5c530ea1f3d4360e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/installers/zipball/6213d900e92647831f7a406d5c530ea1f3d4360e", + "reference": "6213d900e92647831f7a406d5c530ea1f3d4360e", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0" }, "replace": { "roundcube/plugin-installer": "*", @@ -103,7 +166,77 @@ "zend", "zikula" ], - "time": "2015-10-29 23:28:48" + "time": "2016-01-27 12:54:22" + }, + { + "name": "doctrine/cache", + "version": "v1.6.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "f8af318d14bdb0eff0336795b428b547bd39ccb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/f8af318d14bdb0eff0336795b428b547bd39ccb6", + "reference": "f8af318d14bdb0eff0336795b428b547bd39ccb6", + "shasum": "" + }, + "require": { + "php": "~5.5|~7.0" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "phpunit/phpunit": "~4.8|~5.0", + "predis/predis": "~1.0", + "satooshi/php-coveralls": "~0.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Caching library offering an object-oriented API for many cache backends", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "cache", + "caching" + ], + "time": "2015-12-31 16:37:02" }, { "name": "erusev/parsedown", @@ -188,18 +321,205 @@ ], "time": "2014-09-16 11:54:01" }, + { + "name": "guzzle/guzzle", + "version": "v3.9.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle3.git", + "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/0645b70d953bc1c067bbc8d5bc53194706b628d9", + "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": ">=5.3.3", + "symfony/event-dispatcher": "~2.1" + }, + "replace": { + "guzzle/batch": "self.version", + "guzzle/cache": "self.version", + "guzzle/common": "self.version", + "guzzle/http": "self.version", + "guzzle/inflection": "self.version", + "guzzle/iterator": "self.version", + "guzzle/log": "self.version", + "guzzle/parser": "self.version", + "guzzle/plugin": "self.version", + "guzzle/plugin-async": "self.version", + "guzzle/plugin-backoff": "self.version", + "guzzle/plugin-cache": "self.version", + "guzzle/plugin-cookie": "self.version", + "guzzle/plugin-curlauth": "self.version", + "guzzle/plugin-error-response": "self.version", + "guzzle/plugin-history": "self.version", + "guzzle/plugin-log": "self.version", + "guzzle/plugin-md5": "self.version", + "guzzle/plugin-mock": "self.version", + "guzzle/plugin-oauth": "self.version", + "guzzle/service": "self.version", + "guzzle/stream": "self.version" + }, + "require-dev": { + "doctrine/cache": "~1.3", + "monolog/monolog": "~1.0", + "phpunit/phpunit": "3.7.*", + "psr/log": "~1.0", + "symfony/class-loader": "~2.1", + "zendframework/zend-cache": "2.*,<2.3", + "zendframework/zend-log": "2.*,<2.3" + }, + "suggest": { + "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.9-dev" + } + }, + "autoload": { + "psr-0": { + "Guzzle": "src/", + "Guzzle\\Tests": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Guzzle Community", + "homepage": "https://github.com/guzzle/guzzle/contributors" + } + ], + "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2015-03-18 18:23:50" + }, + { + "name": "mtdowling/cron-expression", + "version": "v1.0.4", + "source": { + "type": "git", + "url": "https://github.com/mtdowling/cron-expression.git", + "reference": "fd92e883195e5dfa77720b1868cf084b08be4412" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/fd92e883195e5dfa77720b1868cf084b08be4412", + "reference": "fd92e883195e5dfa77720b1868cf084b08be4412", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "4.*" + }, + "type": "library", + "autoload": { + "psr-0": { + "Cron": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "time": "2015-01-11 23:07:46" + }, + { + "name": "silverstripe/crontask", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/silverstripe-labs/silverstripe-crontask.git", + "reference": "0db152c8edf448e3ed9797d60e181800ac67ed75" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/silverstripe-labs/silverstripe-crontask/zipball/0db152c8edf448e3ed9797d60e181800ac67ed75", + "reference": "0db152c8edf448e3ed9797d60e181800ac67ed75", + "shasum": "" + }, + "require": { + "mtdowling/cron-expression": "1.0.*", + "silverstripe/framework": "~3.1" + }, + "require-dev": { + "phpunit/phpunit": "~3.7@stable" + }, + "type": "silverstripe-module", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "SilverStripe", + "homepage": "http://silverstripe.com" + }, + { + "name": "The SilverStripe Community", + "homepage": "http://silverstripe.org" + } + ], + "description": "Module for running tasks with a standard cron timeschedule", + "keywords": [ + "cron", + "silverstripe" + ], + "time": "2014-11-20 01:20:17" + }, { "name": "silverstripe/docsviewer", "version": "dev-master", "source": { "type": "git", "url": "https://github.com/silverstripe/silverstripe-docsviewer.git", - "reference": "2f0cbfe4f675dd3957623055cfbeccd8ebf1bfef" + "reference": "f70d5fde0a2bae46d6ee49779f57249c72b55e69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silverstripe/silverstripe-docsviewer/zipball/2f0cbfe4f675dd3957623055cfbeccd8ebf1bfef", - "reference": "2f0cbfe4f675dd3957623055cfbeccd8ebf1bfef", + "url": "https://api.github.com/repos/silverstripe/silverstripe-docsviewer/zipball/f70d5fde0a2bae46d6ee49779f57249c72b55e69", + "reference": "f70d5fde0a2bae46d6ee49779f57249c72b55e69", "shasum": "" }, "require": { @@ -227,7 +547,48 @@ "documentation", "silverstripe" ], - "time": "2015-11-17 03:04:08" + "time": "2016-01-24 12:24:56" + }, + { + "name": "silverstripe/dynamodb", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/silverstripe/silverstripe-dynamodb.git", + "reference": "1336a57cbb5b8a19abd2b9f67099db9a20aaf8c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/silverstripe/silverstripe-dynamodb/zipball/1336a57cbb5b8a19abd2b9f67099db9a20aaf8c4", + "reference": "1336a57cbb5b8a19abd2b9f67099db9a20aaf8c4", + "shasum": "" + }, + "require": { + "aws/aws-sdk-php": "~2.8.24", + "doctrine/cache": "1.*", + "silverstripe/crontask": "*" + }, + "type": "silverstripe-module", + "extra": { + "installer-name": "silverstripe-dynamodb" + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Stig Lindqvist", + "email": "stig@silverstripe.com" + } + ], + "description": "SilverStripe DynamoDB integration.", + "keywords": [ + "aws", + "dynamodb", + "silverstripe" + ], + "time": "2015-11-23 20:48:17" }, { "name": "silverstripe/framework", @@ -280,16 +641,16 @@ }, { "name": "silverstripe/toolbar", - "version": "4.1.0", + "version": "4.1.1", "source": { "type": "git", "url": "https://github.com/silverstripe/silverstripe-globaltoolbar.git", - "reference": "108fc37a26d5c96780a4c4c29a79dbcc79fb9c70" + "reference": "74111995b046d7fffc372ad26b05ee6dfd62604d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silverstripe/silverstripe-globaltoolbar/zipball/108fc37a26d5c96780a4c4c29a79dbcc79fb9c70", - "reference": "108fc37a26d5c96780a4c4c29a79dbcc79fb9c70", + "url": "https://api.github.com/repos/silverstripe/silverstripe-globaltoolbar/zipball/74111995b046d7fffc372ad26b05ee6dfd62604d", + "reference": "74111995b046d7fffc372ad26b05ee6dfd62604d", "shasum": "" }, "require": { @@ -317,27 +678,87 @@ "silverstripe" ], "support": { - "source": "https://github.com/silverstripe/silverstripe-globaltoolbar/tree/4.1.0", + "source": "https://github.com/silverstripe/silverstripe-globaltoolbar/tree/4.1.1", "issues": "https://github.com/silverstripe/silverstripe-globaltoolbar/issues" }, - "time": "2015-11-03 22:53:02" + "time": "2015-12-07 03:08:14" }, { - "name": "unclecheese/display-logic", - "version": "1.3.1", + "name": "symfony/event-dispatcher", + "version": "v2.8.2", "source": { "type": "git", - "url": "https://github.com/unclecheese/silverstripe-display-logic.git", - "reference": "6f8870aeddc56821d00cabdf6d9d9f040ae90c4c" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "ee278f7c851533e58ca307f66305ccb9188aceda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/unclecheese/silverstripe-display-logic/zipball/6f8870aeddc56821d00cabdf6d9d9f040ae90c4c", - "reference": "6f8870aeddc56821d00cabdf6d9d9f040ae90c4c", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ee278f7c851533e58ca307f66305ccb9188aceda", + "reference": "ee278f7c851533e58ca307f66305ccb9188aceda", "shasum": "" }, "require": { - "silverstripe/framework": "3.2.*" + "php": ">=5.3.9" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.0,>=2.0.5|~3.0.0", + "symfony/dependency-injection": "~2.6|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/stopwatch": "~2.3|~3.0.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com", + "time": "2016-01-13 10:28:07" + }, + { + "name": "unclecheese/display-logic", + "version": "1.3.2", + "source": { + "type": "git", + "url": "https://github.com/unclecheese/silverstripe-display-logic.git", + "reference": "43a2213c4748c3f56fc91842ab3a4a3b22caacf0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/unclecheese/silverstripe-display-logic/zipball/43a2213c4748c3f56fc91842ab3a4a3b22caacf0", + "reference": "43a2213c4748c3f56fc91842ab3a4a3b22caacf0", + "shasum": "" + }, + "require": { + "silverstripe/framework": "^3.2" }, "replace": { "silverstripe/display-logic": "*" @@ -364,7 +785,7 @@ "logic", "silverstripe" ], - "time": "2015-10-30 08:29:38" + "time": "2015-12-14 22:02:51" } ], "packages-dev": [ @@ -732,16 +1153,16 @@ }, { "name": "symfony/yaml", - "version": "v2.7.6", + "version": "v2.8.2", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "eca9019c88fbe250164affd107bc8057771f3f4d" + "reference": "34c8a4b51e751e7ea869b8262f883d008a2b81b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/eca9019c88fbe250164affd107bc8057771f3f4d", - "reference": "eca9019c88fbe250164affd107bc8057771f3f4d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/34c8a4b51e751e7ea869b8262f883d008a2b81b8", + "reference": "34c8a4b51e751e7ea869b8262f883d008a2b81b8", "shasum": "" }, "require": { @@ -750,13 +1171,16 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "2.8-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\Yaml\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -774,7 +1198,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2015-10-11 09:39:48" + "time": "2016-01-13 10:28:07" } ], "aliases": [], diff --git a/robots.txt b/robots.txt index 1385938..8966131 100644 --- a/robots.txt +++ b/robots.txt @@ -1,4 +1,5 @@ User-agent: * -Disallow: /src/ -Disallow: /en/4.0/ -Disallow: /en/3.3/ +Disallow: /admin +Disallow: /assets/src +Disallow: /assets/.lucene-index +Crawl-Delay: 4 \ No newline at end of file