<?xml version="1.0" encoding="UTF-8"?>
<ajxp_plugin name="share" label="CONF_MESSAGE[Sharing Features]" description="CONF_MESSAGE[Share Center actions and hooks]"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file:../core.ajaxplorer/ajxp_registry.xsd">
    <server_settings>
        <global_param name="ENABLE_FILE_PUBLIC_LINK" group="CONF_MESSAGE[Authorizations]" description="CONF_MESSAGE[Allow users to generate public links on files]" label="CONF_MESSAGE[Files: enable public links]" type="boolean" default="true" expose="true"/>
        <global_param name="ENABLE_FILE_INTERNAL_SHARING" group="CONF_MESSAGE[Authorizations]" description="CONF_MESSAGE[Enable internal file sharing (sharing with users existing or temporary users)]" label="CONF_MESSAGE[Files: enable internal sharing]" type="boolean" mandatory="true" default="true" expose="true"/>
        <global_param name="ENABLE_FOLDER_PUBLIC_LINK" group="CONF_MESSAGE[Authorizations]" description="CONF_MESSAGE[Allow users to generate public links on folders]" label="CONF_MESSAGE[Folders: enable public links]" type="boolean" default="true" expose="true"/>
        <global_param name="ENABLE_FOLDER_INTERNAL_SHARING" group="CONF_MESSAGE[Authorizations]" description="CONF_MESSAGE[Enable internal folder sharing (sharing with users existing or temporary users)]" label="CONF_MESSAGE[Folders: enable internal sharing]" type="boolean" mandatory="true" default="true" expose="true"/>
        <global_param name="USE_REWRITE_RULE" group="CONF_MESSAGE[Link Generation]" description="CONF_MESSAGE[Use web server RewriteEngine mechanism to generate prettier URLs]" label="CONF_MESSAGE[Use Rewrite Rule]" type="boolean" default="true"/>
        <global_param name="HASH_MIN_LENGTH" group="CONF_MESSAGE[Link Generation]" description="CONF_MESSAGE[Minimum length of the generated hash]" label="CONF_MESSAGE[Hash minimum length]" type="integer" default="6"/>
        <global_param name="HASH_USER_EDITABLE" group="CONF_MESSAGE[Link Generation]" description="CONF_MESSAGE[Allow users to manually choose a hash for the generated links]" label="CONF_MESSAGE[Hash user-editable]" type="boolean" default="true" expose="true"/>
        <global_param name="FILE_MAX_EXPIRATION" group="CONF_MESSAGE[Link Generation]" description="CONF_MESSAGE[Maximum share expiration limit for file, 0 = unlimited]" label="CONF_MESSAGE[Maximum file expiration limit]" type="integer" default="0" expose="true"/>
        <global_param name="FILE_MAX_DOWNLOAD" group="CONF_MESSAGE[Link Generation]" description="CONF_MESSAGE[Maximum download limit for file, 0 = unlimited]" label="CONF_MESSAGE[Maximum file download limit]" type="integer" default="0" expose="true"/>
        <global_param name="SHARE_FORCE_PASSWORD" group="CONF_MESSAGE[Link Generation]" description="CONF_MESSAGE[Do not allow users to create public links, only private links (password-protected)]" label="CONF_MESSAGE[Set password mandatory]" type="boolean" default="false" expose="true"/>
        <global_param name="EMAIL_INVITE_EXTERNAL" group="CONF_MESSAGE[Link Generation]" description="CONF_MESSAGE[Use external mailer for invitations]" label="CONF_MESSAGE[Force External Mailer]" type="boolean" default="false" expose="true"/>
        <global_param name="CREATE_QRCODE" group="CONF_MESSAGE[Link Generation]" description="CONF_MESSAGE[Create and display QRCode for shared link]" label="CONF_MESSAGE[Create QRCode]" type="boolean" default="false" expose="true"/>
        <global_param name="AVOID_SHARED_FOLDER_SAME_LABEL" group="CONF_MESSAGE[Internal Sharing]" description="CONF_MESSAGE[Disallow users to create shared folders if a workspace already exists with the same label]" label="CONF_MESSAGE[Avoid labels duplication]" type="boolean" default="false"/>
        <global_param name="SHARED_USERS_TMP_PREFIX" group="CONF_MESSAGE[Internal Sharing]" description="CONF_MESSAGE[Mandatory prefix for users created temporary users login]" label="CONF_MESSAGE[Tmp users prefix]" type="string" expose="true"/>
        <global_param name="FORK_EVENT_FORWARDING" group="CONF_MESSAGE[Internal Sharing]" type="boolean" label="CONF_MESSAGE[Fork Events Forwarding]" description="CONF_MESSAGE[If you detect performances issues while modifiyng files under deep trees, try activating that one. Please be sure of what you do, this may trigger a whole lot of php processes on the server.]" default="false"/>
        <global_param name="CUSTOM_SHAREPAGE_TITLE" group="CONF_MESSAGE[Weblink Page]" type="string" label="CONF_MESSAGE[Page Title]" description="CONF_MESSAGE[Share page title. Use AJXP_FILENAME keyword to display the file name.]" mandatory="false" default=""/>
        <global_param name="CUSTOM_SHAREPAGE_LEGEND" group="CONF_MESSAGE[Weblink Page]" type="string" label="CONF_MESSAGE[Download text]" description="CONF_MESSAGE[Text displayed below the download button. Use AJXP_FILENAME keyword to display the file name, and PYDIO_APP_TITLE for the application title.]" mandatory="false" default=""/>
        <global_param name="CUSTOM_SHAREPAGE_LEGEND_PASS" group="CONF_MESSAGE[Weblink Page]" type="string" label="CONF_MESSAGE[Download text w/ Pass]" description="CONF_MESSAGE[Text displayed below the download button when a password is mandatory. Use AJXP_FILENAME keyword to display the file name, and PYDIO_APP_TITLE for the application title.]" mandatory="false" default=""/>
        <global_param name="CUSTOM_SHAREPAGE_BUTTON" group="CONF_MESSAGE[Weblink Page]" type="image" label="CONF_MESSAGE[Download Button]" description="CONF_MESSAGE[Image used as a button for downloading the file]" mandatory="false"
                      editable="true"
                      uploadAction="store_binary_temp"
                      loadAction="get_global_binary_param"
                      defaultImage="plugins/action.share/res/dl.png"
                      expose="true"
        />
        <global_param name="CUSTOM_SHAREPAGE_BACKGROUND_COLOR" group="CONF_MESSAGE[Weblink Page]" type="string" label="CONF_MESSAGE[Background Color]" description="CONF_MESSAGE[Share page background color.]" mandatory="false" default="#FFFFFF"/>
        <global_param name="CUSTOM_SHAREPAGE_TEXT_COLOR" group="CONF_MESSAGE[Weblink Page]" type="string" label="CONF_MESSAGE[Text Color]" description="CONF_MESSAGE[Share page text color.]" mandatory="false" default="#399c9b"/>
        <global_param name="CUSTOM_SHAREPAGE_TEXTSHADOW_COLOR" group="CONF_MESSAGE[Weblink Page]" type="string" label="CONF_MESSAGE[Text Shadow]" description="CONF_MESSAGE[Share page text shadow color.]" mandatory="false" default="#FFFFFF"/>
    </server_settings>
    <client_settings>
        <resources>
            <i18n namespace="share_center" path="plugins/action.share/res/i18n"/>
            <css file="plugins/action.share/res/react-share-form.css" autoload="true"/>
            <js file="plugins/action.share/res/build/model/ShareModel.js" className="ReactModelShare"/>
            <js file="plugins/action.share/res/build/ShareInfoPanel.js" className="ShareInfoPanel" depends="React,ReactModelShare"/>
            <js file="plugins/action.share/res/build/ShareDialog.js" className="ShareDialog" depends="React,ReactModelShare,PydioForm,UsersCompleter"/>
        </resources>
    </client_settings>
    <registry_contributions>
        <actions>
            <!-- TODO : handle action names and authorization (and disable sharing mask) -->
            <action name="share_react">
                <gui text="292" title="292" src="share.png" iconClass="mdi mdi-share-variant" hasAccessKey="false">
                    <context selection="true" dir="true" recycle="hidden" actionBar="true" actionBarGroup="get,info_panel_share" contextMenu="true"/>
                    <selectionContext dir="true" file="true" recycle="false" unique="true" evalMetadata="!metadata.get('ajxp_shared')"/>
                </gui>
                <rightsContext noUser="true" userLogged="only" read="true" write="false" adminOnly=""/>
                <processing>
                    <clientCallback prepareModal="true"><![CDATA[
                        if(!pydio.getController().shareDialogLoader) {
                            pydio.getController().shareDialogLoader = new AjxpReactDialogLoader('ShareDialog', 'MainPanel', {
                                selection:pydio.getUserSelection()
                            });
                        }
                        pydio.getController().shareDialogLoader.openDialog('react_share_form', true);
                    ]]></clientCallback>
                    <clientForm id="react_share_form"><![CDATA[
                        <div id="react_share_form" box_padding="0" class="react-mui-context SF_material"></div>
                    ]]></clientForm>
                </processing>
            </action>
            <action name="share-edit-shared">
                <gui src="share.png" iconClass="mdi mdi-share-variant" text="share_center.125" title="share_center.126">
                    <context dir="true" recycle="hidden" selection="true" actionBar="true" contextMenu="true" actionBarGroup="get,info_panel_share" behaviour="hidden"/>
                    <selectionContext dir="true" file="true" evalMetadata="metadata.get('ajxp_shared')" recycle="false" unique="true" behaviour="hidden"/>
                </gui>
                <processing>
                    <clientCallback prepareModal="true"><![CDATA[
                        if(!pydio.getController().shareDialogLoader) {
                            pydio.getController().shareDialogLoader = new AjxpReactDialogLoader('ShareDialog', 'MainPanel', {
                                selection:pydio.getUserSelection()
                            });
                        }
                        pydio.getController().shareDialogLoader.openDialog('react_share_form', true);
                    ]]></clientCallback>
                </processing>
            </action>
            <action name="share">
                <rightsContext noUser="true" userLogged="only" read="true" write="false" adminOnly=""/>
                <processing>
                    <serverCallback methodName="switchAction" restParams="/simple_share_type/file+" developerComment="Main action for sharing a file or a folder">
                        <input_param description="Path of the resource to share" name="nodes" type="AJXP_NODE[]" mandatory="true"/>
                        <input_param description="Simple type for sharing via the REST api, always links, public or private" name="simple_share_type" type="public|private" mandatory="false"/>
                        <input_param description="Specific type of sharing" name="sub_action" type="delegate_repo|create_minisite|public_link" mandatory="true"/>
                        <input_param description="For editing the data of an existing workspace/minisite" name="repository_id" type="string" mandatory="false"/>
                        <input_param description="For a workspace, directly set a watch on this for the current user" name="self_watch_folder" type="boolean"/>
                        <input_param description="For a minisite, will determine whether it will be public (true) or private (false), creating a temporary user in the first case." name="create_guest_user" type="boolean"/>
                        <input_param description="For a workspace/private minisite, define zero or more ACL for users" name="user_[n]" type="string"/>
                        <input_param description="For a workspace/private minisite, read right for user N" name="right_read_[n]" type="boolean"/>
                        <input_param description="For a workspace/private minisite, write right for user N" name="right_write_[n]" type="boolean"/>
                        <input_param description="For a workspace/private minisite, watch status for user N" name="right_watch_[n]" type="boolean"/>
                        <input_param description="For a public link, set a maximum number of downloads authorized" name="downloadlimit" type="integer"/>
                        <input_param description="For a public link, set a maximum number of authorized days" name="expiration" type="integer"/>
                        <input_param description="For a public link, set a password" name="password" type="string"/>
                        <input_param description="For a minisite on file or folder, force a custom link handle" name="custom_handle" type="string"/>
                        <input_param description="Additional plugins data that can be stored in the shared resource" name="PLUGINS_DATA" type="FORM_DATA"/>
                    </serverCallback>
                    </processing>
            </action>
            <action name="migrate_legacy_shares">
                <rightsContext adminOnly="true" noUser="false" read="true" userLogged="true" write="true"/>
                <processing>
                    <serverCallback methodName="migrateLegacyShares" restParams="/dry_run"/>
                </processing>
            </action>
            <!--
            <action name="share-edit-shared">
                <gui src="share.png" iconClass="icon-share" text="share_center.125" title="share_center.126">
                    <context dir="true" recycle="hidden" selection="true" actionBar="true" contextMenu="true" actionBarGroup="get,info_panel_share" behaviour="hidden"/>
                    <selectionContext dir="true" file="true" evalMetadata="metadata.get('ajxp_shared')" recycle="false" unique="true" behaviour="hidden"/>
                </gui>
                <processing>
                    <clientCallback prepareModal="true"><![CDATA[
                        ResourcesManager.detectModuleToLoadAndApply('ShareCenter', function(){
                            if(!pydio.getController().shareCenter) {
                                pydio.getController().shareCenter = new ShareCenter();
                            }
                            pydio.getController().shareCenter.performShareAction();
                        });
                    ]]></clientCallback>
                </processing>
            </action>
            <action name="share-file-minisite">
                <gui src="share.png" iconClass="icon-share" text="292" title="292">
                    <context dir="true" recycle="hidden" selection="true" actionBar="true" contextMenu="true" actionBarGroup="get,info_panel_share" />
                    <selectionContext dir="false" file="true" recycle="false" unique="true" evalMetadata="!metadata.get('ajxp_shared')" />
                </gui>
                <processing>
                    <clientCallback prepareModal="true"><![CDATA[
                        ResourcesManager.detectModuleToLoadAndApply('ShareCenter', function(){
                            if(!pydio.getController().shareCenter) {
                                pydio.getController().shareCenter = new ShareCenter();
                            }
                            pydio.getController().shareCenter.performShare('minisite-public');
                        });
                    ]]></clientCallback>
                </processing>
            </action>
            <action name="share-selection-minisite">
                <gui src="share.png" iconClass="icon-share" text="share_center.123" title="share_center.124">
                    <context dir="true" recycle="false" selection="true"/>
                    <selectionContext dir="false" file="true" multipleOnly="true" recycle="false" unique="false"/>
                </gui>
                <processing>
                    <clientCallback prepareModal="true"><![CDATA[
                        ResourcesManager.detectModuleToLoadAndApply('ShareCenter', function(){
                            if(!pydio.getController().shareCenter) {
                                pydio.getController().shareCenter = new ShareCenter();
                            }
                            pydio.getController().shareCenter.performShare('minisite-public');
                        });
                    ]]></clientCallback>
                </processing>
            </action>
            <action name="share-folder-minisite-public">
                <gui src="share.png" iconClass="icon-share" text="292" title="292">
                    <context dir="true" recycle="hidden" selection="true" actionBar="true" contextMenu="true" actionBarGroup="get,info_panel_share"/>
                    <selectionContext dir="true" file="false" recycle="false" unique="true" evalMetadata="!metadata.get('ajxp_shared')" />
                </gui>
                <processing>
                    <clientCallback prepareModal="true"><![CDATA[
                        ResourcesManager.detectModuleToLoadAndApply('ShareCenter', function(){
                            if(!pydio.getController().shareCenter) {
                                pydio.getController().shareCenter = new ShareCenter();
                            }
                            pydio.getController().shareCenter.performShare('minisite-public');
                        });
                    ]]></clientCallback>
                </processing>
            </action>
            -->
            <action name="load_shared_element_data">
                <processing>
                    <serverCallback methodName="switchAction" restParams="/file+" developerComment="Loads all current sharing data for a given resource. Workspace must support metadata management (metastore).">
                        <input_param description="Path of the resource to share" name="file" type="path" mandatory="true"/>
                        <input_param description="Type of element to load (file or folder)" name="element_type" type="file|repository" mandatory="true"/>
                        <output type="application/json"/>
                    </serverCallback>
                </processing>
            </action>
            <action name="unshare">
                <processing>
                    <serverCallback methodName="switchAction" restParams="/file+" developerComment="Stop sharing a folder, or remove a public link from a file.">
                        <input_param description="Path of the resource to unshare" name="file" type="path" mandatory="true"/>
                        <input_param description="Type of element to load (file or folder)" name="element_type" type="file|repository" mandatory="true"/>
                        <input_param description="If the resource is a file, send also the element_id, as many links can be generated for one file" name="element_id" type="string"/>
                    </serverCallback>
                </processing>
            </action>
            <action name="toggle_link_watch">
                <processing>
                    <serverCallback methodName="switchAction" restParams="/file+" developerComment="Toggle a shared element status for being watched or not.">
                        <input_param description="Path of the resource to unshare" name="file" type="path" mandatory="true"/>
                        <input_param description="Type of element to load (file or folder)" name="element_type" type="file|repository" mandatory="true"/>
                        <input_param description="If the resource is a file, send also the element_id, as many links can be generated for one file" name="element_id" type="string"/>
                    </serverCallback>
                </processing>
            </action>
            <action name="reset_counter">
                <processing>
                    <serverCallback methodName="switchAction" restParams="/file+" developerComment="Reset download counter for a given link generated on a file.">
                        <input_param description="Path of the resource to unshare" name="file" type="path" mandatory="true"/>
                        <input_param description="Send also the element_id, as many links can be generated for one file" name="element_id" type="string"/>
                    </serverCallback>
                </processing>
            </action>
            <action name="update_shared_element_data">
                <processing>
                    <serverCallback methodName="switchAction">
                        <input_param description="Path of the resource to unshare" name="file" type="path" mandatory="true"/>
                        <input_param description="Send also the element_id, as many links can be generated for one file" name="element_id" type="string"/>
                        <input_param description="Name of the property to modify (only tags supported)" name="p_name" type="string" mandatory="true" default="tags"/>
                        <input_param description="Value of the property to modify" name="p_value" type="string" mandatory="true"/>
                    </serverCallback>
                </processing>
            </action>
            <action name="forward_change_event">
                <processing>
                    <serverCallback methodName="forwardEventToSharesAction"/>
                </processing>
            </action>
            <action name="sharelist-edit">
                <gui src="share.png" iconClass="mdi mdi-share-variant" text="share_center.125" title="share_center.126">
                    <context dir="true" recycle="false" selection="true" actionBar="true" actionBarGroup="share_list_toolbar-selection" behaviour="hidden"/>
                    <selectionContext dir="true" file="true" evalMetadata="metadata.get('ajxp_shared')" recycle="false" unique="true" behaviour="hidden"/>
                </gui>
                <processing>
                    <clientCallback prepareModal="true"><![CDATA[
                        var dataModel;
                        if(window.actionArguments && window.actionArguments.length){
                            dataModel = window.actionArguments[0];
                        }else if(window.actionManager){
                            dataModel = window.actionManager.getDataModel();
                        }
                        var dialog = new AjxpReactDialogLoader('ShareDialog', 'MainPanel', {selection:dataModel, readonly:true});
                        dialog.openDialog('react_share_form', true);
                    ]]></clientCallback>
                    <clientForm id="react_share_form"><![CDATA[
                        <div id="react_share_form" box_padding="0" class="react-mui-context SF_material"></div>
                    ]]></clientForm>
                </processing>
            </action>
            <action name="sharelist-load">
                <gui src="share.png" iconClass="icon-refresh" text="149" title="149">
                    <context dir="true" recycle="false" selection="false" actionBar="true" actionBarGroup="share_list_toolbar" behaviour="hidden"/>
                </gui>
                <processing>
                    <clientCallback prepareModal="true"><![CDATA[
                        if(window.actionManager){
                            window.actionManager.getDataModel().requireContextChange(window.actionManager.getDataModel().getRootNode(), true);
                        }
                    ]]></clientCallback>
                </processing>
                <processing>
                    <serverCallback restParams="/" methodName="switchAction" sdkMethodName="loadShareList">
                        <input_param description="Parent repository ID" name="parent_repository_id" type="string" mandatory="false"/>
                        <input_param name="user_context" type="string" description="Either global (all users, requires admin right) or current (current user)" default="current"/>
                    </serverCallback>
                </processing>
            </action>
            <action name="sharelist-clearExpired">
                <gui text="user_dash.25" title="user_dash.26" iconClass="icon-time" src="edit_clear_history.png" accessKey="" hasAccessKey="false">
                    <context dir="true" selection="false" recycle="false" 
                             actionBar="true" contextMenu="false" infoPanel="false"
                             actionBarGroup="share_list_toolbar" inZip="false"/>
                </gui>
                <rightsContext noUser="true" userLogged="only" read="true" write="true" adminOnly=""/>
                <processing>
                    <clientCallback prepareModal="true"><![CDATA[
						var conn = new Connexion();
						conn.addParameter("get_action", "sharelist-clearExpired");
						var dm = window.actionManager.getDataModel();
						conn.onComplete = function(transport){
							PydioApi.getClient().parseXmlMessage(transport.responseXML);
                            if(window.actionManager){
                                dm.requireContextChange(dm.getRootNode(), true);
                            }
						};
						conn.sendAsync();
					]]></clientCallback>
                    <serverCallback methodName="switchAction" developerComment="Clear expired links" restParams="/"/>
                </processing>
            </action>
            <action name="share_current_page">
                <gui src="" iconClass="mdi mdi-share-variant" text="share_center.110" title="share_center.110">
                    <context dir="true" recycle="false" selection="false" actionBarGroup="minisite-share-actions" actionBar="true"/>
                </gui>
                <processing>
                    <clientCallback dialogOpenForm="share_current_url" dialogSkipButtons="true" prepareModal="true">
                        <dialogOnOpen><![CDATA[
                            modal.getForm().down("#crt-page-url").setValue(document.location.href);
                            if(ajxpBootstrap.parameters.get('PRESET_LOGIN') === 'ajxp_preloged_user' && !ajaxplorer.getContextHolder().isEmpty() && pydio.getController().getActionByName("download")){
                                var tpl = new Template('<div style="font-size: 16px; padding-top:15px; text-align:left;">#{title} <a href="#{link}" target="_blank" class="icon-link" style="font-size: 0.8em;"></a></div><input type="text" value="#{link}" style="width: 98%;">');
                                var node = ajaxplorer.getContextHolder().getUniqueNode();
                                var editors = pydio.Registry.findEditorsForMime(node.getAjxpMime(), true);
                                if(editors.length && Class.getByName(editors[0].editorClass)){
                                    var staticClass = Class.getByName(editors[0].editorClass).prototype;
                                    if(staticClass.getRESTPreviewLinks){
                                        var links = staticClass.getRESTPreviewLinks(node);
                                        $H(links).each(function(pair){
                                            modal.getForm().down("#additional_links").insert(tpl.evaluate({title:pair.key,link:document.location.href.split('?').shift() + "?dl=true&ct=true"+pair.value}));
                                        });
                                    }
                                }
                                var dlLink = document.location.href.split('?').shift() + "?dl=true&file=" + encodeURIComponent(node.getPath());
                                modal.getForm().down("#additional_links").insert(tpl.evaluate({title:MessageHash['share_center.60'],link:dlLink}));
                            }
                        ]]></dialogOnOpen>
                        <dialogOnComplete><![CDATA[
                            hideLightBox();
                        ]]></dialogOnComplete>
                        <dialogOnCancel><![CDATA[]]></dialogOnCancel>
                    </clientCallback>
                    <clientForm id="share_current_url"><![CDATA[
                        <div id="share_current_url" box_width="300" style="text-align:center;">
                            <input type="text" id="crt-page-url" onclick="$(this).select();" value="" style="width: 387px;text-align: center;font-size: 19px;margin: 10px 0;padding: 5px;">
                            <div class="non_macos">AJXP_MESSAGE[share_center.143]</div>
                            <div class="macos_only" style="display:none;">AJXP_MESSAGE[share_center.144]</div>
                            <br>
                            <div id="additional_links" style="padding-bottom:10px;"></div>
                        </div>
                    ]]></clientForm>
                </processing>
            </action>
            <action name="download">
                <pre_processing>
                    <serverCallback methodName="preProcessDownload" applyCondition="$apply=isSet($_SESSION['CURRENT_MINISITE']);"/>
                </pre_processing>
            </action>
        </actions>
        <client_configs>
            <component_config className="InfoPanel">
                <infoPanelExtension mime="meta:ajxp_shared" attributes="" modifier="ShareInfoPanel.loader">
                    <messages>
                        <message key="type_string" id="share_center.50"/>
                    </messages>
                    <html><![CDATA[
                        <div id="ajxp_shared_info_panel" data-infoPanelPosition="first">
                            <div class="panelHeader infoPanelGroup" colspan="2">
                                <span class="user_meta_change" style="display: none;" data-ajxpaction="share-edit-shared" >AJXP_MESSAGE[457]</span>
                                <span class="mdi mdi-share-variant" data-ajxpAction="share-edit-shared" title="AJXP_MESSAGE[share_center.55]"></span>#{type_string}
                                </div>
                            <div class="infoPanelTable" cellspacing="0" border="0" cellpadding="0"></div>
                        </div>
                    ]]></html>
                </infoPanelExtension>
            </component_config>
            <component_config className="AjxpTabulator::userdashboard_main_tab">
                <additional_tab id="shared_pane2"
                                tabInfo='{"id":"my-shared2","iconClass":"icon-share","element":"shared_pane2","closeable":false,"label":"share_center.98","title":"share_center.99","dontFocus":true,"position":4}'
                                paneInfo='{"type":"widget"}'><![CDATA[
                    <div id="shared_pane2" ajxpClass="AjxpPane" class="tabbed_editor">
                        <div id="buttons_bar" class="action_bar" ajxpClass="ActionsToolbar" ajxpOptions='{"dataModelElementId":"shared_files_list","toolbarsList":["share_list_toolbar-selection", "share_list_toolbar"],"skipBubbling":true, "skipCarousel":true,"submenuOffsetTop":2}'></div>
                        <h3 class="dashboard_panel_title">AJXP_MESSAGE[share_center.98]</h3>
                        <div id="shared_files_list" ajxpClass="FetchedResultPane" ajxpOptions='{"displayMode":"list", "fixedDisplayMode":"list", "groupByData":"1", "fit":"height","selectionChangeCallback":false,"updateGlobalContext":false,"nodeProviderProperties":{"get_action":"sharelist-load","user_context":"current"}}'></div>
                    </div>
                ]]></additional_tab>
            </component_config>
        </client_configs>
        <hooks>
            <serverCallback hookName="node.info" methodName="nodeSharedMetadata"/>
            <serverCallback hookName="node.change" methodName="updateNodeSharedData"/>
            <serverCallback hookName="user.after_delete" methodName="cleanUserShares" defer="true"/>
            <serverCallback methodName="forwardEventToShares" hookName="node.change" defer="true"/>
        </hooks>
    </registry_contributions>
    <class_definition filename="plugins/action.share/class.ShareCenter.php" classname="ShareCenter"/>
    <dependencies>
        <activePlugin pluginName="access.AJXP_STREAM_PROVIDER|access.ajxp_user|access.ajxp_conf|access.ajxp_admin"/>
    </dependencies>
</ajxp_plugin>
