Adicionar opção à seção "Configurações da Galeria"

3

Eu quero adicionar uma opção às "Configurações da galeria" (quando você inserir uma galeria em uma postagem).

Eu encontrei um código sobre como fazer isso, mas infelizmente não consigo mais encontrá-lo. Eu não consigo nem lembrar se era um gancho, mas eu acho que era uma coisa muito legal, -)

Thx

    
por xsonic 21.09.2012 / 14:20

2 respostas

5

Graças à dica com o plugin de várias galerias de Niall Campbell e graças a essa pergunta Como adicionar um Custom Colum na aba Thickbox Media Gallery? (onde recebi o gancho admin_head-media-upload-popup from), eu consegui completar a tarefa.

Eu adicionei uma opção para adicionar um atributo style ao shortcode da galeria.

Aquiestáocódigocompleto:

add_action('admin_head-media-upload-popup','wpse_53803_script_enqueuer');functionwpse_53803_script_enqueuer(){if($_GET['tab']=='gallery'){?><scripttype="text/javascript">
        jQuery(document).ready( function($) {

            // append the table row
            $('#gallery-settings table#basic tbody').append('<tr><th scope="row" class="label"><label><span class="alignleft">Style:</span></label></th><td class="field"><select id="style" name="style"><option value="standard">Standard</option><option value="slideshow">Slideshow</option></select></td></tr>');

            // set our vars
            var $style = '', $is_update = false;

            // Select parent editor, read existing gallery data 
            w = wpgallery.getWin();
            editor = w.tinymce.EditorManager.activeEditor;

            if (editor !== null) {
                gal = editor.selection.getNode();

                if (editor.dom.hasClass(gal, 'wpGallery')) {
                    $style = editor.dom.getAttrib(gal, 'title').match(/style=['"]([^'"]+)['"]/i);
                    var $is_update = true;
                    if ($style != null) {
                        $style = $style[1];
                        $('table#basic #style').find('option[value="' + $style + '"]').attr('selected','selected');
                    }
                } else {
                    $('#insert-gallery').show();
                    $('#update-gallery').hide();
                }
            }

            // remove standard onmousedown action
            $('#insert-gallery').attr('onmousedown', '');

            // Insert or update the actual shortcode
            $('#update-gallery, #insert-gallery, #save-all').mousedown(function() {
                var $styleAdd = '';
                if (editor !== null)
                    var orig_gallery = editor.dom.decode(editor.dom.getAttrib(gal, 'title'));
                else
                    var orig_gallery = '';

                // Check which which style is selected
                if($('table#basic #style').val() != 'standard') {
                    $styleAdd = ' style="slideshow"';
                }

                if ($(this).attr('id') == 'insert-gallery') {
                    w.send_to_editor('[gallery' + wpgallery.getSettings() + $styleAdd + ']');
                }

                // Update existing shortcode
                if ($is_update) {
                    if ($styleAdd != '' && orig_gallery.indexOf(' style=') == -1)
                        editor.dom.setAttrib(gal, 'title', orig_gallery + $styleAdd);
                    else if (orig_gallery.indexOf(' style=') != -1)
                        editor.dom.setAttrib(gal, 'title', orig_gallery.replace(' style="slideshow"', $styleAdd));
                    else
                        editor.dom.setAttrib(gal, 'title', orig_gallery.replace(' style="slideshow"', ''));
                }
            });

        });
        </script>
        <?php
    }
}

Ele adiciona style="slideshow" se o estilo da apresentação de slides estiver selecionado, caso contrário, não adicionará nada. E reconhece o estilo do conjunto se você atualizar a galeria, para que a opção correta seja selecionada.

Obrigado!

    
por xsonic 10.10.2012 / 08:41
4

hmmm verifica o código no plug-in Mutliple Galleries, ele usa uma solução alternativa de javascript devido à ausência de um hook do wordpress para a função media_upload_gallery_form (em wp-admin / includes). Em seguida, ele exibe um código de acesso de galeria modificado no editor (com alguns atributos extras).

Se você está adicionando atributos adicionais que não são cobertos pelo código de acesso da galeria, você precisará escrever sua própria função para isso, mas há muitas informações disponíveis para fazer isso lá fora, então eu não irei para isso.

    
por Niall Campbell 08.10.2012 / 01:24