GitHub/WoltLab/WCF.git
12 years agoName corrected
Luzifr [Mon, 9 Jan 2012 15:53:02 +0000 (16:53 +0100)]
Name corrected

12 years agoFixes 2 small bugs
Luzifr [Mon, 9 Jan 2012 15:29:57 +0000 (16:29 +0100)]
Fixes 2 small bugs

12 years agoFixes small bug
Luzifr [Mon, 9 Jan 2012 15:10:18 +0000 (16:10 +0100)]
Fixes small bug

12 years agoMerge pull request #372 from wbbaddons/fixObjectTypeDefinitionEditor_baseClass
Alexander Ebert [Sun, 8 Jan 2012 15:45:18 +0000 (07:45 -0800)]
Merge pull request #372 from wbbaddons/fixObjectTypeDefinitionEditor_baseClass

$baseClass in class ObjectTypeDefinitionEditor needs to be protected

12 years agoFixed the "public static %basClass" problem in other classes
RouL [Sun, 8 Jan 2012 14:48:47 +0000 (15:48 +0100)]
Fixed the "public static %basClass" problem in other classes

12 years ago$baseClass in class ObjectTypeDefinitionEditor needs to be protected
RouL [Sun, 8 Jan 2012 14:30:00 +0000 (15:30 +0100)]
$baseClass in class ObjectTypeDefinitionEditor needs to be protected

$baseClass in class ObjectTypeDefinitionEditor needs to be protected as
in DatabaseObjectDecorator. If not this can lead to the following error:
[08-Jan-2012 15:05:33] PHP Fatal error:  Access to undeclared static
property: wcf\data\object\type\definition\ObjectTypeDefinitionEditor::$baseClass
in /var/www/wcf/lib/data/DatabaseObjectDecorator.class.php on line 79

Tested on Debian Squeeze with PHP version 5.3.3-7+squeeze3

12 years agoMerge pull request #371 from wbbaddons/vaporizeCommas
Alexander Ebert [Sat, 7 Jan 2012 17:08:32 +0000 (09:08 -0800)]
Merge pull request #371 from wbbaddons/vaporizeCommas

Vaporize commas after the last element in an array or object

12 years agoVaporize commas after the last element in an array or object
Tim Düsterhus [Sat, 7 Jan 2012 16:58:37 +0000 (17:58 +0100)]
Vaporize commas after the last element in an array or object

12 years agoRemoves background icon
Luzifr [Fri, 6 Jan 2012 16:39:31 +0000 (17:39 +0100)]
Removes background icon

(the icon is now referenced as an image with function)

12 years agoRemoves label-CSS & adds label-icon
Luzifr [Fri, 6 Jan 2012 15:55:12 +0000 (16:55 +0100)]
Removes label-CSS & adds label-icon

12 years agoAdded some optimizations to balloon tooltips
Marcel Werk [Fri, 6 Jan 2012 13:53:27 +0000 (14:53 +0100)]
Added some optimizations to balloon tooltips

12 years agoTransitions fixed
Luzifr [Fri, 6 Jan 2012 13:20:49 +0000 (14:20 +0100)]
Transitions fixed

12 years agoAdded labels-CSS for debugging purpose
Alexander Ebert [Thu, 5 Jan 2012 22:43:19 +0000 (23:43 +0100)]
Added labels-CSS for debugging purpose

12 years agoMerge branch 'master' of github.com:WoltLab/WCF
Alexander Ebert [Thu, 5 Jan 2012 21:54:51 +0000 (22:54 +0100)]
Merge branch 'master' of github.com:WoltLab/WCF

12 years agoFixed dialog opacity being interrupted in WebKit
Alexander Ebert [Thu, 5 Jan 2012 21:54:29 +0000 (22:54 +0100)]
Fixed dialog opacity being interrupted in WebKit

Fixes #353

12 years agoSupport for sidebars (left & right)
Luzifr [Thu, 5 Jan 2012 19:09:58 +0000 (20:09 +0100)]
Support for sidebars (left & right)

12 years agoMissing icon
Luzifr [Thu, 5 Jan 2012 18:31:39 +0000 (19:31 +0100)]
Missing icon

12 years agoSearch & language variables
Luzifr [Thu, 5 Jan 2012 17:40:08 +0000 (18:40 +0100)]
Search & language variables

