Skip to content
Browse files

RELEASE_1_4_0 => v1.4.0 commit

  • Loading branch information...
1 parent 551c824 commit f3ac67c75a04dc88aa27a718026cc5ddc52c1d0c @pylebecq pylebecq committed Oct 9, 2010
Showing with 19,815 additions and 0 deletions.
  1. +138 −0 CHANGELOG
  2. +47 −0 COPYRIGHT
  3. +19 −0 LICENSE
  4. +20 −0 README
  5. +47 −0 data/bin/changelog.php
  6. +106 −0 data/bin/check_configuration.php
  7. +27 −0 data/bin/create_sandbox.sh
  8. +105 −0 data/bin/release.php
  9. +35 −0 data/bin/sandbox_installer.php
  10. +100 −0 data/bin/sandbox_skeleton/README
  11. +37 −0 data/bin/symfony
  12. +39 −0 data/bin/symfony.bat
  13. +353 −0 data/web/sf/sf_admin/css/main.css
  14. BIN data/web/sf/sf_admin/images/add.png
  15. BIN data/web/sf/sf_admin/images/cancel.png
  16. BIN data/web/sf/sf_admin/images/default_icon.png
  17. BIN data/web/sf/sf_admin/images/delete.png
  18. BIN data/web/sf/sf_admin/images/edit.png
  19. BIN data/web/sf/sf_admin/images/error.png
  20. BIN data/web/sf/sf_admin/images/filter.png
  21. BIN data/web/sf/sf_admin/images/first.png
  22. BIN data/web/sf/sf_admin/images/last.png
  23. BIN data/web/sf/sf_admin/images/list.png
  24. BIN data/web/sf/sf_admin/images/next.png
  25. BIN data/web/sf/sf_admin/images/ok.png
  26. BIN data/web/sf/sf_admin/images/previous.png
  27. BIN data/web/sf/sf_admin/images/reset.png
  28. BIN data/web/sf/sf_admin/images/save.png
  29. BIN data/web/sf/sf_admin/images/tick.png
  30. +87 −0 data/web/sf/sf_admin/js/collapse.js
  31. +37 −0 data/web/sf/sf_admin/js/double_list.js
  32. +4 −0 data/web/sf/sf_default/css/ie.css
  33. +86 −0 data/web/sf/sf_default/css/pngfix.htc
  34. +182 −0 data/web/sf/sf_default/css/screen.css
  35. BIN data/web/sf/sf_default/images/bg_body.jpg
  36. BIN data/web/sf/sf_default/images/bg_sfTAlert.jpg
  37. BIN data/web/sf/sf_default/images/bg_sfTLock.jpg
  38. BIN data/web/sf/sf_default/images/bg_sfTMessage.jpg
  39. BIN data/web/sf/sf_default/images/icons/cancel48.png
  40. BIN data/web/sf/sf_default/images/icons/colour16.png
  41. BIN data/web/sf/sf_default/images/icons/db16.png
  42. BIN data/web/sf/sf_default/images/icons/disabled48.png
  43. BIN data/web/sf/sf_default/images/icons/edit16.png
  44. BIN data/web/sf/sf_default/images/icons/folder16.png
  45. BIN data/web/sf/sf_default/images/icons/linkOut16.png
  46. BIN data/web/sf/sf_default/images/icons/lock48.png
  47. BIN data/web/sf/sf_default/images/icons/ok48.png
  48. BIN data/web/sf/sf_default/images/icons/reload16.png
  49. BIN data/web/sf/sf_default/images/icons/tools48.png
  50. BIN data/web/sf/sf_default/images/sfTLogo.png
  51. BIN data/web/sf/sf_default/images/trans.gif
  52. BIN data/web/sf/sf_web_debug/images/close.png
  53. BIN data/web/sf/sf_web_debug/images/config.png
  54. BIN data/web/sf/sf_web_debug/images/database.png
  55. BIN data/web/sf/sf_web_debug/images/email.png
  56. BIN data/web/sf/sf_web_debug/images/error.png
  57. BIN data/web/sf/sf_web_debug/images/info.png
  58. BIN data/web/sf/sf_web_debug/images/log.png
  59. BIN data/web/sf/sf_web_debug/images/memory.png
  60. BIN data/web/sf/sf_web_debug/images/reload.png
  61. BIN data/web/sf/sf_web_debug/images/sf.png
  62. BIN data/web/sf/sf_web_debug/images/time.png
  63. BIN data/web/sf/sf_web_debug/images/toggle.gif
  64. BIN data/web/sf/sf_web_debug/images/view.png
  65. BIN data/web/sf/sf_web_debug/images/warning.png
  66. +523 −0 lib/action/sfAction.class.php
  67. +119 −0 lib/action/sfActionStack.class.php
  68. +94 −0 lib/action/sfActionStackEntry.class.php
  69. +62 −0 lib/action/sfActions.class.php
  70. +378 −0 lib/action/sfComponent.class.php
  71. +30 −0 lib/action/sfComponents.class.php
  72. +130 −0 lib/addon/sfData.class.php
  73. +587 −0 lib/addon/sfPager.class.php
  74. +229 −0 lib/autoload/sfAutoload.class.php
  75. +132 −0 lib/autoload/sfAutoloadAgain.class.php
  76. +520 −0 lib/autoload/sfCoreAutoload.class.php
  77. +340 −0 lib/autoload/sfSimpleAutoload.class.php
  78. +167 −0 lib/cache/sfAPCCache.class.php
  79. +231 −0 lib/cache/sfCache.class.php
  80. +168 −0 lib/cache/sfEAcceleratorCache.class.php
  81. +335 −0 lib/cache/sfFileCache.class.php
  82. +112 −0 lib/cache/sfFunctionCache.class.php
  83. +283 −0 lib/cache/sfMemcacheCache.class.php
  84. +84 −0 lib/cache/sfNoCache.class.php
  85. +228 −0 lib/cache/sfSQLiteCache.class.php
  86. +212 −0 lib/cache/sfXCacheCache.class.php
  87. +35 −0 lib/command/cli.php
  88. +128 −0 lib/command/sfAnsiColorFormatter.class.php
  89. +650 −0 lib/command/sfCommandApplication.class.php
  90. +134 −0 lib/command/sfCommandArgument.class.php
  91. +179 −0 lib/command/sfCommandArgumentSet.class.php
  92. +21 −0 lib/command/sfCommandArgumentsException.class.php
  93. +21 −0 lib/command/sfCommandException.class.php
  94. +61 −0 lib/command/sfCommandLogger.class.php
  95. +381 −0 lib/command/sfCommandManager.class.php
  96. +186 −0 lib/command/sfCommandOption.class.php
  97. +176 −0 lib/command/sfCommandOptionSet.class.php
  98. +111 −0 lib/command/sfFormatter.class.php
  99. +153 −0 lib/command/sfSymfonyCommandApplication.class.php
  100. +24 −0 lib/config/config/autoload.yml
  101. +45 −0 lib/config/config/config_handlers.yml
  102. +39 −0 lib/config/config/core_compile.yml
  103. +114 −0 lib/config/config/factories.yml
  104. +24 −0 lib/config/config/filters.yml
  105. +3 −0 lib/config/config/module.yml
  106. 0 lib/config/config/security.yml
  107. +58 −0 lib/config/config/settings.yml
  108. +1 −0 lib/config/config/view.yml
  109. +697 −0 lib/config/sfApplicationConfiguration.class.php
  110. +188 −0 lib/config/sfAutoloadConfigHandler.class.php
  111. +114 −0 lib/config/sfCacheConfigHandler.class.php
  112. +116 −0 lib/config/sfCompileConfigHandler.class.php
  113. +92 −0 lib/config/sfConfig.class.php
  114. +393 −0 lib/config/sfConfigCache.class.php
  115. +133 −0 lib/config/sfConfigHandler.class.php
  116. +149 −0 lib/config/sfDatabaseConfigHandler.class.php
  117. +148 −0 lib/config/sfDefineEnvironmentConfigHandler.class.php
  118. +256 −0 lib/config/sfFactoryConfigHandler.class.php
  119. +207 −0 lib/config/sfFilterConfigHandler.class.php
  120. +92 −0 lib/config/sfGeneratorConfigHandler.class.php
  121. +232 −0 lib/config/sfPluginConfiguration.class.php
  122. +28 −0 lib/config/sfPluginConfigurationGeneric.class.php
  123. +634 −0 lib/config/sfProjectConfiguration.class.php
  124. +113 −0 lib/config/sfRootConfigHandler.class.php
  125. +116 −0 lib/config/sfRoutingConfigHandler.class.php
  126. +58 −0 lib/config/sfSecurityConfigHandler.class.php
  127. +48 −0 lib/config/sfSimpleYamlConfigHandler.class.php
  128. +344 −0 lib/config/sfViewConfigHandler.class.php
  129. +158 −0 lib/config/sfYamlConfigHandler.class.php
  130. +68 −0 lib/controller/default/actions/actions.class.php
  131. +25 −0 lib/controller/default/templates/defaultLayout.php
  132. +19 −0 lib/controller/default/templates/disabledSuccess.php
  133. +27 −0 lib/controller/default/templates/error404Success.php
  134. +25 −0 lib/controller/default/templates/indexSuccess.php
  135. +21 −0 lib/controller/default/templates/loginSuccess.php
  136. +23 −0 lib/controller/default/templates/moduleSuccess.php
  137. +23 −0 lib/controller/default/templates/secureSuccess.php
  138. +504 −0 lib/controller/sfController.class.php
  139. +59 −0 lib/controller/sfFrontWebController.class.php
  140. +198 −0 lib/controller/sfWebController.class.php
  141. +170 −0 lib/database/sfDatabase.class.php
  142. +137 −0 lib/database/sfDatabaseManager.class.php
  143. +124 −0 lib/database/sfMySQLDatabase.class.php
  144. +57 −0 lib/database/sfMySQLiDatabase.class.php
  145. +114 −0 lib/database/sfPDODatabase.class.php
  146. +82 −0 lib/database/sfPostgreSQLDatabase.class.php
  147. +261 −0 lib/debug/sfDebug.class.php
  148. +84 −0 lib/debug/sfTimer.class.php
  149. +61 −0 lib/debug/sfTimerManager.class.php
  150. +801 −0 lib/debug/sfWebDebug.class.php
  151. +203 −0 lib/debug/sfWebDebugPanel.class.php
  152. +49 −0 lib/debug/sfWebDebugPanelCache.class.php
  153. +81 −0 lib/debug/sfWebDebugPanelConfig.class.php
  154. +125 −0 lib/debug/sfWebDebugPanelLogs.class.php
  155. +105 −0 lib/debug/sfWebDebugPanelMailer.class.php
  156. +35 −0 lib/debug/sfWebDebugPanelMemory.class.php
  157. +33 −0 lib/debug/sfWebDebugPanelSymfonyVersion.class.php
  158. +90 −0 lib/debug/sfWebDebugPanelTimer.class.php
  159. +366 −0 lib/debug/sfWebDebugPanelView.class.php
  160. +243 −0 lib/escaper/sfOutputEscaper.class.php
  161. +164 −0 lib/escaper/sfOutputEscaperArrayDecorator.class.php
  162. +54 −0 lib/escaper/sfOutputEscaperGetterDecorator.class.php
  163. +159 −0 lib/escaper/sfOutputEscaperIteratorDecorator.class.php
  164. +112 −0 lib/escaper/sfOutputEscaperObjectDecorator.class.php
  165. +78 −0 lib/escaper/sfOutputEscaperSafe.class.php
  166. +162 −0 lib/event_dispatcher/sfEvent.php
  167. +159 −0 lib/event_dispatcher/sfEventDispatcher.php
  168. +1 −0 lib/exception/data/error.atom.php
  169. +3 −0 lib/exception/data/error.css.php
  170. +49 −0 lib/exception/data/error.html.php
  171. +3 −0 lib/exception/data/error.js.php
  172. +5 −0 lib/exception/data/error.json.php
  173. +1 −0 lib/exception/data/error.rdf.php
  174. +8 −0 lib/exception/data/error.txt.php
  175. +2 −0 lib/exception/data/error.xml.php
  176. +1 −0 lib/exception/data/exception.atom.php
  177. +10 −0 lib/exception/data/exception.css.php
  178. +64 −0 lib/exception/data/exception.html.php
  179. +10 −0 lib/exception/data/exception.js.php
  180. +10 −0 lib/exception/data/exception.json.php
  181. +1 −0 lib/exception/data/exception.rdf.php
  182. +11 −0 lib/exception/data/exception.txt.php
  183. +12 −0 lib/exception/data/exception.xml.php
  184. +44 −0 lib/exception/data/unavailable.php
  185. +23 −0 lib/exception/sfCacheException.class.php
  186. +24 −0 lib/exception/sfConfigurationException.class.php
  187. +24 −0 lib/exception/sfControllerException.class.php
  188. +23 −0 lib/exception/sfDatabaseException.class.php
  189. +52 −0 lib/exception/sfError404Exception.class.php
  190. +446 −0 lib/exception/sfException.class.php
  191. +24 −0 lib/exception/sfFactoryException.class.php
  192. +23 −0 lib/exception/sfFileException.class.php
  193. +24 −0 lib/exception/sfFilterException.class.php
  194. +24 −0 lib/exception/sfForwardException.class.php
  195. +23 −0 lib/exception/sfInitializationException.class.php
  196. +24 −0 lib/exception/sfParseException.class.php
  197. +23 −0 lib/exception/sfRenderException.class.php
  198. +23 −0 lib/exception/sfSecurityException.class.php
  199. +27 −0 lib/exception/sfStopException.class.php
  200. +24 −0 lib/exception/sfStorageException.class.php
  201. +23 −0 lib/exception/sfViewException.class.php
  202. +108 −0 lib/filter/sfBasicSecurityFilter.class.php
  203. +224 −0 lib/filter/sfCacheFilter.class.php
