EzPlatform Tools

Add some usefull tools for eZPlatform

目前為 2021-02-06 提交的版本,檢視 最新版本

// ==UserScript==
// @name         EzPlatform Tools
// @namespace    https://stevecohen.fr/
// @version      0.5
// @description  Add some usefull tools for eZPlatform
// @author       Steve Cohen
// @include      *
// @grant        none
// @require      https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js
// ==/UserScript==

const ENABLE_CONTENTTYPE_SHORTCUT = true;
const ENABLE_FAST_INFO_ACCESS = true;
const ENABLE_MORE_INFO_BLOCK = true;
const ENABLE_FRONT_LINK = false;
const ENABLE_USER_LINK = true;
const ENABLE_CONTENTTYPE_RELATIONLINK = true;

const EZ_API_URL = "/api/ezp/v2"
const EZ_API_BASE_DATA = {
    url: EZ_API_URL,
    type: "GET",
    beforeSend: function(xhr){
        xhr.setRequestHeader('Accept', 'application/vnd.ez.api.ContentInfo+json');
    }
};

/* globals $ MonkeyConfig */

(function ($, undefined) {
    $(function () {
        'use strict';

        function contenttypeShortcut() {
            if ($('body').hasClass('ez-content-view')) {
                var mfu = $('#ez-mfu');
                var classNameH4 = $('.ez-page-title__content-type-name');
                var contenttype = '/contenttypegroup/{contenttypegroupid}/contenttype/{contenttypeid}';

                if ($("body").hasClass('ez-content-view')) {
                    var link = contenttype
                    .replace("{contenttypegroupid}", 1) // Apparement OSEF du contenttypegroupid 🥴
                    .replace("{contenttypeid}", mfu.attr('data-parent-content-type-id'));
                    classNameH4.html('<a title="eZPlatform Tools" target="_blank" href="' + link + '">' + classNameH4.text() + '</a>');
                }
            }
        }

        function injectFastInfoAccess() {
            if ($('body').hasClass('ez-content-view')) {
                var technicalDetailsHeader = $('#ez-tab-location-view-details > div:nth-child(3)').clone().append("<div>eZPlatform Tools</div>");
                var technicalDetailsContent = $('#ez-tab-location-view-details > div:nth-child(4)').clone();

                $('.ez-view-rawcontentview').prepend(technicalDetailsHeader, technicalDetailsContent);
            }
        }

        function addMoreInfoBlock() {
            if ($('body').hasClass('ez-content-view')) {
                var mfu = $('#ez-mfu');
                var locationPath = mfu.data('parent-location-path');
                var $blockHeader = $('<div class="ez-table-header"><div class="ez-table-header__headline">More details</div><div>eZPlatform Tools</div></div>');
                var $blockBody = $(
                    '<div class="ez-scrollable-table-wrapper ezplatform-tools">' +
                    '    <table class="table">' +
                    '        <thead>' +
                    '        <tr>' +
                    '            <th>Path</th>' +
                    '        </tr>' +
                    '        </thead>' +
                    '        <tbody>' +
                    '        <tr>' +
                    '            <td>' +
                    '                ' + locationPath +
                    '            </td>' +
                    '        </tr>' +
                    '        </tbody>' +
                    '    </table>' +
                    '</div>'
                );

                $('#ez-tab-location-view-details').prepend($blockHeader, $blockBody);
            }
        }

        function addFrontLink() {
            var title = $('.ez-page-title__content-item');
            var uri = $('#ez-tab-location-view-urls table:last-child tbody tr:first-child td:first-child').text();
            var link = $('<a href="' + uri + '" title="Open in front"><svg style="width:1rem;height:1rem;" class="ez-icon ez-icon-edit"><use xlink:href="/bundles/ezplatformadminui/img/ez-icons.svg#open-newtab"></use></svg></a>');
            title.append(link);
        }

        function addLinkToCreators() {
            if ($('body').hasClass('ez-content-view')) {
                var contentId = $('#content_edit_content_info').val();
                var objdata = Object.assign({}, EZ_API_BASE_DATA);
                objdata.url = objdata.url + "/content/objects/" + contentId;

                /* Creator */
                $.ajax(objdata)
                    .then(function(response){
                    var userhref = response.Content.Owner._href;
                    var userdata = Object.assign({}, EZ_API_BASE_DATA);
                    userdata.url = userhref;
                    return $.ajax(userdata)
                })
                    .then(function(response){
                    var userid = response.User._id;
                    var text = $('#ez-tab-location-view-details .ez-scrollable-table-wrapper:not(.ezplatform-tools):nth(0) > table > tbody > tr > td:nth-child(1)').text();
                    var regExp = /\(([^)]+)\)/;
                    var matches = regExp.exec(text);
                    var date = matches[0];
                    var name = text.replace(/ *\([^)]*\) */g, "").trim();
                    $('#ez-tab-location-view-details .ez-scrollable-table-wrapper:not(.ezplatform-tools):nth(0) > table > tbody > tr > td:nth-child(1)').html('<a target="_blank" title="eZPlatform Tools" href="/view/content/' + userid + '">' + name + '</a> ' + date)
                });

                /* Updater */
                $.ajax(objdata)
                    .then(function(response){
                    var lastversionhref = response.Content.CurrentVersion._href;
                    var lastversiondata = Object.assign({}, EZ_API_BASE_DATA);
                    lastversiondata.url = lastversionhref;
                    return $.ajax(lastversiondata)
                })
                    .then(function(response){
                    var lastversioncreatorhref = response.Version.VersionInfo.Creator._href;
                    var lastversioncreatordata = Object.assign({}, EZ_API_BASE_DATA);
                    lastversioncreatordata.url = lastversioncreatorhref;
                    return $.ajax(lastversioncreatordata)
                })
                    .then(function(response){
                    var $td = $('#ez-tab-location-view-details .ez-scrollable-table-wrapper:not(.ezplatform-tools):nth(0) > table > tbody > tr > td:nth-child(2)');
                    var userid = response.User._id;
                    var text = $td.text();
                    var regExp = /\(([^)]+)\)/;
                    var matches = regExp.exec(text);
                    var date = matches[0];
                    var name = text.replace(/ *\([^)]*\) */g, "").trim();
                    $td.html('<a target="_blank" title="eZPlatform Tools" href="/view/content/' + userid + '">' + name + '</a> ' + date)
                });
            }
        }

        function addContenttypeRelationLink() {
            if ($('body').hasClass('ez-content-type-view')) {
                var pageURL = window.location.href;
                var lastURLSegment = pageURL.substr(pageURL.lastIndexOf('/') + 1);

                var objdata = Object.assign({}, EZ_API_BASE_DATA);
                objdata.url = objdata.url + "/content/types/"+lastURLSegment;
                /* ContentType */
                $.ajax(objdata)
                    .then(function(response){
                    var fieldDefinitions = response.ContentType.FieldDefinitions.FieldDefinition;
                    for (var i = 0; i < fieldDefinitions.length; i++) {
                        var fd = fieldDefinitions[i];
                        if (fd.fieldType === 'ezobjectrelationlist') {
                            var identifier = fd.identifier;
                            var td = $('.table.ez-table:nth(2)').find('tbody tr td:contains("'+identifier+'")').parent().find('td:nth(1)');
                            var locationId = fd.fieldSettings.selectionDefaultLocation;
                            td.html('<a target="_blank" title="eZPlatform Tools" href="/content/location/' + locationId + '">' + td.html() + '</a> ')
                        }
                    }
                });
            }
        }


        function UrlExists(url) {
            var http = new XMLHttpRequest();
            http.open('HEAD', url, false);
            http.send();
            return http.status !== 404;
        }

        function getSiteaccess() {
            return $('meta[name=SiteAccess]').attr("content");
        }

        if (getSiteaccess() === "admin") {
            if (ENABLE_CONTENTTYPE_SHORTCUT) contenttypeShortcut();
            if (ENABLE_FAST_INFO_ACCESS) injectFastInfoAccess();
            if (ENABLE_MORE_INFO_BLOCK) addMoreInfoBlock();
            if (ENABLE_FRONT_LINK) addFrontLink();
            if (ENABLE_USER_LINK) addLinkToCreators();
            if (ENABLE_CONTENTTYPE_RELATIONLINK) addContenttypeRelationLink();
        }
    });
})(window.jQuery.noConflict(true));

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址