Part one of the search field styling;
Sorted some language variables alphabetically;
Added a search term placeholder variable (probably wrong here).

12 years agoFixed a PostgreSQL issue
Marcel Werk [Thu, 5 Jan 2012 16:59:07 +0000 (17:59 +0100)]
Fixed a PostgreSQL issue

12 years agoFixed a PostgreSQL issue
Marcel Werk [Thu, 5 Jan 2012 16:03:55 +0000 (17:03 +0100)]
Fixed a PostgreSQL issue

12 years agoMerge branch 'master' of github.com:WoltLab/WCF
Marcel Werk [Thu, 5 Jan 2012 15:47:09 +0000 (16:47 +0100)]
Merge branch 'master' of github.com:WoltLab/WCF

12 years agoFixed a PostgreSQL issue
Marcel Werk [Thu, 5 Jan 2012 15:46:57 +0000 (16:46 +0100)]
Fixed a PostgreSQL issue

12 years agoMerge pull request #365 from Gravatronics/bug/i18n/assignmentOfValueVariables
Alexander Ebert [Thu, 5 Jan 2012 12:53:50 +0000 (04:53 -0800)]
Merge pull request #365 from Gravatronics/bug/i18n/assignmentOfValueVariables

Adds possibility to disable I18nHandles's assignment of value variables

12 years agoWhite space correction
Matthias Schmidt [Thu, 5 Jan 2012 10:21:07 +0000 (11:21 +0100)]
White space correction

12 years agoAdds possibility to disable I18nHandles's assignment of value variables
Matthias Schmidt [Thu, 5 Jan 2012 10:19:52 +0000 (11:19 +0100)]
Adds possibility to disable I18nHandles's assignment of value variables

12 years agoRedirect to detailed package list within WCF ACP
Alexander Ebert [Wed, 4 Jan 2012 17:42:39 +0000 (18:42 +0100)]
Redirect to detailed package list within WCF ACP

Closes #361

12 years agoRemoved manual random seed initialization
Alexander Ebert [Wed, 4 Jan 2012 17:33:37 +0000 (18:33 +0100)]
Removed manual random seed initialization

Closes #286

12 years agoMerge pull request #362 from Gravatronics/bug/acp/UserListOptionSorting
Alexander Ebert [Wed, 4 Jan 2012 13:24:13 +0000 (05:24 -0800)]
Merge pull request #362 from Gravatronics/bug/acp/UserListOptionSorting

Fixes wrong table alias in UserListPage

12 years agoFixes wrong table alias in UserListPage
Matthias Schmidt [Wed, 4 Jan 2012 09:10:13 +0000 (10:10 +0100)]
Fixes wrong table alias in UserListPage

12 years agoMerge pull request #323 from Gravatronics/enhancement/ActionToggleButtonSelector
Alexander Ebert [Tue, 3 Jan 2012 18:13:39 +0000 (10:13 -0800)]
Merge pull request #323 from Gravatronics/enhancement/ActionToggleButtonSelector

Adds an own button selector for toggle actions

12 years agoMerge pull request #293 from wbbaddons/packageListPluginsTruncate
Alexander Ebert [Tue, 3 Jan 2012 18:12:14 +0000 (10:12 -0800)]
Merge pull request #293 from wbbaddons/packageListPluginsTruncate

Truncate at 150 instead of 300, the maximum length is 255 anyway

12 years agoMerge pull request #257 from Torben-Brodt/patch-1
Alexander Ebert [Tue, 3 Jan 2012 18:06:07 +0000 (10:06 -0800)]
Merge pull request #257 from Torben-Brodt/patch-1

20% performance improvement, since magic getters are very slow

12 years agoMerge pull request #250 from wbbaddons/systemExceptionFile
Alexander Ebert [Tue, 3 Jan 2012 18:05:08 +0000 (10:05 -0800)]
Merge pull request #250 from wbbaddons/systemExceptionFile

Adding possibility to show a user-defined page for the SystemException

12 years agoMerge branch 'master' of github.com:WoltLab/WCF
Alexander Ebert [Tue, 3 Jan 2012 18:01:29 +0000 (19:01 +0100)]
Merge branch 'master' of github.com:WoltLab/WCF

12 years agoForcing case-sensitive PIP names
Alexander Ebert [Tue, 3 Jan 2012 18:01:02 +0000 (19:01 +0100)]
Forcing case-sensitive PIP names