Sorry, we could not display the entire diff because too many files (2,519) changed.
View
138 CHANGELOG
@@ -0,0 +1,138 @@
+12/01/09: Version 1.4.0
+-----------------------
+
+ * [24637] fixed inconsistent case in doctrine crud (closes #7698, refs #5640)
+ * [24634] Catching Doctrine validation exceptions so you don't get internal server errors in admin generator if you use Doctrine validation
+ * [24632] Fixes issue with magic setters/getters for a field with a underscore and number at the end (closes #6860)
+ * [24628] updated date validator to ignore date_format option if tainted value is an array (closes #7753, #7702)
+ * [24625] updated doctrine:dql task to render NULL for null values when in table mode (closes #7680)
+ * [24624] fixed warning with sfValidatorDate.class when a non string option was passed to it (fixes #7753, #7702)
+ * [24622] allowed `__()` and `sfI18N->__()` and `sfMessageFormat->format()` to take an object with a `__toString()` method. Test case for 1.2,1.3 and 1.4 (fixes #7559, #6763, refs #2161)
+ * [24621] fixed column name used when generating propel route collections (refs #5572, #6773)
+ * [24620] fixed module option being ignored in *:generate-admin task (closes #5572, #6773)
+ * [24619] fixed incorrect array access of lastModified header which only was an array pre 1.0. This was effectively preventing 304 Not Modified response from working correctly. Fixed phpdoc referring to array as return type of getHttpHeader() (fixes #6633, #7539)
+ * [24618] Removing sfDoctrineRecordListener class which is not used (closes #7265)
+ * [24617] Fixes issue with base model classes not having tokens replaced from properties.ini (closes #7656)
+ * [24615] updated page and action caching to consider GET parameters (closes #4708)
+ * [24607] no longer adding duplicate entries in sfMemcacheCache.class metadata cache when key is already existing (fixes #7602)
+ * [24606] Fixing sfDoctrineRecord::__call() so proper exception is thrown (closes #7212)
+ * [24605] refactored sfWidgetFormDate.class to allow easier extension and tests, as well as being easier to read (closes #7699)
+ * [24604] Fix issue where local is an array (closes #6820)
+ * [24598] Fixes issue with attributes in databases.yml (closes #6884)
+ * [24597] fixed casting of propel i18n objects to string (closes #7709)
+ * [24593] removed old lazy_cache_key setting from generator (closes #7720)
+ * [24591] added requirements to DELETE action of sfObjectRouteCollection.class.php (fixes #7634)
+ * [24590] fixed obtaining error from mysqli session storage (fixes #7737)
+ * [24537] decoupled relation name from form field name when calling embedRelation(), allowed embedding of type "one" relations
+ * [24532] updated spanish and basque translation of admin generator (fixes #7735 thanks Javier.Eguiluz)
+ * [24531] fixed sfPager::count() implementation (it is more useful to return the total number of items, closes #7651)
+ * [24524] fixed regression when cleaning a date string that includes a timezone in new `DateTime` implementation, added appropriate regression test to 1.2
+ * [24514] improved vary cache generation. added unit test (refs #7605)
+ * [24513] fixed vary cache key again (fixes #7605)
+ * [24511] correctly closing output buffering in case of exceptions while requiring a file in sfPHPView (fixes #7596)
+ * [24498] fixed getObjectsForParameters() failing on second invocation on sfDoctrineRoute.class.php (fixes #7716)
+ * [24496] added missing where condition on culture to SfPropelBehaviorI18n (fixes #7713)
+ * [24470] added a project:validate task that validates the project against the deprecated stuff
+ * [24396] reset the mb_internal_encoding in case it was changed in text helpers. added basic unit test for that (fixes #7641)
+ * [24395] updated upgrade task to specify a class for the common filter since it's no longer specified in the core (closes #7156, #7536)
+ * [24390] removed call to deprecated sh() method
+ * [24341] fixed fatal error in doctrine build/drop db tasks when no application exists (closes #7686, refs #7633)
+ * [24339] optimized unshift of i18n filter to doctrine tables. big performance boost if you're working with many doctrine i18n records from the same table (closes #7392)
+ * [24331] updated log:rotate to explicitly sort files by name and use filesystem methods when possible (closes #7683)
+
+11/23/09: Version 1.4.0 RC2
+---------------------------
+
+ * [24295] removed deprecated `sfDoctrinePlugin_doctrine_lib_path` setting - use `sf_doctrine_dir` instead
+ * [24294] Fixing issue with generators not respecting options of the parent who generated it (fixes #7639)
+ * [24293] added missing API for getting Parameters of an sfRoute instance (closes #7632)
+ * [24292] reverted the removal of the common filter when upgrading due to backward compatibility concerns. filter is still omitted for new projects (closes #7678)
+ * [24288] fixed defaulting to first app when running a task with a project configuration already set (closes #7633, refs #5835)
+ * [24281] added back the common filter to ease upgrading existing website (the default is still the same though) (refs #7657)
+ * [24279] added missing PHPDoc (closes #7672)
+ * [24278] added getOptions method to sfForm (closes #7613)
+ * [24277] made exception messages more helpful (closes #7627)
+ * [24275] added references to the reference guide in generated configuration files
+ * [24271] updated token replacement in doctrine-generated model classes to disallow recursion into directories
+ * [24270] updated token replacement in doctrine-generated model classes to allow recursion into plugin and base directories
+ * [24265] fixed doc comments (closes #7664, #7666)
+ * [24217] fixed embedded forms in functional tests (closes #7653)
+ * [24215] fixed missing actions_base_class for Doctrine Generator (closes #7655, refs #5995)
+ * [24150] enhanced doctrine:dql task to accept query parameters and render how long a query took
+ * [24148] fixed forcing of colors in test:coverage task
+ * [24137] fixed invalid id attributes generation in sfWidgetForm (closes #6980, based on a patch from Leon.van.der.Ree)
+ * [24134] reverted yaml style (closes #7624)
+ * [24132] fixed sfWidgetFormInputFileEditable (closes #7621)
+ * [24130] fixed typo in propel I18N behavior
+ * [24094] updated czech admin generator translation (fixes #7610, thanks to Pavel.Campr)
+ * [24093] updated greek admin generator translation (fixes #7608, thanks to Zapantis Antreas)
+ * [24092] updated polish admin generator translation (fixes #7608, thanks to m)
+ * [24091] updated italian admin generator translation (fixes #7606, thanks to alexodus71)
+
+11/16/09: Version 1.4.0 RC1
+---------------------------
+
+ * [24071] added script to help with formatting Subversion log for CHANGELOG
+ * [24069] cleaned up template paths shown in WDT view panel
+ * [24068] added check for generate*Filename method on form object to handle naming uploading files (closes #7350)
+ * [24063] cleaned up generator templates (closes #7600)
+ * [24062] fixed issue with autoloading not correctly sorted in windows (fixes #7226)
+ * [24061] removed unneeded calls to setDefaultParameters by checking for a dirty flag.
+ * [24060] added database arguments to doctrine create and drop database tasks (closes #7351)
+ * [24056] reverted r23117 (refs #7363, closes #7456)
+ * [24051] made all generated base classes abstract (closes #7301)
+ * [24048] switched lime to new version 1.0.8
+ * [24045] renamed listCredentials() as getCredentials(), removed the former in 1.4 (closes #7443)
+ * [24043] added generic accessor for security.yml values
+ * [24037] deprecated loading of helpers from the include path
+ * [24036] fixed a bug with the / route that was made visible by r24026 (fixes #7597)
+ * [24033] removed unnecessary call to sfConfig
+ * [24032] moved project:optimize cache from project to application configuration
+ * [24027] changed components dependencies to use the 1.0 branch
+ * [24021] added short circuit checking for a static route prefix. Improves performance with many routes by up to 25%
+ * [24020] added loadHelpers to project:optimize (closes #4556)
+ * [24018] fixed command.* events not firing from generate:app task
+ * [24015] Static texts in native widgets are translated by default (fixes #7590, patch by FabienP)
+ * [24013] updated functional test bootstrap so fixture cache is always cleared before the context is created
+ * [24012] Options within optgroups are translated correctly, optgroup labels are translated as well (fixes #7591)
+ * [24008] ported r23909 to Propel 1.4 I18N behavior
+ * [24007] removed unnecessary calls to sfConfig, cleaned up shortening of paths used in exception messages
+ * [23995] reduced size of serialized sfRoute slightly due to the fact that defaultParameters will be always reset and compiled will be always true
+ * [23994] Moved get/setParent() from sfWidgetFormSchema to sfWidgetForm. The choices of all select/choice widgets are now translated by default (fixes #5886)
+ * [23993] removed obsolete setDefaultParameter code in routing
+ * [23984] not setting status header for servers in cgi-sapi mode (fixes #3191)
+ * [23977] fixed image saving for Doctrine
+ * [23968] fixed i18n functional test not using deprectated redirect checking
+ * [23967] corrected problem with validation when i18n is used. i18n should not be taken into account when the object is new (fixes #7486, patch by Dejan.Spasic)
+ * [23954] updated phpdoc to reflect the actual possibilities for redirect parameters (refs #6082)
+ * [23953] made empty redirect check faster and type tolerant (fixes #6082)
+ * [23951] fixed file validator on certain mac os configurations (closes #6641)
+ * [23950] fixed doctrine modules when dealing with multiple primary keys (closes #7571)
+ * [23948] improved searching for symfony script file on windows (closes #6914)
+ * [23930] fixed defaults for singular and plural name for generate crud tasks in case none are specified (refs #5640)
+ * [23927] added a new option to change the generator class for forms and filters (closes #5014, patch from joostdj)
+ * [23925] fixed sfMemcacheCache delete() operation (closes #6220)
+ * [23924] fixed defaults for singular and plural name for generate crud tasks in case none are specified (refs #5640)
+ * [23923] changed the routing handler cache file so that it consumes less memory
+ * [23919] made crud generator respect singular and plural name (fixes #5640, patch by Dejan.Spasic)
+ * [23917] Added sfFormField and sfFormFieldSchema to the safe classes in sfView. Widgets are always expected to be escaped by the developers! (fixes #7560, patch by nicolas)
+ * [23915] added unit test for sfSessionStorage (closes #7585, patch by Rubino)
+ * [23911] improved sfApplicationConfiguration getXYZDir caching when not using the project optimize task, by lazy caching (fixes #6413)
+ * [23910] changed CLI tests to use the new admin generator instead of the old one
+ * [23909] updated SfObjectBuilder so that Propel objects do not query the I18N table when they are new (fixes #7513, patch by joostdj)
+ * [23907] improved sfApplicationConfiguration getXYZDir caching when not using the project optimize task, by lazy caching (fixes #6413)
+ * [23901] The last exception is reset on every new page call in functional tests (fixes #6342, patch by Stefan.Koopmanschap)
+ * [23900] Default fields are created for %%variables%% in the title of the edit, list and new action, if possible. Closes #7578
+ * [23897] updated sfProtoculous javascript externals
+ * [23896] switched phing external to 2.3.3 tag instead of its revision in the trunk
+ * [23892] added Countable and Iterator interface to DOM CSS selector
+ * [23888] reporting error on empty url for sfWebController#redirect (fixes #6082, patch by ThijsFeryn )
+ * [23887] fixed Phing autoloading in upgrade task (fixes #7577, patch by Stefan.Koopmanschap)
+ * [23882] sfI18N now correctly rejects invalid dates when using a culture that has the dot as separator, and correctly respects am/pm markers (fixes #7582)
+ * [23852] fixed assumption in propel upgrade (closes #7577)
+ * [23849] removed reference to removed file (closes #7563)
+ * [23822] fixed loading of application-less plugin autoloader when multiple plugins are enabled
+ * [23810] set svn:eol-style property to native and svn:keywords property to Id on all .php files
+ * [23799] removed need for runtime insertion of lowercase module name into *_module_config.yml.php files. The module name is already inserted correctly by the sfDefineEnvironmentConfigHandler. This improves especially performance for projects with some more entries in module/config/module.yml (fixes #2105)
+ * [23763] added some configuration to the project:send-emails task (number of messages and time limit)
+ * [23762] updated Swift Mailer to the latest 4.1 version
View
47 COPYRIGHT
@@ -0,0 +1,47 @@
+COPYRIGHTS
+==========
+
+symfony
+-------
+
+symfony is originally based on Mojavi3 by Sean Kerr <sean@code-box.org>
+
+Url: http://www.symfony-project.com/
+Copyright: Fabien Potencier
+License: MIT - see LICENSE file
+
+International Components for Unicode
+------------------------------------
+
+symfony contains a port of parts of the International Components for Unicode library
+
+Url: http://www.ibm.com/software/globalization/icu/, http://icu.sourceforge.net/
+Copyright: 1995-2006 International Business Machines Corporation and others.
+License: ICU License - see licenses/LICENSE.ICU file
+
+Prado i18n classes
+------------------
+
+symfony contains the Prado i18n core classes
+
+Url: http://www.pradosoft.com/
+Copyright: 2004-2006, The PRADO Group
+License: BSD - see licenses/LICENSE.prado file
+
+lime
+----
+
+symfony uses the lime software
+
+Url: http://www.symfony-project.com/
+Copyright: Fabien Potencier
+License: MIT - see licenses/LICENSE.lime file
+
+SwiftMailer
+-----------
+
+symfony uses the SwiftMailer library
+
+Url: http://www.swiftmailer.org/
+Copyright: Chris Corbyn
+License: LGPL - see licenses/LICENSE.swiftmailer
View
19 LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2004-2010 Fabien Potencier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
View
20 README
@@ -0,0 +1,20 @@
+Symfony is a complete framework designed to optimize the development of web applications by way of several key features.
+For starters, it separates a web application's business rules, server logic, and presentation views.
+It contains numerous tools and classes aimed at shortening the development time of a complex web application.
+Additionally, it automates common tasks so that the developer can focus entirely on the specifics of an application.
+The end result of these advantages means there is no need to reinvent the wheel every time a new web application is built!
+
+Symfony was written entirely in PHP 5.
+It has been thoroughly tested in various real-world projects, and is actually in use for high-demand e-business websites.
+It is compatible with most of the available databases engines, including MySQL, PostgreSQL, Oracle, and Microsoft SQL Server.
+It runs on *nix and Windows platforms.
+
+LICENSE
+-------
+
+see LICENSE file
+
+INSTALLATION
+------------
+
+see doc/03-Running-Symfony.txt
View
47 data/bin/changelog.php
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ * This file is part of the symfony package.
+ * (c) Fabien Potencier <fabien.potencier@symfony-project.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Outputs formatted Subversion log entries.
+ *
+ * Usage: php data/bin/changelog.php -r12345:67890 /branches/1.3
+ *
+ * @package symfony
+ * @author Fabien Potencier <fabien.potencier@symfony-project.com>
+ * @version SVN: $Id: changelog.php 24071 2009-11-17 07:36:21Z Kris.Wallsmith $
+ */
+require_once dirname(__FILE__).'/../../lib/task/sfFilesystem.class.php';
+
+if (!isset($argv[1]))
+{
+ throw new Exception('You must provide a revision range (-r123:456)');
+}
+
+if (!isset($argv[2]))
+{
+ throw new Exception('You must provide a repository path (/branches/1.3)');
+}
+
+$filesystem = new sfFilesystem();
+
+list($out, $err) = $filesystem->execute('svn info --xml');
+$info = new SimpleXMLElement($out);
+
+list($out, $err) = $filesystem->execute(vsprintf('svn log %s --xml %s', array_map('escapeshellarg', array(
+ $argv[1],
+ (string) $info->entry->repository->root.$argv[2],
+))));
+$log = new SimpleXMLElement($out);
+
+foreach ($log->logentry as $logentry)
+{
+ echo sprintf(' * [%d] %s', $logentry['revision'], trim(preg_replace('/\s*\[[\d\., ]+\]\s*/', '', (string) $logentry->msg)));
+ echo PHP_EOL;
+}
View
106 data/bin/check_configuration.php
@@ -0,0 +1,106 @@
+<?php
+
+function is_cli()
+{
+ return !isset($_SERVER['HTTP_HOST']);
+}
+
+/**
+ * Checks a configuration.
+ */
+function check($boolean, $message, $help = '', $fatal = false)
+{
+ echo $boolean ? " OK " : sprintf("[[%s]] ", $fatal ? ' ERROR ' : 'WARNING');
+ echo sprintf("$message%s\n", $boolean ? '' : ': FAILED');
+
+ if (!$boolean)
+ {
+ echo " *** $help ***\n";
+ if ($fatal)
+ {
+ die("You must fix this problem before resuming the check.\n");
+ }
+ }
+}
+
+/**
+ * Gets the php.ini path used by the current PHP interpretor.
+ *
+ * @return string the php.ini path
+ */
+function get_ini_path()
+{
+ if ($path = get_cfg_var('cfg_file_path'))
+ {
+ return $path;
+ }
+
+ return 'WARNING: not using a php.ini file';
+}
+
+if (!is_cli())
+{
+ echo '<html><body><pre>';
+}
+
+echo "********************************\n";
+echo "* *\n";
+echo "* symfony requirements check *\n";
+echo "* *\n";
+echo "********************************\n\n";
+
+echo sprintf("php.ini used by PHP: %s\n\n", get_ini_path());
+
+if (is_cli())
+{
+ echo "** WARNING **\n";
+ echo "* The PHP CLI can use a different php.ini file\n";
+ echo "* than the one used with your web server.\n";
+ if ('\\' == DIRECTORY_SEPARATOR)
+ {
+ echo "* (especially on the Windows platform)\n";
+ }
+ echo "* If this is the case, please launch this\n";
+ echo "* utility from your web server.\n";
+ echo "** WARNING **\n";
+}
+
+// mandatory
+echo "\n** Mandatory requirements **\n\n";
+check(version_compare(phpversion(), '5.2.4', '>='), sprintf('PHP version is at least 5.2.4 (%s)', phpversion()), 'Current version is '.phpversion(), true);
+
+// warnings
+echo "\n** Optional checks **\n\n";
+check(class_exists('PDO'), 'PDO is installed', 'Install PDO (mandatory for Propel and Doctrine)', false);
+if (class_exists('PDO'))
+{
+ $drivers = PDO::getAvailableDrivers();
+ check(count($drivers), 'PDO has some drivers installed: '.implode(', ', $drivers), 'Install PDO drivers (mandatory for Propel and Doctrine)');
+}
+check(class_exists('DomDocument'), 'PHP-XML module is installed', 'Install the php-xml module (required by Propel)', false);
+check(class_exists('XSLTProcessor'), 'XSL module is installed', 'Install the XSL module (recommended for Propel)', false);
+check(function_exists('token_get_all'), 'The token_get_all() function is available', 'Install token_get_all() function (highly recommended)', false);
+check(function_exists('mb_strlen'), 'The mb_strlen() function is available', 'Install mb_strlen() function', false);
+check(function_exists('iconv'), 'The iconv() function is available', 'Install iconv() function', false);
+check(function_exists('utf8_decode'), 'The utf8_decode() is available', 'Install utf8_decode() function', false);
+
+$accelerator =
+ (function_exists('apc_store') && ini_get('apc.enabled'))
+ ||
+ function_exists('eaccelerator_put') && ini_get('eaccelerator.enable')
+ ||
+ function_exists('xcache_set')
+;
+check($accelerator, 'A PHP accelerator is installed', 'Install a PHP accelerator like APC (highly recommended)', false);
+
+check(!ini_get('short_open_tag'), 'php.ini has short_open_tag set to off', 'Set it to off in php.ini', false);
+check(!ini_get('magic_quotes_gpc'), 'php.ini has magic_quotes_gpc set to off', 'Set it to off in php.ini', false);
+check(!ini_get('register_globals'), 'php.ini has register_globals set to off', 'Set it to off in php.ini', false);
+check(!ini_get('session.auto_start'), 'php.ini has session.auto_start set to off', 'Set it to off in php.ini', false);
+
+check(version_compare(phpversion(), '5.2.9', '!='), 'PHP version is not 5.2.9', 'PHP 5.2.9 broke array_unique() and sfToolkit::arrayDeepMerge(). Use 5.2.10 instead [Ticket #6211]', false);
+
+if (!is_cli())
+{
+ echo '</pre></body></html>';
+}
View
27 data/bin/create_sandbox.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# Creates a sandbox for this symfony version
+
+echo ">>> sandbox initialization"
+DIR=`pwd`/`dirname $0`
+SANDBOX_NAME=sf_sandbox
+PHP=php
+
+rm -rf /tmp/${SANDBOX_NAME}
+mkdir /tmp/${SANDBOX_NAME}
+cd /tmp/${SANDBOX_NAME}
+
+echo ">>> embed symfony"
+mkdir -p lib/vendor/symfony
+cp -R ${DIR}/../../* lib/vendor/symfony
+
+echo ">>> create a new project and a new app"
+${PHP} lib/vendor/symfony/data/bin/symfony generate:project ${SANDBOX_NAME} --installer=${DIR}/sandbox_installer.php
+
+echo ">>> create archives"
+cd ..
+tar --exclude=".svn" -zcpf ${DIR}/../../${SANDBOX_NAME}.tgz ${SANDBOX_NAME}
+zip -rq ${DIR}/../../${SANDBOX_NAME}.zip ${SANDBOX_NAME} -x \*/\*.svn/\*
+
+echo ">>> cleanup"
+rm -rf ${SANDBOX_NAME}
View
105 data/bin/release.php
@@ -0,0 +1,105 @@
+<?php
+
+/*
+ * This file is part of the symfony package.
+ * (c) 2004-2007 Fabien Potencier <fabien.potencier@symfony-project.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Release script.
+ *
+ * Usage: php data/bin/release.php 1.3.0 stable
+ *
+ * @package symfony
+ * @author Fabien Potencier <fabien.potencier@symfony-project.com>
+ * @version SVN: $Id: release.php 24079 2009-11-17 07:59:41Z Kris.Wallsmith $
+ */
+require_once(dirname(__FILE__).'/../../lib/exception/sfException.class.php');
+require_once(dirname(__FILE__).'/../../lib/task/sfFilesystem.class.php');
+require_once(dirname(__FILE__).'/../../lib/util/sfFinder.class.php');
+require_once(dirname(__FILE__).'/../../lib/vendor/lime/lime.php');
+
+if (!isset($argv[1]))
+{
+ throw new Exception('You must provide version prefix.');
+}
+
+if (!isset($argv[2]))
+{
+ throw new Exception('You must provide stability status (alpha/beta/stable).');
+}
+
+$stability = $argv[2];
+
+$filesystem = new sfFilesystem();
+
+if (($stability == 'beta' || $stability == 'alpha') && count(explode('.', $argv[1])) < 2)
+{
+ $version_prefix = $argv[1];
+
+ list($result) = $filesystem->execute('svn status -u '.getcwd());
+ if (preg_match('/Status against revision\:\s+(\d+)\s*$/im', $result, $match))
+ {
+ $version = $match[1];
+ }
+
+ if (!isset($version))
+ {
+ throw new Exception('Unable to find last SVN revision.');
+ }
+
+ // make a PEAR compatible version
+ $version = $version_prefix.'.'.$version;
+}
+else
+{
+ $version = $argv[1];
+}
+
+print sprintf("Releasing symfony version \"%s\".\n", $version);
+
+// tests
+list($result) = $filesystem->execute('php data/bin/symfony symfony:test');
+
+if (0 != $result)
+{
+ throw new Exception('Some tests failed. Release process aborted!');
+}
+
+if (is_file('package.xml'))
+{
+ $filesystem->remove(getcwd().DIRECTORY_SEPARATOR.'package.xml');
+}
+
+$filesystem->copy(getcwd().'/package.xml.tmpl', getcwd().'/package.xml');
+
+// add class files
+$finder = sfFinder::type('file')->relative();
+$xml_classes = '';
+$dirs = array('lib' => 'php', 'data' => 'data');
+foreach ($dirs as $dir => $role)
+{
+ $class_files = $finder->in($dir);
+ foreach ($class_files as $file)
+ {
+ $xml_classes .= '<file role="'.$role.'" baseinstalldir="symfony" install-as="'.$file.'" name="'.$dir.'/'.$file.'" />'."\n";
+ }
+}
+
+// replace tokens
+$filesystem->replaceTokens(getcwd().DIRECTORY_SEPARATOR.'package.xml', '##', '##', array(
+ 'SYMFONY_VERSION' => $version,
+ 'CURRENT_DATE' => date('Y-m-d'),
+ 'CLASS_FILES' => $xml_classes,
+ 'STABILITY' => $stability,
+));
+
+list($results) = $filesystem->execute('pear package');
+echo $results;
+
+$filesystem->remove(getcwd().DIRECTORY_SEPARATOR.'package.xml');
+
+exit(0);
View
35 data/bin/sandbox_installer.php
@@ -0,0 +1,35 @@
+<?php
+
+$this->installDir(dirname(__FILE__).'/sandbox_skeleton');
+
+$this->logSection('install', 'add symfony CLI for Windows users');
+$this->getFilesystem()->copy(dirname(__FILE__).'/symfony.bat', sfConfig::get('sf_root_dir').'/symfony.bat');
+
+$this->logSection('install', 'add LICENSE');
+$this->getFilesystem()->copy(dirname(__FILE__).'/../../LICENSE', sfConfig::get('sf_root_dir').'/LICENSE');
+
+$this->logSection('install', 'default to sqlite');
+$this->runTask('configure:database', sprintf("'sqlite:%s/sandbox.db'", sfConfig::get('sf_data_dir')));
+
+$this->logSection('install', 'create an application');
+$this->runTask('generate:app', 'frontend');
+
+$this->logSection('install', 'publish assets');
+$this->runTask('plugin:publish-assets');
+
+$this->logSection('install', 'fix sqlite database permissions');
+touch(sfConfig::get('sf_data_dir').'/sandbox.db');
+chmod(sfConfig::get('sf_data_dir'), 0777);
+chmod(sfConfig::get('sf_data_dir').'/sandbox.db', 0777);
+
+$this->logSection('install', 'add an empty file in empty directories');
+$seen = array();
+foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator(sfConfig::get('sf_root_dir')), RecursiveIteratorIterator::CHILD_FIRST) as $path => $item)
+{
+ if ($item->isDir() && !$item->isLink() && !isset($seen[$path]))
+ {
+ touch($item->getRealPath().'/.sf');
+ }
+
+ $seen[$item->getPath()] = true;
+}
View
100 data/bin/sandbox_skeleton/README
@@ -0,0 +1,100 @@
+symfony sandbox
+===============
+
+Thank you for downloading the symfony sandbox. This pre-configured symfony
+project will allow you to experiment with the symfony framework immediately,
+without any installation or configuration.
+
+Quick start
+-----------
+
+The sandbox project will work "out of the box", provided that you extract the
+.tgz archive under the root web directory configured for your server (usually
+`web/`).
+
+After unpacking the archive, test the sandbox by requesting the following URL:
+
+ http://localhost/sf_sandbox/web/
+
+You should see a congratulations page.
+
+Command line
+------------
+
+If you are in the `sf_sandbox/` directory, you can use the command line to do
+usual site management operations. For instance, to clear the cache, type:
+
+ $ ./symfony.sh clear-cache (*nix)
+ symfony clear-cache (Windows)
+
+To discover all the available actions of the symfony command line, type:
+
+ $ ./symfony.sh -T (*nix)
+ symfony -T (Windows)
+
+Environments
+------------
+
+The sandbox already contains one application called `frontend`, accessible
+through two environments:
+
+- the default environment is the `prod` one, in which the application is fast
+ but outputs few error messages
+- the `dev` environment is slower but gives access to a lot of information
+ about the current request
+
+To access the `frontend` application in the `dev` environment, type:
+
+ http://localhost/sf_sandbox/web/frontend_dev.php/
+ (don't forget the final /)
+
+Modules
+-------
+
+To create a new module `mymodule`, just type in the command line:
+
+ $ ./symfony.sh init-module frontend mymodule (*nix)
+ symfony init-module frontend mymodule (Windows)
+
+To access it, call:
+
+ http://localhost/sf_sandbox/web/mymodule
+
+If, at this point, you meet an error, this means that your web server doesn't
+support mod_rewrite. Delete the `.htaccess` file from the `web/` directory and
+call instead:
+
+ http://localhost/sf_sandbox/web/index.php/mymodule
+
+What's in the sandbox?
+----------------------
+
+The sandbox is an empty symfony project where all the required libraries
+(symfony, pake, creole, propel and phing) are already included (in the
+`sf_sandbox/lib/` directory). It is configured to work without any
+configuration if unpacked under the web root, but you can install it anywhere
+in your disk. In this case,
+
+- delete the 22nd line of the `sf_sandbox/apps/frontend/config/settings.yml`
+ (`relative_url_root: /sf_sandbox/web/`)
+- create a virtual host in your web server configuration to address the
+ `sf_sandbox/web` directory
+
+The sandbox is intended for you to practice with symfony in a local computer,
+not really to develop complex applications that may end up on the web.
+However, the version of symfony shipped with the sandbox is fully functional
+and equivalent to the one you can install via PEAR.
+
+Beware that the sandbox is not upgradeable.
+
+Happy symfony!
+--------------
+
+Feel free to experiment and try the various techniques described in the
+www.symfony-project.com website. All the tutorials can also work in a sandbox.
+But in the long run, if you decide to go on with symfony, we advise you to
+switch to a PEAR installation, which will guarantee you with the possibility
+to use the latest patches and enhancements.
+
+The symfony team
+http://www.symfony-project.com/
View
37 data/bin/symfony
@@ -0,0 +1,37 @@
+#!/usr/bin/env php
+<?php
+
+/*
+ * This file is part of the symfony package.
+ * (c) Fabien Potencier <fabien.potencier@symfony-project.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+// project exists?
+if (file_exists('config/ProjectConfiguration.class.php'))
+{
+ require_once('config/ProjectConfiguration.class.php');
+ $dir = sfCoreAutoload::getInstance()->getBaseDir();
+}
+else
+{
+ if (is_readable(dirname(__FILE__).'/../../lib/autoload/sfCoreAutoload.class.php'))
+ {
+ // SVN
+ $dir = realpath(dirname(__FILE__).'/../../lib');
+ }
+ else
+ {
+ // PEAR
+ $dir = '@PEAR-DIR@/symfony';
+
+ if (!is_dir($dir))
+ {
+ throw new Exception('Unable to find symfony libraries');
+ }
+ }
+}
+
+include($dir.'/command/cli.php');
View
39 data/bin/symfony.bat
@@ -0,0 +1,39 @@
+@echo off
+
+rem *************************************************************
+rem ** symfony CLI for Windows based systems (based on phing.bat)
+rem *************************************************************
+
+rem This script will do the following:
+rem - check for PHP_COMMAND env, if found, use it.
+rem - if not found detect php, if found use it, otherwise err and terminate
+
+if "%OS%"=="Windows_NT" @setlocal
+
+rem %~dp0 is expanded pathname of the current script under NT
+set SCRIPT_DIR=%~dp0
+
+goto init
+
+:init
+
+if "%PHP_COMMAND%" == "" goto no_phpcommand
+
+if "%SCRIPT_DIR%" == "" (
+ %PHP_COMMAND% "symfony" %*
+) else (
+ %PHP_COMMAND% "%SCRIPT_DIR%\symfony" %*
+)
+goto cleanup
+
+:no_phpcommand
+rem echo ------------------------------------------------------------------------
+rem echo WARNING: Set environment var PHP_COMMAND to the location of your php.exe
+rem echo executable (e.g. C:\PHP\php.exe). (assuming php.exe on PATH)
+rem echo ------------------------------------------------------------------------
+set PHP_COMMAND=php.exe
+goto init
+
+:cleanup
+if "%OS%"=="Windows_NT" @endlocal
+rem pause
View
353 data/web/sf/sf_admin/css/main.css
@@ -0,0 +1,353 @@
+#sf_admin_container ul, #sf_admin_container ol, #sf_admin_container li, #sf_admin_container h1, #sf_admin_container h2, #sf_admin_container h3, #sf_admin_container h4, #sf_admin_container h5, #sf_admin_container h6, #sf_admin_container pre, #sf_admin_container form, #sf_admin_container body, #sf_admin_container html, #sf_admin_container p, #sf_admin_container blockquote, #sf_admin_container fieldset, #sf_admin_container input { margin: 0; padding: 0; }
+#sf_admin_container a img,:link img,:visited img { border: none; }
+
+#sf_admin_container a:link, #sf_admin_container a:visited
+{
+ text-decoration: none;
+}
+
+#sf_admin_container a:hover
+{
+ text-decoration: underline;
+}
+
+#sf_admin_container td
+{
+ margin: 0;
+ padding: 20px;
+ font-family: Arial, sans-serif;
+ font-size: 11px;
+ background-color: #fff;
+}
+
+#sf_admin_container p
+{
+ margin-bottom: 5px;
+}
+
+#sf_admin_container #sf_admin_bar
+{
+ margin-top: 8px;
+ position: absolute;
+ right: 20px;
+ width: 250px;
+}
+
+#sf_admin_container #sf_admin_content
+{
+ margin-right: 270px;
+}
+
+#sf_admin_container h1
+{
+ margin: 8px 0;
+ padding: 3px;
+ padding-left: 0px;
+ color: #555;
+ font-family: "Trebuchet MS", Arial, Verdana, sans-serif;
+ font-size: 25px;
+}
+
+#sf_admin_container fieldset h2
+{
+ padding: 3px;
+ color: #333;
+ background-color: #ccf;
+ font-size: 11px;
+}
+
+#sf_admin_container input, #sf_admin_container textarea, #sf_admin_container select
+{
+ padding: 3px;
+ font-family: Arial, sans-serif;
+ font-size: 11px;
+ border: 1px solid #ddd;
+ vertical-align:middle;
+}
+
+#sf_admin_container label
+{
+ display: block;
+ padding: 0 1em 3px 0;
+ float: left;
+ text-align: left;
+ width: 8em;
+ color: #666;
+ font-weight: normal !important;
+}
+
+#sf_admin_container label.required
+{
+ color: #333 !important;
+ font-weight: bold !important;
+}
+
+#sf_admin_container .sf_admin_filters input[type="checkbox"] + label
+{
+ display: inline;
+ float: none;
+}
+
+#sf_admin_container .save-ok
+{
+ margin-bottom: 10px;
+ border: 1px solid #73B65A;
+}
+
+#sf_admin_container .save-ok h2
+{
+ margin: 0 !important;
+ padding: 5px 20px 5px 25px;
+ font-size: 11px;
+ color: #fff;
+ background: #73B65A url(../images/ok.png) no-repeat 5px 2px;
+}
+
+#sf_admin_container .form-row
+{
+ clear: both;
+ padding: 10px;
+ border-bottom: 1px solid #ddd;
+}
+
+#sf_admin_container .form-row .content
+{
+ padding-left: 9em;
+}
+
+#sf_admin_container .form-errors
+{
+ margin-bottom: 10px;
+ border: 1px solid #f33;
+ background-color: #ffc;
+}
+
+#sf_admin_container .form-errors h2
+{
+ padding: 5px 20px 5px 25px;
+ font-size: 11px;
+ color: #fff;
+ background: #f33 url(../images/error.png) no-repeat 5px 2px;
+}
+
+#sf_admin_container .form-errors dl
+{
+ padding: 5px;
+}
+
+#sf_admin_container .form-errors dt
+{
+ font-weight: bold;
+ float: left;
+ padding-right: 5px;
+}
+
+#sf_admin_container .form-errors dd
+{
+ margin: 0;
+}
+
+#sf_admin_container .form-error
+{
+ color: #f33;
+}
+
+#sf_admin_container .form-error input, #sf_admin_container .form-error select, #sf_admin_container .form-error textarea
+{
+ border: 1px solid #f33;
+}
+
+#sf_admin_container fieldset
+{
+ margin-bottom: 3px;
+ border: 1px solid #ddd;
+ border-bottom: 0px;
+ background-color: #fff;
+}
+
+#sf_admin_container fieldset.collapsed * { display:none; }
+#sf_admin_container fieldset.collapsed h2, #sf_admin_container fieldset.collapsed { display:block !important; }
+#sf_admin_container fieldset.collapsed .collapse-toggle { display: inline !important; }
+#sf_admin_container fieldset.collapse h2 a.collapse-toggle { color:#ffc; }
+#sf_admin_container fieldset.collapse h2 a.collapse-toggle:hover { text-decoration:underline; }
+
+#sf_admin_container .float-left
+{
+ float: left;
+}
+
+#sf_admin_container .float-right
+{
+ float: right;
+}
+
+#sf_admin_container ul.sf_admin_td_actions
+{
+ list-style-type: none;
+}
+
+#sf_admin_container ul.sf_admin_td_actions li
+{
+ list-style-type: none;
+ display: inline;
+}
+
+#sf_admin_container ul.sf_admin_actions
+{
+ margin: 10px 0;
+ list-style-type: none;
+ text-align: right;
+}
+
+#sf_admin_container ul.sf_admin_actions a
+{
+ color: #333;
+}
+
+#sf_admin_container ul.sf_admin_actions li
+{
+ list-style-type: none;
+ display: inline;
+}
+
+#sf_admin_container ul.sf_admin_actions input
+{
+ padding: 3px 3px 3px 20px;
+ color: #333;
+ font-size: 11px;
+ font-family: Arial, sans-serif;
+ border: 0px;
+ border-right: 4px solid #999;
+ background-color: #ffc;
+ cursor: hand;
+ cursor: pointer;
+}
+
+#sf_admin_container .sf_admin_action_create
+{
+ background: url(../images/add.png) no-repeat 3px 2px;
+ border-right: 4px solid #73B65A !important;
+}
+
+#sf_admin_container .sf_admin_action_save
+{
+ background: url(../images/save.png) no-repeat 3px 2px;
+ border-right: 4px solid #73B65A !important;
+}
+
+#sf_admin_container .sf_admin_action_save_and_add
+{
+ background: url(../images/save.png) no-repeat 3px 2px;
+ border-right: 4px solid #73B65A !important;
+}
+
+#sf_admin_container .sf_admin_action_save_and_list
+{
+ background: url(../images/save.png) no-repeat 3px 2px;
+ border-right: 4px solid #73B65A !important;
+}
+
+#sf_admin_container .sf_admin_action_delete
+{
+ background: url(../images/delete.png) no-repeat 3px 2px;
+ border-right: 4px solid #E75C58 !important;
+}
+
+#sf_admin_container .sf_admin_action_cancel
+{
+ background: url(../images/cancel.png) no-repeat 3px 2px;
+ border-right: 4px solid #E75C58 !important;
+}
+
+#sf_admin_container .sf_admin_action_filter
+{
+ background: url(../images/filter.png) no-repeat 3px 2px;
+ border-right: 4px solid #66f !important;
+}
+
+#sf_admin_container .sf_admin_action_reset_filter
+{
+ background: url(../images/reset.png) no-repeat 3px 2px;
+ border-right: 4px solid #E75C58 !important;
+}
+
+#sf_admin_container .sf_admin_action_list
+{
+ background: url(../images/list.png) no-repeat 3px 2px;
+ border-right: 4px solid #66f !important;
+}
+
+#sf_admin_container .sf_admin_default_action
+{
+ background-color: #fc6 !important;
+ font-weight: bold !important;
+}
+
+#sf_admin_container .sf_admin_list
+{
+ width: 100%;
+ border: 1px solid #ddd;
+ border-bottom: 0px;
+ border-right: 0px;
+}
+
+#sf_admin_container .sf_admin_list th
+{
+ padding: 2px;
+ background-color: #ccf;
+ text-align: left;
+}
+
+#sf_admin_container .sf_admin_list th a
+{
+ color: #333;
+}
+
+#sf_admin_container .sf_admin_list td
+{
+ padding: 3px;
+ border-bottom: 1px solid #ddd;
+ border-right: 1px solid #ddd;
+}
+
+#sf_admin_container .sf_admin_filters li
+{
+ list-style-type: none;
+}
+
+#sf_admin_container .sf_admin_row_0 td
+{
+
+}
+
+#sf_admin_container .sf_admin_row_1 td
+{
+ background-color: #eef;
+}
+
+#sf_admin_container .sf_admin_edit_help
+{
+ color: #aaa;
+}
+
+#sf_admin_container .mceEditor td
+{
+ padding: 0px;
+}
+
+#sf_admin_container select.sf_admin_multiple, #sf_admin_container select.sf_admin_multiple-selected
+{
+ width: 12em;
+}
+
+#sf_admin_container ul.sf_admin_checklist li
+{
+ list-style: none;
+ line-height: 1.5em;
+}
+
+#sf_admin_container ul.sf_admin_checklist li label
+{
+ display: inline;
+ float: none;
+}
View
BIN data/web/sf/sf_admin/images/add.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_admin/images/cancel.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_admin/images/default_icon.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_admin/images/delete.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_admin/images/edit.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_admin/images/error.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_admin/images/filter.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_admin/images/first.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_admin/images/last.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_admin/images/list.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_admin/images/next.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_admin/images/ok.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_admin/images/previous.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_admin/images/reset.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_admin/images/save.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_admin/images/tick.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
87 data/web/sf/sf_admin/js/collapse.js
@@ -0,0 +1,87 @@
+// django javascript file
+
+// Finds all fieldsets with class="collapse", collapses them, and gives each
+// one a "show" link that uncollapses it. The "show" link becomes a "hide"
+// link when the fieldset is visible.
+
+function findForm(node) {
+ // returns the node of the form containing the given node
+ if (node.tagName.toLowerCase() != 'form') {
+ return findForm(node.parentNode);
+ }
+ return node;
+}
+
+var CollapsedFieldsets = {
+ collapse_re: /\bcollapse\b/, // Class of fieldsets that should be dealt with.
+ collapsed_re: /\bcollapsed\b/, // Class that fieldsets get when they're hidden.
+ collapsed_class: 'collapsed',
+ init: function() {
+ var fieldsets = document.getElementsByTagName('fieldset');
+ var collapsed_seen = false;
+ for (var i = 0, fs; fs = fieldsets[i]; i++) {
+ // Collapse this fieldset if it has the correct class, and if it
+ // doesn't have any errors. (Collapsing shouldn't apply in the case
+ // of error messages.)
+ if (fs.className.match(CollapsedFieldsets.collapse_re) && !CollapsedFieldsets.fieldset_has_errors(fs)) {
+ collapsed_seen = true;
+ // Give it an additional class, used by CSS to hide it.
+ fs.className += ' ' + CollapsedFieldsets.collapsed_class;
+ // (<a id="fieldsetcollapser3" class="collapse-toggle" href="#">show</a>)
+ var collapse_link = document.createElement('a');
+ collapse_link.className = 'collapse-toggle';
+ collapse_link.id = 'fieldsetcollapser' + i;
+ collapse_link.onclick = new Function('CollapsedFieldsets.show('+i+'); return false;');
+ collapse_link.href = '#';
+ collapse_link.innerHTML = 'show';
+ var h2 = fs.getElementsByTagName('h2')[0];
+ h2.appendChild(document.createTextNode(' ['));
+ h2.appendChild(collapse_link);
+ h2.appendChild(document.createTextNode(']'));
+ }
+ }
+ if (collapsed_seen) {
+ // Expand all collapsed fieldsets when form is submitted.
+ Event.observe(findForm(document.getElementsByTagName('fieldset')[0]), 'submit', function() { CollapsedFieldsets.uncollapse_all(); }, false);
+ }
+ },
+ fieldset_has_errors: function(fs) {
+ // Returns true if any fields in the fieldset have validation errors.
+ var divs = fs.getElementsByTagName('div');
+ for (var i=0; i<divs.length; i++) {
+ if (divs[i].className.match(/\bform-error\b/)) {
+ return true;
+ }
+ }
+ return false;
+ },
+ show: function(fieldset_index) {
+ var fs = document.getElementsByTagName('fieldset')[fieldset_index];
+ // Remove the class name that causes the "display: none".
+ fs.className = fs.className.replace(CollapsedFieldsets.collapsed_re, '');
+ // Toggle the "show" link to a "hide" link
+ var collapse_link = document.getElementById('fieldsetcollapser' + fieldset_index);
+ collapse_link.onclick = new Function('CollapsedFieldsets.hide('+fieldset_index+'); return false;');
+ collapse_link.innerHTML = 'hide';
+ },
+ hide: function(fieldset_index) {
+ var fs = document.getElementsByTagName('fieldset')[fieldset_index];
+ // Add the class name that causes the "display: none".
+ fs.className += ' ' + CollapsedFieldsets.collapsed_class;
+ // Toggle the "hide" link to a "show" link
+ var collapse_link = document.getElementById('fieldsetcollapser' + fieldset_index);
+ collapse_link.onclick = new Function('CollapsedFieldsets.show('+fieldset_index+'); return false;');
+ collapse_link.innerHTML = 'show';
+ },
+
+ uncollapse_all: function() {
+ var fieldsets = document.getElementsByTagName('fieldset');
+ for (var i=0; i<fieldsets.length; i++) {
+ if (fieldsets[i].className.match(CollapsedFieldsets.collapsed_re)) {
+ CollapsedFieldsets.show(i);
+ }
+ }
+ }
+}
+
+Event.observe(window, 'load', CollapsedFieldsets.init, false);
View
37 data/web/sf/sf_admin/js/double_list.js
@@ -0,0 +1,37 @@
+
+function double_list_move(srcId, destId)
+{
+ var src=document.getElementById(srcId);
+ var dest=document.getElementById(destId);
+ for (var i = 0; i < src.options.length; i++)
+ {
+ if (src.options[i].selected)
+ {
+ dest.options[dest.length] = new Option(src.options[i].text, src.options[i].value);
+ src.options[i] = null;
+ --i;
+ }
+ }
+}
+
+function double_list_submit()
+{
+ var form = document.getElementById('sf_admin_edit_form');
+ var element;
+
+ // find multiple selects with name beginning 'associated_' and select all their options
+ for (var i = 0; i < form.elements.length; i++)
+ {
+ element = form.elements[i];
+ if (element.type == 'select-multiple')
+ {
+ if (element.className == 'sf_admin_multiple-selected')
+ {
+ for (var j = 0; j < element.options.length; j++)
+ {
+ element.options[j].selected = true;
+ }
+ }
+ }
+ }
+}
View
4 data/web/sf/sf_default/css/ie.css
@@ -0,0 +1,4 @@
+img
+{
+ behavior: url("/sf/sf_default/css/pngfix.htc");
+}
View
86 data/web/sf/sf_default/css/pngfix.htc
@@ -0,0 +1,86 @@
+<public:component lightWeight="true">
+<public:attach event="onpropertychange" onevent="propertyChanged()" />
+<public:attach event="onbeforeprint" onevent="beforePrint()" for="window"/>
+<public:attach event="onafterprint" onevent="afterPrint()" for="window"/>
+<script>
+
+/*
+ * PNG Behavior
+ *
+ * This script was created by Erik Arvidsson (http://webfx.eae.net/contact.html#erik)
+ * for WebFX (http://webfx.eae.net)
+ * Copyright 2002-2004
+ *
+ * For usage see license at http://webfx.eae.net/license.html
+ *
+ * Version: 1.02
+ * Created: 2001-??-?? First working version
+ * Updated: 2002-03-28 Fixed issue when starting with a non png image and
+ * switching between non png images
+ * 2003-01-06 Fixed RegExp to correctly work with IE 5.0x
+ * 2004-05-09 When printing revert to original
+ *
+ */
+
+var supported = /MSIE ((5\.5)|[6789])/.test(navigator.userAgent) &&
+ navigator.platform == "Win32";
+
+var realSrc;
+var blankSrc = "/sf/sf_default/images/trans.gif";
+var isPrinting = false;
+
+if (supported) fixImage();
+
+function propertyChanged() {
+ if (!supported || isPrinting) return;
+
+ var pName = event.propertyName;
+ if (pName != "src") return;
+ // if not set to blank
+ if (!new RegExp(blankSrc).test(src))
+ fixImage();
+};
+
+function fixImage() {
+ // get src
+ var src = element.src;
+
+ // check for real change
+ if (src == realSrc && /\.png$/i.test(src)) {
+ element.src = blankSrc;
+ return;
+ }
+
+ if ( ! new RegExp(blankSrc).test(src)) {
+ // backup old src
+ realSrc = src;
+ }
+
+ // test for png
+ if (/\.png$/i.test(realSrc)) {
+ // set blank image
+ element.src = blankSrc;
+ // set filter
+ element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft." +
+ "AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
+ }
+ else {
+ // remove filter
+ element.runtimeStyle.filter = "";
+ }
+}
+
+function beforePrint() {
+ isPrinting = true;
+ element.src = realSrc;
+ element.runtimeStyle.filter = "";
+ realSrc = null;
+}
+
+function afterPrint() {
+ isPrinting = false;
+ fixImage();
+}
+
+</script>
+</public:component>
View
182 data/web/sf/sf_default/css/screen.css
@@ -0,0 +1,182 @@
+body
+{
+ font-family: "Trebuchet MS", Geneva, Arial, Helvetica, sans-serif;
+ margin: 0;
+ padding: 0;
+ font-size: 80%;
+ background-image: url(../images/bg_body.jpg);
+ background-repeat: repeat-x;
+ background-color: #E4D7C5;
+ color: #81571F;
+ text-align: center;
+}
+
+img
+{
+ border: none;
+}
+
+a
+{
+ color: #81571F;
+ text-decoration: underline;
+}
+
+a:hover
+{
+ color: #CC0000;
+ text-decoration: none;
+}
+
+code
+{
+ font-size:120%;
+}
+
+.sfTContainer
+{
+ position: relative;
+ text-align: left;
+ width: 515px;
+ margin: 0 auto;
+ padding: 0;
+ margin-top: 115px;
+}
+
+.sfTMessageContainer
+{
+ padding: 5px;
+ margin-top: 25px;
+ float: left;
+ width: 515px;
+}
+
+.sfTMessage
+{
+ background-image: url(../images/bg_sfTMessage.jpg);
+ background-repeat: repeat-x;
+ background-color: #E8DDCF;
+ border: 1px solid #FFFFFF;
+ border-bottom-color: #C2AB8C;
+ border-right-color: #C2AB8C;
+}
+
+.sfTAlert
+{
+ background-image: url(../images/bg_sfTAlert.jpg);
+ background-repeat: repeat-x;
+ background-color: #F8E1D1;
+ border: 1px solid #FFFFFF;
+ border-bottom-color: #F0B17C;
+ border-right-color: #F0B17C;
+}
+
+.sfTLock
+{
+ background-image: url(../images/bg_sfTLock.jpg);
+ background-repeat: repeat-x;
+ background-color: #DEE8F2;
+ border: 1px solid #FFFFFF;
+ border-bottom-color: #B1C4EC;
+ border-right-color: #B1C4EC;
+}
+
+.sfTMessageContainer .sfTMessageWrap
+{
+ float: left;
+ width: 440px;
+}
+
+.sfTMessageContainer .sfTMessageWrap h1
+{
+ color: #503512;
+ font-weight: normal;
+ font-size: 165%;
+ padding: 0;
+ margin: 0;
+ line-height: 100%;
+ padding-top: 5px;
+}
+
+.sfTMessageContainer .sfTMessageWrap h5
+{
+ font-weight: normal;
+ font-size: 100%;
+ padding: 0;
+ margin: 0;
+}
+
+.sfTMessageContainer img.sfTMessageIcon
+{
+ width: 48px;
+ height: 48px;
+ float: left;
+ margin-right: 12px;
+ margin-left: 5px;
+}
+
+.sfTMessageInfo
+{
+ margin: 0;
+ padding: 0;
+ margin-top: 15px;
+ float: left;
+ width: 440px;
+}
+
+.sfTMessageInfo dt
+{
+ font-weight: bolder;
+ font-size: 115%;
+ margin: 5px 0;
+}
+
+.sfTMessageInfo dd
+{
+ margin: 0;
+ padding: 0;
+}
+
+.sfTIconList
+{
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+
+.sfTIconList li
+{
+ clear: left;
+ line-height: 170%;
+ padding-left: 20px;
+}
+
+.sfTIconList li.sfTDatabaseMessage
+{
+ background: url(../images/icons/db16.png) no-repeat top left;
+}
+
+.sfTIconList li.sfTColorMessage
+{
+ background: url(../images/icons/colour16.png) no-repeat top left;
+}
+
+.sfTIconList li.sfTLinkMessage
+{
+ background: url(../images/icons/linkOut16.png) no-repeat top left;
+}
+
+.sfTIconList li.sfTDirectoryMessage
+{
+ background: url(../images/icons/folder16.png) no-repeat top left;
+}
+
+.sfTIconList li.sfTEditMessage
+{
+ background: url(../images/icons/edit16.png) no-repeat top left;
+}
+
+.sfTIconList li.sfTReloadMessage
+{
+ background: url(../images/icons/reload16.png) no-repeat top left;
+}
View
BIN data/web/sf/sf_default/images/bg_body.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_default/images/bg_sfTAlert.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_default/images/bg_sfTLock.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_default/images/bg_sfTMessage.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_default/images/icons/cancel48.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_default/images/icons/colour16.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_default/images/icons/db16.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_default/images/icons/disabled48.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_default/images/icons/edit16.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN data/web/sf/sf_default/images/icons/folder16.png
Diff not rendered.
View
BIN data/web/sf/sf_default/images/icons/linkOut16.png
Diff not rendered.
View
BIN data/web/sf/sf_default/images/icons/lock48.png
Diff not rendered.
View
BIN data/web/sf/sf_default/images/icons/ok48.png
Diff not rendered.
View
BIN data/web/sf/sf_default/images/icons/reload16.png
Diff not rendered.
View
BIN data/web/sf/sf_default/images/icons/tools48.png
Diff not rendered.
View
BIN data/web/sf/sf_default/images/sfTLogo.png
Diff not rendered.
View
BIN data/web/sf/sf_default/images/trans.gif
Diff not rendered.
View
BIN data/web/sf/sf_web_debug/images/close.png
Diff not rendered.
View
BIN data/web/sf/sf_web_debug/images/config.png
Diff not rendered.
View
BIN data/web/sf/sf_web_debug/images/database.png
Diff not rendered.
View
BIN data/web/sf/sf_web_debug/images/email.png
Diff not rendered.
View
BIN data/web/sf/sf_web_debug/images/error.png
Diff not rendered.
View
BIN data/web/sf/sf_web_debug/images/info.png
Diff not rendered.
View
BIN data/web/sf/sf_web_debug/images/log.png
Diff not rendered.
View
BIN data/web/sf/sf_web_debug/images/memory.png
Diff not rendered.
View
BIN data/web/sf/sf_web_debug/images/reload.png
Diff not rendered.
View
BIN data/web/sf/sf_web_debug/images/sf.png
Diff not rendered.
View
BIN data/web/sf/sf_web_debug/images/time.png
Diff not rendered.
View
BIN data/web/sf/sf_web_debug/images/toggle.gif
Diff not rendered.
View
BIN data/web/sf/sf_web_debug/images/view.png
Diff not rendered.
View
BIN data/web/sf/sf_web_debug/images/warning.png
Diff not rendered.
View
523 lib/action/sfAction.class.php
@@ -0,0 +1,523 @@
+<?php
+
+/*
+ * This file is part of the symfony package.
+ * (c) 2004-2006 Fabien Potencier <fabien.potencier@symfony-project.com>
+ * (c) 2004-2006 Sean Kerr <sean@code-box.org>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * sfAction executes all the logic for the current request.
+ *
+ * @package symfony
+ * @subpackage action
+ * @author Fabien Potencier <fabien.potencier@symfony-project.com>
+ * @author Sean Kerr <sean@code-box.org>
+ * @version SVN: $Id: sfAction.class.php 24279 2009-11-23 15:21:18Z fabien $
+ */
+abstract class sfAction extends sfComponent
+{
+ protected
+ $security = array();
+
+ /**
+ * Initializes this action.
+ *
+ * @param sfContext $context The current application context.
+ * @param string $moduleName The module name.
+ * @param string $actionName The action name.
+ *
+ * @return bool true, if initialization completes successfully, otherwise false
+ */
+ public function initialize($context, $moduleName, $actionName)
+ {
+ parent::initialize($context, $moduleName, $actionName);
+
+ // include security configuration
+ if ($file = $context->getConfigCache()->checkConfig('modules/'.$this->getModuleName().'/config/security.yml', true))
+ {
+ require($file);
+ }
+ }
+
+ /**
+ * Executes an application defined process prior to execution of this sfAction object.
+ *
+ * By default, this method is empty.
+ */
+ public function preExecute()
+ {
+ }
+
+ /**
+ * Execute an application defined process immediately after execution of this sfAction object.
+ *
+ * By default, this method is empty.
+ */
+ public function postExecute()
+ {
+ }
+
+ /**
+ * Forwards current action to the default 404 error action.
+ *
+ * @param string $message Message of the generated exception
+ *
+ * @throws sfError404Exception
+ *
+ */
+ public function forward404($message = null)
+ {
+ throw new sfError404Exception($this->get404Message($message));
+ }
+
+ /**
+ * Forwards current action to the default 404 error action unless the specified condition is true.
+ *
+ * @param bool $condition A condition that evaluates to true or false
+ * @param string $message Message of the generated exception
+ *
+ * @throws sfError404Exception
+ */
+ public function forward404Unless($condition, $message = null)
+ {
+ if (!$condition)
+ {
+ throw new sfError404Exception($this->get404Message($message));
+ }
+ }
+
+ /**
+ * Forwards current action to the default 404 error action if the specified condition is true.
+ *
+ * @param bool $condition A condition that evaluates to true or false
+ * @param string $message Message of the generated exception
+ *
+ * @throws sfError404Exception
+ */
+ public function forward404If($condition, $message = null)
+ {
+ if ($condition)
+ {
+ throw new sfError404Exception($this->get404Message($message));
+ }
+ }
+
+ /**
+ * Redirects current action to the default 404 error action (with browser redirection).
+ *
+ * This method stops the current code flow.
+ */
+ public function redirect404()
+ {
+ return $this->redirect('/'.sfConfig::get('sf_error_404_module').'/'.sfConfig::get('sf_error_404_action'));
+ }
+
+ /**
+ * Forwards current action to a new one (without browser redirection).
+ *
+ * This method stops the action. So, no code is executed after a call to this method.
+ *
+ * @param string $module A module name
+ * @param string $action An action name
+ *
+ * @throws sfStopException
+ */
+ public function forward($module, $action)
+ {
+ if (sfConfig::get('sf_logging_enabled'))
+ {
+ $this->dispatcher->notify(new sfEvent($this, 'application.log', array(sprintf('Forward to action "%s/%s"', $module, $action))));
+ }
+
+ $this->getController()->forward($module, $action);
+
+ throw new sfStopException();
+ }
+
+ /**
+ * If the condition is true, forwards current action to a new one (without browser redirection).
+ *
+ * This method stops the action. So, no code is executed after a call to this method.
+ *
+ * @param bool $condition A condition that evaluates to true or false
+ * @param string $module A module name
+ * @param string $action An action name
+ *
+ * @throws sfStopException
+ */
+ public function forwardIf($condition, $module, $action)
+ {
+ if ($condition)
+ {
+ $this->forward($module, $action);
+ }
+ }
+
+ /**
+ * Unless the condition is true, forwards current action to a new one (without browser redirection).
+ *
+ * This method stops the action. So, no code is executed after a call to this method.
+ *
+ * @param bool $condition A condition that evaluates to true or false
+ * @param string $module A module name
+ * @param string $action An action name
+ *
+ * @throws sfStopException