From b524abfa767182fbd7dc5f9ca49daac9b3a9ad17 Mon Sep 17 00:00:00 2001 From: Edi Modric Date: Wed, 14 Sep 2011 17:54:40 +0000 Subject: [PATCH 1/4] Reimplemented access checking as fetch function to allow edit and version view to use it without code repeat --- .../templates/parts/website_toolbar.tpl | 32 ++--------- .../templates/parts/website_toolbar_edit.tpl | 6 +- .../parts/website_toolbar_versionview.tpl | 6 +- .../websitetoolbar/ezwtfunctioncollection.php | 55 +++++++++++++++++++ .../websitetoolbar/function_definition.php | 19 +++++++ 5 files changed, 89 insertions(+), 29 deletions(-) mode change 100644 => 100755 packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar.tpl mode change 100644 => 100755 packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar_edit.tpl mode change 100644 => 100755 packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar_versionview.tpl create mode 100755 packages/ezwt_extension/ezextension/ezwt/modules/websitetoolbar/ezwtfunctioncollection.php create mode 100755 packages/ezwt_extension/ezextension/ezwt/modules/websitetoolbar/function_definition.php diff --git a/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar.tpl b/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar.tpl old mode 100644 new mode 100755 index 8636e97..729d028 --- a/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar.tpl +++ b/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar.tpl @@ -1,43 +1,21 @@ {def $current_node = fetch( 'content', 'node', hash( 'node_id', $current_node_id ) ) - $content_object = $current_node.object - $can_edit_languages = $content_object.can_edit_languages + $content_object = $current_node.object } + +{if fetch( 'websitetoolbar', 'can_use', hash( 'class_id', $content_object.content_class.id ) )} + +{def $can_edit_languages = $content_object.can_edit_languages $can_manage_location = fetch( 'content', 'access', hash( 'access', 'manage_locations', 'contentobject', $current_node ) ) $can_create_languages = $content_object.can_create_languages $is_container = $content_object.content_class.is_container $odf_display_classes = ezini( 'WebsiteToolbarSettings', 'ODFDisplayClasses', 'websitetoolbar.ini' ) $odf_hide_container_classes = ezini( 'WebsiteToolbarSettings', 'HideODFContainerClasses', 'websitetoolbar.ini' ) - $website_toolbar_access = fetch( 'user', 'has_access_to', hash( 'module', 'websitetoolbar', 'function', 'use' ) ) $odf_import_access = fetch( 'user', 'has_access_to', hash( 'module', 'ezodf', 'function', 'import' ) ) $odf_export_access = fetch( 'user', 'has_access_to', hash( 'module', 'ezodf', 'function', 'export' ) ) $content_object_language_code = '' - $policies = fetch( 'user', 'user_role', hash( 'user_id', $current_user.contentobject_id ) ) - $available_for_current_class = false() $custom_templates = ezini( 'CustomTemplateSettings', 'CustomTemplateList', 'websitetoolbar.ini' ) $include_in_view = ezini( 'CustomTemplateSettings', 'IncludeInView', 'websitetoolbar.ini' ) $node_hint = ': '|append( $current_node.name|wash(), ' [', $content_object.content_class.name|wash(), ']' ) } - {foreach $policies as $policy} - {if and( eq( $policy.moduleName, 'websitetoolbar' ), - eq( $policy.functionName, 'use' ), - is_array( $policy.limitation ) )} - {if $policy.limitation[0].values_as_array|contains( $content_object.content_class.id )} - {set $available_for_current_class = true()} - {/if} - {elseif or( and( eq( $policy.moduleName, '*' ), - eq( $policy.functionName, '*' ), - eq( $policy.limitation, '*' ) ), - and( eq( $policy.moduleName, 'websitetoolbar' ), - eq( $policy.functionName, '*' ), - eq( $policy.limitation, '*' ) ), - and( eq( $policy.moduleName, 'websitetoolbar' ), - eq( $policy.functionName, 'use' ), - eq( $policy.limitation, '*' ) ) )} - {set $available_for_current_class = true()} - {/if} - {/foreach} - -{if and( $website_toolbar_access, $available_for_current_class )} -
diff --git a/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar_edit.tpl b/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar_edit.tpl old mode 100644 new mode 100755 index b709541..0ba20e5 --- a/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar_edit.tpl +++ b/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar_edit.tpl @@ -1,3 +1,5 @@ +{if fetch( 'websitetoolbar', 'can_use', hash( 'class_id', $object.content_class.id ) )} + {def $custom_templates = ezini( 'CustomTemplateSettings', 'CustomTemplateList', 'websitetoolbar.ini' ) $include_in_view = ezini( 'CustomTemplateSettings', 'IncludeInView', 'websitetoolbar.ini' )} @@ -70,4 +72,6 @@ {include uri='design:parts/websitetoolbar/floating_toolbar.tpl'} - \ No newline at end of file + + +{/if} \ No newline at end of file diff --git a/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar_versionview.tpl b/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar_versionview.tpl old mode 100644 new mode 100755 index de4cd6f..3a3ded1 --- a/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar_versionview.tpl +++ b/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar_versionview.tpl @@ -1,3 +1,5 @@ +{if fetch( 'websitetoolbar', 'can_use', hash( 'class_id', $object.content_class.id ) )} + {def $custom_templates = ezini( 'CustomTemplateSettings', 'CustomTemplateList', 'websitetoolbar.ini' ) $include_in_view = ezini( 'CustomTemplateSettings', 'IncludeInView', 'websitetoolbar.ini' )} @@ -65,4 +67,6 @@ {include uri='design:parts/websitetoolbar/floating_toolbar.tpl'} - \ No newline at end of file + + +{/if} \ No newline at end of file diff --git a/packages/ezwt_extension/ezextension/ezwt/modules/websitetoolbar/ezwtfunctioncollection.php b/packages/ezwt_extension/ezextension/ezwt/modules/websitetoolbar/ezwtfunctioncollection.php new file mode 100755 index 0000000..a87f0c9 --- /dev/null +++ b/packages/ezwt_extension/ezextension/ezwt/modules/websitetoolbar/ezwtfunctioncollection.php @@ -0,0 +1,55 @@ +hasAccessTo( 'websitetoolbar', 'use' ); + + if ( $userHasAccess['accessWord'] == 'no' ) + return array( 'result' => false ); + + $contentClass = eZContentClass::fetch( (int) $classID ); + if ( !$contentClass instanceof eZContentClass ) + return array( 'result' => false ); + + $availableForCurrentClass = false; + $policies = eZUserFunctionCollection::fetchUserRole( $currentUser->attribute( 'contentobject_id' ) ); + + foreach ( $policies['result'] as $policy ) + { + if ( $policy['moduleName'] == 'websitetoolbar' && $policy['functionName'] == 'use' && is_array( $policy['limitation'] ) ) + { + if ( in_array( (int) $classID, $policy['limitation'][0]->allValues() ) ) + $availableForCurrentClass = true; + } + else if ( ( $policy['moduleName'] == '*' && $policy['functionName'] == '*' && $policy['limitation'] == '*' ) || + ( $policy['moduleName'] == 'websitetoolbar' && $policy['functionName'] == '*' && $policy['limitation'] == '*' ) || + ( $policy['moduleName'] == 'websitetoolbar' && $policy['functionName'] == 'use' && $policy['limitation'] == '*' ) ) + { + $availableForCurrentClass = true; + } + } + + return array( 'result' => $availableForCurrentClass ); + } +} + +?> diff --git a/packages/ezwt_extension/ezextension/ezwt/modules/websitetoolbar/function_definition.php b/packages/ezwt_extension/ezextension/ezwt/modules/websitetoolbar/function_definition.php new file mode 100755 index 0000000..6afe86b --- /dev/null +++ b/packages/ezwt_extension/ezextension/ezwt/modules/websitetoolbar/function_definition.php @@ -0,0 +1,19 @@ + 'can_use', + 'call_method' => array( 'class' => 'ezwtFunctionCollection', 'method' => 'canUse' ), + 'parameter_type' => 'standard', + 'parameters' => array( array( 'name' => 'class_id', + 'type' => 'integer', + 'required' => true ) ) ); + +?> From 183e60e54874581d6d35a236a3faaad7c386b8f8 Mon Sep 17 00:00:00 2001 From: Edi Modric Date: Wed, 14 Sep 2011 18:03:30 +0000 Subject: [PATCH 2/4] Missing new lines --- .../design/standard/templates/parts/website_toolbar_edit.tpl | 2 +- .../standard/templates/parts/website_toolbar_versionview.tpl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar_edit.tpl b/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar_edit.tpl index 0ba20e5..eef5e27 100755 --- a/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar_edit.tpl +++ b/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar_edit.tpl @@ -74,4 +74,4 @@ -{/if} \ No newline at end of file +{/if} diff --git a/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar_versionview.tpl b/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar_versionview.tpl index 3a3ded1..b3ebf7c 100755 --- a/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar_versionview.tpl +++ b/packages/ezwt_extension/ezextension/ezwt/design/standard/templates/parts/website_toolbar_versionview.tpl @@ -69,4 +69,4 @@ -{/if} \ No newline at end of file +{/if} From 81b301875e033135cb83c2986f44f78e11b5b9dd Mon Sep 17 00:00:00 2001 From: Edi Modric Date: Wed, 14 Sep 2011 18:07:02 +0000 Subject: [PATCH 3/4] Do not call non-static method statically --- .../ezwt/modules/websitetoolbar/ezwtfunctioncollection.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ezwt_extension/ezextension/ezwt/modules/websitetoolbar/ezwtfunctioncollection.php b/packages/ezwt_extension/ezextension/ezwt/modules/websitetoolbar/ezwtfunctioncollection.php index a87f0c9..af0de9d 100755 --- a/packages/ezwt_extension/ezextension/ezwt/modules/websitetoolbar/ezwtfunctioncollection.php +++ b/packages/ezwt_extension/ezextension/ezwt/modules/websitetoolbar/ezwtfunctioncollection.php @@ -9,7 +9,6 @@ class ezwtFunctionCollection { - /** * Fetch if current user can use website toolbar * Used by fetch( 'websitetoolbar', 'can_use', hash( 'class_id', $class_id ) ) template function @@ -31,7 +30,8 @@ function canUse( $classID ) return array( 'result' => false ); $availableForCurrentClass = false; - $policies = eZUserFunctionCollection::fetchUserRole( $currentUser->attribute( 'contentobject_id' ) ); + $userFunctions = new eZUserFunctionCollection(); + $policies = $userFunctions->fetchUserRole( $currentUser->attribute( 'contentobject_id' ) ); foreach ( $policies['result'] as $policy ) { From adf74e9092b99c9089f055bfcebdff6c43a9ec26 Mon Sep 17 00:00:00 2001 From: Edi Modric Date: Wed, 14 Sep 2011 18:19:32 +0000 Subject: [PATCH 4/4] Remove @static from doc --- .../ezwt/modules/websitetoolbar/ezwtfunctioncollection.php | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/ezwt_extension/ezextension/ezwt/modules/websitetoolbar/ezwtfunctioncollection.php b/packages/ezwt_extension/ezextension/ezwt/modules/websitetoolbar/ezwtfunctioncollection.php index af0de9d..a7d879e 100755 --- a/packages/ezwt_extension/ezextension/ezwt/modules/websitetoolbar/ezwtfunctioncollection.php +++ b/packages/ezwt_extension/ezextension/ezwt/modules/websitetoolbar/ezwtfunctioncollection.php @@ -13,7 +13,6 @@ class ezwtFunctionCollection * Fetch if current user can use website toolbar * Used by fetch( 'websitetoolbar', 'can_use', hash( 'class_id', $class_id ) ) template function * - * @static * @param int $classID ID of content class * @return bool */