12 years agoMerge branch 'master' of github.com:WoltLab/WCF
Marcel Werk [Tue, 3 Jan 2012 17:59:15 +0000 (18:59 +0100)]
Merge branch 'master' of github.com:WoltLab/WCF

12 years agoFixed a PostgreSQL issue
Marcel Werk [Tue, 3 Jan 2012 17:59:00 +0000 (18:59 +0100)]
Fixed a PostgreSQL issue

12 years agoMerge branch 'master' of github.com:WoltLab/WCF
Alexander Ebert [Tue, 3 Jan 2012 16:00:33 +0000 (17:00 +0100)]
Merge branch 'master' of github.com:WoltLab/WCF

12 years agoAdded flexible template for i18n
Alexander Ebert [Tue, 3 Jan 2012 16:00:09 +0000 (17:00 +0100)]
Added flexible template for i18n

Credits go to @Gravatronics. Closes #318

12 years agoMerge branch 'master' of github.com:WoltLab/WCF
Marcel Werk [Mon, 2 Jan 2012 18:35:36 +0000 (19:35 +0100)]
Merge branch 'master' of github.com:WoltLab/WCF

12 years agoAdded fulltext index support for PostgreSQL
Marcel Werk [Mon, 2 Jan 2012 18:35:21 +0000 (19:35 +0100)]
Added fulltext index support for PostgreSQL

12 years agoMerge pull request #356 from Gravatronics/enhancement/js/excludedSearchValues
Alexander Ebert [Mon, 2 Jan 2012 15:57:42 +0000 (07:57 -0800)]
Merge pull request #356 from Gravatronics/enhancement/js/excludedSearchValues

Adds the possibility to exclude certain values from js search

12 years agoAdds the possibility to exclude certain values from search
Matthias Schmidt [Mon, 2 Jan 2012 15:43:12 +0000 (16:43 +0100)]
Adds the possibility to exclude certain values from search

12 years agoMerge pull request #326 from Gravatronics/enhancement/controllerlessRoutes
Alexander Ebert [Mon, 2 Jan 2012 13:58:56 +0000 (05:58 -0800)]
Merge pull request #326 from Gravatronics/enhancement/controllerlessRoutes

Allows controller-less routes

13 years agoMerge branch 'master' of github.com:WoltLab/WCF
Alexander Ebert [Sun, 1 Jan 2012 18:57:35 +0000 (19:57 +0100)]
Merge branch 'master' of github.com:WoltLab/WCF

13 years agoWCF.Search now supports a minimum input length
Alexander Ebert [Sun, 1 Jan 2012 18:37:32 +0000 (19:37 +0100)]
WCF.Search now supports a minimum input length

13 years agoAdded experimental styling of sub menu items
Marcel Werk [Sun, 1 Jan 2012 17:43:47 +0000 (18:43 +0100)]
Added experimental styling of sub menu items

13 years agoMerge pull request #344 from Gravatronics/bug/I18nHandler/validateValues
Alexander Ebert [Sun, 1 Jan 2012 02:41:59 +0000 (18:41 -0800)]
Merge pull request #344 from Gravatronics/bug/I18nHandler/validateValues

Fixes bug in I18nHandler::validateValues()

13 years agoMerge pull request #345 from wbbaddons/sessionLogAccessesFix
Alexander Ebert [Sun, 1 Jan 2012 02:41:32 +0000 (18:41 -0800)]
Merge pull request #345 from wbbaddons/sessionLogAccessesFix

actions -> accesses@\wcf\data\acp\session\log\ACPSessionLogList

13 years agoactions -> accesses@\wcf\data\acp\session\log\ACPSessionLogList
Tim Düsterhus [Sat, 31 Dec 2011 11:52:06 +0000 (12:52 +0100)]
actions -> accesses@\wcf\data\acp\session\log\ACPSessionLogList

13 years agoFixes bug in I18nHandler::validateValues()
Matthias Schmidt [Sat, 31 Dec 2011 12:14:29 +0000 (13:14 +0100)]
Fixes bug in I18nHandler::validateValues()

If a plain value is validated there are two errors possible:

1. The value has to be a I18n value, but isn't it.
2. The plain value is empty.

So, when checking, there need to be an `or` instead of an `and`.

