wordpress 3.5 media manager – agregar mis propias vistas backbone.js

3 minutos de lectura

avatar de usuario
Kriesi

Actualmente estoy tratando de utilizar el nuevo administrador de medios de WordPress 3.5 que usa backbone.js para crear y completar su ventana modal.

Lo que quiero hacer es: un usuario hace clic en el botón de carga, aparece el administrador de medios, el usuario selecciona la imagen, presiona insertar, la imagen se guarda en el campo personalizado.

Todo eso ya funciona, lo único que me gustaría cambiar es llenar la barra lateral del cargador de medios (donde el usuario puede agregar título, título, seleccionar tamaño, etc.) con mi propia plantilla.

Ya leí docenas de tutoriales sobre cómo trabajar con backbone, pero ahora estoy un poco atascado. Aquí está mi parte del código hasta ahora:

//defined earlier:
var frame;

//on click:

if ( file_frame )
{
    file_frame.open();
    return;
}
else
{
    // Create the media frame.
    file_frame  = wp.media(
    {
    frame:   'select',
    state:   'mystate',
    library:   {type: 'image'},
    multiple:   false
    });

    file_frame.states.add([

    new media.controller.Library({
        id:         'mystate',
        title: 'my title',
        priority:   20,
        toolbar:    'select',
        filterable: 'uploaded',
        library:    media.query( file_frame.options.library ),
        multiple:   file_frame.options.multiple ? 'reset' : false,
        editable:   true,
        displayUserSettings: false,
        displaySettings: true,
        allowLocalEdits: true,
          //AttachmentView: ?

    }),
    ]);

file_frame.open();

}

También he intentado registrar mi propia plantilla de esta manera:

media.view.Attachment.mySidebar = media.view.Settings.AttachmentDisplay.extend(
{
    className: 'attachment-display-settings',
    template:  media.template('avia-choose-size')
});

pero el problema es que no sé dónde cargar solo esta plantilla en lugar de la barra lateral original. pasarlo como parámetro AttachmentView obviamente no funciona ya que reemplaza toda la plantilla y no solo la barra lateral.

¿Alguien con experiencia en backbone.js que pueda ayudar?

  • probar wordpress.stackexchange.com

    – Ünsal Korkmaz

    20 de febrero de 2013 a las 18:56

  • Hola Kriesi, también tengo problemas con la nueva API de wp.media y busco la ayuda de Koop, que está detrás del código central y no responde. Aquí está mi desafío: stackoverflow.com/questions/15537480/…

    – Adal

    21 de marzo de 2013 a las 0:45

No estoy seguro de si alguna vez encontraste una respuesta a tu pregunta, pero quería que supieras que conseguí que el código anterior me funcionara simplemente arreglando las referencias a los objetos “medios” que no tenían el prefijo “wp”. Entonces… su nuevo código de estado personalizado debería verse así:

file_frame.states.add([

new wp.media.controller.Library({
    id:         'mystate',
    title: 'my title',
    priority:   20,
    toolbar:    'select',
    filterable: 'uploaded',
    library:    wp.media.query( file_frame.options.library ),
    multiple:   file_frame.options.multiple ? 'reset' : false,
    editable:   true,
    displayUserSettings: false,
    displaySettings: true,
    allowLocalEdits: true,
      //AttachmentView: ?

}),
]);

Personalmente, quería REEMPLAZAR el estado predeterminado inicial del cuadro ‘seleccionar’, que logré agregando states : 'mystate' a las opciones de file_frame, lo que hace que la inicialización regrese sin crear el estado predeterminado de ‘selección’. Y luego procedió a crear ‘mystate’ como demostró (con los dos cambios menores en la sintaxis del objeto).

¡Mi agradecimiento a usted por el liderazgo en la metodología aquí! Funcionó perfectamente, y antes estaba completamente perdido y frustrado.

  • y ahora termina mi búsqueda de 3 días. Por mi vida, nadie más publicó una solución que le permitiera abrir la opción de selección para la única imagen mostrada de esta opción de selección de publicación. ¡muchas gracias!

    – Slick Remix

    21 mayo 2014 a las 18:11

¿Ha sido útil esta solución?