Advertisement:

Author Topic: Custom Attributes - position  (Read 1150 times)

teseo

  • Hero Member
  • *****
  • Posts: 6169
Re: Custom Attributes - position
« Reply #15 on: August 08, 2017, 01:36:19 pm »
Hi,

I think I've found a little bug on Custom Attributes plugin that is affecting this procedure. The plugin assumes some external script is loading a Javascript function named selectUi (Bender and bender-like themes have this on global.js, but Zara don't).

Then first you need to modify custom_attributes/item_edit.php, change:

Code: [Select]
selectUi($(this));
to:

Code: [Select]
if ($.fn.selectUi) selectUi($(this));
And here's new code to manage custom fields and Custom Attributes at once for your Zara theme:

Code: [Select]
<?php
function cust_move_plugin_hook_elements() {
    
$section Rewrite::newInstance()->get_section();
    if (
$section == 'item_add' || $section == 'item_edit') { ?>


        <script type="text/javascript">
            // Variable data, change values here only
            var customFieldsToMove = {
                1 : { 'cfIdentifier' : 'tipodetransacci-n', 'destination': '.descshow' },
                2 : { 'cfIdentifier' : 'marcaautos', 'destination': '.descshow' },
                3 : { 'cfIdentifier' : 'modeloauto', 'destination': '.descshow' },
                4 : { 'cfIdentifier' : 'marcasuv', 'destination': '.descshow' },
                5 : { 'cfIdentifier' : 'modelosuv', 'destination': '.descshow' },
                6 : { 'cfIdentifier' : 'marcapickup', 'destination': '.descshow' },
                7 : { 'cfIdentifier' : 'modelopickup', 'destination': '.descshow' },
                8 : { 'cfIdentifier' : 'marcamoto', 'destination': '.descshow' },
                9 : { 'cfIdentifier' : 'modelomoto', 'destination': '.descshow' },
                10 : { 'cfIdentifier' : 'marcacamion', 'destination': '.descshow' },
                11 : { 'cfIdentifier' : 'modelocamion', 'destination': '.descshow' },
                12 : { 'cfIdentifier' : 'tipovendedor', 'destination': '.descshow' }
            };
            // End Variable data

            $(document).ajaxComplete(function(event, xhr, settings){
                if (typeof settings['data'] == 'undefined' || settings['data'].indexOf('hook=item_') == -1) return; // No Category

                if ($.fn.uniform) uniform_plugins();
               
                // Custom fields
                for(var i in customFieldsToMove) {
                    customFieldIdentifier = customFieldsToMove[i]['cfIdentifier'];
                    moveCustomField(customFieldIdentifier, $(customFieldsToMove[i]['destination']));
                }

                // Custom Attributes
                $("<div></div>").attr('id', 'moved_custom_attributes').insertAfter(".descshow");
                $("#moved_custom_attributes").append($("#custom_attributes"));
            });

            function moveCustomField(customFieldIdentifier, destinationElement) {
                var movedId = 'moved_custom_field_' + customFieldIdentifier;
                var toMoveLabel = $("label[for='meta_" + customFieldIdentifier + "']");

                if (toMoveLabel.length && !$('#' + movedId).html()) {
                    $("<div></div>").attr('id', movedId).insertBefore(destinationElement);

                    if (destinationElement.prop('id').indexOf('meta_') == -1) {
                        toMoveLabel.parent('.meta').find('*').each(function() {
                            $(this).copyCSS($(this));
                        });
                    }

                    $('#' + movedId).append(toMoveLabel.parent('.meta'));
                } else {
                    $('#' + movedId).remove();
                }
                $("<div></div>").attr('class', 'clear').css('padding-bottom', '10px').appendTo($('#' + movedId));
            }

            $.fn.copyCSS = function (source) {
                var dom = $(source).get(0);
                var dest = {};
                var style, prop;
                if (window.getComputedStyle) {
                    var camelize = function (a, b) {
                        return b.toUpperCase();
                    };
                    if (style = window.getComputedStyle(dom, null)) {
                        var camel, val;
                        if (style.length) {
                            for (var i = 0, l = style.length; i < l; i++) {
                                prop = style[i];
                                camel = prop.replace(/\-([a-z])/, camelize);
                                val = style.getPropertyValue(prop);
                                dest[camel] = val;
                            }
                        } else {
                            for (prop in style) {
                                camel = prop.replace(/\-([a-z])/, camelize);
                                val = style.getPropertyValue(prop) || style[prop];
                                dest[camel] = val;
                            }
                        }
                        return this.css(dest);
                    }
                }
                if (style = dom.currentStyle) {
                    for (prop in style) {
                        dest[prop] = style[prop];
                    }
                    return this.css(dest);
                }
                if (style = dom.style) {
                    for (prop in style) {
                        if (typeof style[prop] != 'function') {
                            dest[prop] = style[prop];
                        }
                    }
                }
                return this.css(dest);
            };
        </script>
    <?php }
}

osc_add_hook('footer''cust_move_plugin_hook_elements'10);

function 
cust_remove_moved_elements() { ?>


    <script type="text/javascript">
        $("div [id^='moved_custom_field']").remove();
        $("#moved_custom_attributes").remove();
    </script>

<?php }

osc_add_hook('item_form''cust_remove_moved_elements''1');
osc_add_hook('item_edit''cust_remove_moved_elements''1'); 
?>


Hope everything's all right now... ???

Regards

Pirulina

  • Jr. Member
  • **
  • Posts: 78
  • What you give is what you take back in return!
Re: Custom Attributes - position
« Reply #16 on: August 08, 2017, 08:39:41 pm »
As always, pure genius teseo, many many thanks, it works great! ;) ;) ;) :)

« Last Edit: August 08, 2017, 08:46:33 pm by Pirulina »

nightfly13

  • Jr. Member
  • **
  • Posts: 96
Re: Custom Attributes - position
« Reply #17 on: January 16, 2019, 09:52:15 am »
Dear all..

Its possible implement the same with multilanguage_ attributes and zara theme??? Both are from same developper...

Best regards
Nightfly