13 years agoMerge branch 'master' of github.com:WoltLab/WCF
Alexander Ebert [Fri, 30 Dec 2011 02:44:24 +0000 (03:44 +0100)]
Merge branch 'master' of github.com:WoltLab/WCF

13 years agoFixed typo
Alexander Ebert [Fri, 30 Dec 2011 02:44:02 +0000 (03:44 +0100)]
Fixed typo

13 years agoMerge pull request #342 from Gravatronics/enhancement/AppHandlerDocFormat
Alexander Ebert [Thu, 29 Dec 2011 23:51:42 +0000 (15:51 -0800)]
Merge pull request #342 from Gravatronics/enhancement/AppHandlerDocFormat

Corrects indentation in ApplicationHandler class

13 years agoFixed jQuery's data() and WCF.Search
Alexander Ebert [Thu, 29 Dec 2011 18:04:25 +0000 (19:04 +0100)]
Fixed jQuery's data() and WCF.Search

Replaces #339

13 years agoCorrects indentations in ApplicationHandler class
Matthias Schmidt [Thu, 29 Dec 2011 17:38:40 +0000 (18:38 +0100)]
Corrects indentations in ApplicationHandler class

13 years agoMerge branch 'master' of github.com:WoltLab/WCF
Alexander Ebert [Wed, 28 Dec 2011 16:05:47 +0000 (17:05 +0100)]
Merge branch 'master' of github.com:WoltLab/WCF

13 years agoAdded getList() for WCF.Search.User
Alexander Ebert [Wed, 28 Dec 2011 16:05:21 +0000 (17:05 +0100)]
Added getList() for WCF.Search.User

13 years agoMerge pull request #333 from Gravatronics/enhancement/deleteActionBadgeUpdate
Alexander Ebert [Wed, 28 Dec 2011 15:54:51 +0000 (07:54 -0800)]
Merge pull request #333 from Gravatronics/enhancement/deleteActionBadgeUpdate

Adds possibility to update badges after javascript deletions

13 years agoMerge pull request #334 from Gravatronics/modernization/templateEvents
Alexander Ebert [Wed, 28 Dec 2011 15:52:29 +0000 (07:52 -0800)]
Merge pull request #334 from Gravatronics/modernization/templateEvents

Replaces template variables with template events

13 years agoReplaces template variables with template events
Matthias Schmidt [Tue, 27 Dec 2011 16:19:53 +0000 (17:19 +0100)]
Replaces template variables with template events

I mostly replaced existing template variables with events and added some new events for consistency reasons.

13 years agoAdds possibility to update badges after javascript deletions
Matthias Schmidt [Tue, 27 Dec 2011 14:14:57 +0000 (15:14 +0100)]
Adds possibility to update badges after javascript deletions

13 years agoMerge pull request #329 from Gravatronics/enhancement/toggleObjectIDImplement
Alexander Ebert [Tue, 27 Dec 2011 13:32:36 +0000 (05:32 -0800)]
Merge pull request #329 from Gravatronics/enhancement/toggleObjectIDImplement

Adds default implementation of WCF.Collapsible.Remote._getObjectID()

13 years agoMerge pull request #332 from Gravatronics/bug/counterTPLPlugin
Alexander Ebert [Tue, 27 Dec 2011 13:30:35 +0000 (05:30 -0800)]
Merge pull request #332 from Gravatronics/bug/counterTPLPlugin

Fixes and simplifies counter template plugin

13 years agoUse strict comparision
Matthias Schmidt [Mon, 26 Dec 2011 22:10:35 +0000 (23:10 +0100)]
Use strict comparision

13 years agoFixes and simplifies counter template plugin
Matthias Schmidt [Mon, 26 Dec 2011 22:08:15 +0000 (23:08 +0100)]
Fixes and simplifies counter template plugin

Doesn't work at the moment as you can see in the acp of a standalone application in the cache list ({$cacheIndex} is always 0).

13 years agoAdds default implementation of WCF.Collapsible.Remote._getObjectID()
Matthias Schmidt [Mon, 26 Dec 2011 20:49:21 +0000 (21:49 +0100)]
Adds default implementation of WCF.Collapsible.Remote._getObjectID()

13 years agoQuick search is now way more extensible
Alexander Ebert [Mon, 26 Dec 2011 20:18:50 +0000 (21:18 +0100)]
Quick search is now way more extensible

