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..eef5e27 --- 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} 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..b3ebf7c --- 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} 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..a7d879e --- /dev/null +++ b/packages/ezwt_extension/ezextension/ezwt/modules/websitetoolbar/ezwtfunctioncollection.php @@ -0,0 +1,54 @@ +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; + $userFunctions = new eZUserFunctionCollection(); + $policies = $userFunctions->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 ) ) ); + +?>