13 years agoMerge pull request #321 from Gravatronics/enhancement/optionHandlerComments
Alexander Ebert [Mon, 26 Dec 2011 15:38:21 +0000 (07:38 -0800)]
Merge pull request #321 from Gravatronics/enhancement/optionHandlerComments

Updates comments in option handler classes

13 years agoMerge pull request #325 from Gravatronics/enhancement/collapsibleRemoteObjectIDs
Alexander Ebert [Mon, 26 Dec 2011 15:37:52 +0000 (07:37 -0800)]
Merge pull request #325 from Gravatronics/enhancement/collapsibleRemoteObjectIDs

Changes the way WCF.Collapsible.Remote handles AJAX-objectIDs

13 years agoMerge pull request #322 from Gravatronics/bug/CollapsibleRemoteStateTypeNames
Alexander Ebert [Mon, 26 Dec 2011 15:37:18 +0000 (07:37 -0800)]
Merge pull request #322 from Gravatronics/bug/CollapsibleRemoteStateTypeNames

Unifies the state type names in WCF.Collapsible.Remote

13 years agoMerge pull request #327 from frmwrk123/mail
Alexander Ebert [Mon, 26 Dec 2011 15:36:48 +0000 (07:36 -0800)]
Merge pull request #327 from frmwrk123/mail

Added missing dot in Mail.class.php.

13 years agoFixes typo and enhances code and comments
Matthias Schmidt [Mon, 26 Dec 2011 14:29:12 +0000 (15:29 +0100)]
Fixes typo and enhances code and comments

13 years agoAdded missing dot in Mail.class.php.
Jim Martens [Mon, 26 Dec 2011 12:42:53 +0000 (13:42 +0100)]
Added missing dot in Mail.class.php.

13 years agoAllows controller-less routes
Matthias Schmidt [Mon, 26 Dec 2011 09:35:05 +0000 (10:35 +0100)]
Allows controller-less routes

13 years agoChanges the way WCF.Collapsible.Remote handles AJAX-objectIDs
Matthias Schmidt [Sun, 25 Dec 2011 19:44:41 +0000 (20:44 +0100)]
Changes the way WCF.Collapsible.Remote handles AJAX-objectIDs

Now, the default objectIDs property of the `AbstractDatabaseObject` class is used instead of a new parameter, which makes it easier reading the relevant objects without having to set the object ID(s) manually.

13 years agoAdds an own button selector for toggle actions
Matthias Schmidt [Sun, 25 Dec 2011 10:53:50 +0000 (11:53 +0100)]
Adds an own button selector for toggle actions

If you have nested containers, the simple selector for the toggle buttons doesn't work anymore since it selects all toggle buttons, also the ones from nested containers, though it should only select the toggle button of the parent container.

With an own selector you're able to select the button of each parent container only - without an restriction of how you nest the containers.

13 years agoUnifies the state types in WCF.Collapsible.Remote
Matthias Schmidt [Sun, 25 Dec 2011 10:18:04 +0000 (11:18 +0100)]
Unifies the state types in WCF.Collapsible.Remote

Everywhere the states were always called "open" or "close", here they should be called the same way.

13 years agoUpdates subpackage phpdoc
Matthias Schmidt [Fri, 23 Dec 2011 17:56:15 +0000 (18:56 +0100)]
Updates subpackage phpdoc

13 years agoUpdates comments in option handler classes
Matthias Schmidt [Fri, 23 Dec 2011 17:54:32 +0000 (18:54 +0100)]
Updates comments in option handler classes

13 years agoMerge pull request #317 from Gravatronics/enhancement/LangCacheBuilderUnusedVar
Alexander Ebert [Thu, 22 Dec 2011 19:43:46 +0000 (11:43 -0800)]
Merge pull request #317 from Gravatronics/enhancement/LangCacheBuilderUnusedVar

Removes unused variable in language cache builder class

13 years agoRemoves unused variable in language cache builder class
Matthias Schmidt [Thu, 22 Dec 2011 19:41:22 +0000 (20:41 +0100)]
Removes unused variable in language cache builder class

13 years agoMerge pull request #316 from wbbaddons/regexClass
Marcel Werk [Thu, 22 Dec 2011 19:38:05 +0000 (11:38 -0800)]
Merge pull request #316 from wbbaddons/regexClass

Adding \wcf\system\Regex::isValid()

13 years agoAdding \wcf\system\Regex::isValid()
Tim Düsterhus [Thu, 22 Dec 2011 19:34:41 +0000 (20:34 +0100)]
Adding \wcf\system\Regex::isValid()

13 years agoFixed i18n support for textarea elements
Alexander Ebert [Thu, 22 Dec 2011 19:03:43 +0000 (20:03 +0100)]
Fixed i18n support for textarea elements

13 years agoFixed loadApplication() to not init settings in ACP
Alexander Ebert [Thu, 22 Dec 2011 19:00:07 +0000 (20:00 +0100)]
Fixed loadApplication() to not init settings in ACP

13 years agoFixed i18n and ACP access
Alexander Ebert [Thu, 22 Dec 2011 18:39:21 +0000 (19:39 +0100)]
Fixed i18n and ACP access

13 years agoMerge pull request #313 from wbbaddons/templateScriptingCompilerOptimization
Alexander Ebert [Thu, 22 Dec 2011 18:30:43 +0000 (10:30 -0800)]
Merge pull request #313 from wbbaddons/templateScriptingCompilerOptimization

Removing one check as it caused problems

13 years agoRemoving one check as it caused problems
Tim Düsterhus [Thu, 22 Dec 2011 18:29:08 +0000 (19:29 +0100)]
Removing one check as it caused problems

13 years agoMerge branch 'master' of github.com:WoltLab/WCF
Alexander Ebert [Thu, 22 Dec 2011 18:08:47 +0000 (19:08 +0100)]
Merge branch 'master' of github.com:WoltLab/WCF

13 years agoChanges options to no longer require i18n
Alexander Ebert [Thu, 22 Dec 2011 18:08:22 +0000 (19:08 +0100)]
Changes options to no longer require i18n

Thanks @TimWolla for noticing :)

13 years agoComment
Luzifr [Thu, 22 Dec 2011 18:07:20 +0000 (19:07 +0100)]
Comment

13 years agoMerge pull request #249 from wbbaddons/templateScriptingCompilerOptimization
Alexander Ebert [Thu, 22 Dec 2011 17:59:47 +0000 (09:59 -0800)]
Merge pull request #249 from wbbaddons/templateScriptingCompilerOptimization

Template scripting compiler optimization

13 years agoMerge pull request #283 from wbbaddons/fileSizeOptionType
Alexander Ebert [Thu, 22 Dec 2011 17:58:10 +0000 (09:58 -0800)]
Merge pull request #283 from wbbaddons/fileSizeOptionType

Implements an fileSize option-type for easier handling of file sizes.

13 years agoMerge pull request #305 from wbbaddons/regexClass
Alexander Ebert [Thu, 22 Dec 2011 17:54:16 +0000 (09:54 -0800)]
Merge pull request #305 from wbbaddons/regexClass

Adding \wcf\system\Regex

13 years agoFixed multiple language input
Alexander Ebert [Thu, 22 Dec 2011 17:51:01 +0000 (18:51 +0100)]
Fixed multiple language input

i18n-inputs can now be declared optional and will no longer force a value, unless you left out one language. This means if i18n is not required you can leave out the value completely, but once you enable i18n you must give values for ALL installed languages!

Fixes #235
Fixes #282

13 years agoFixed application not be initialized in ACP
Alexander Ebert [Thu, 22 Dec 2011 16:22:33 +0000 (17:22 +0100)]
Fixed application not be initialized in ACP

Please be aware the namespaces will be registered, but loadApplication() will *not* init the application if within ACP.

Fixes #312

13 years agoMerge branch 'master' of github.com:WoltLab/WCF
Marcel Werk [Thu, 22 Dec 2011 14:33:31 +0000 (15:33 +0100)]
Merge branch 'master' of github.com:WoltLab/WCF

13 years agoThat one was too flexible … ;-)
Luzifr [Thu, 22 Dec 2011 13:42:41 +0000 (14:42 +0100)]
That one was too flexible … ;-)

13 years agoMakes the topMenu drop-downs more beautiful
Luzifr [Thu, 22 Dec 2011 13:05:52 +0000 (14:05 +0100)]
Makes the topMenu drop-downs more beautiful