Staff en línea

Página 4 de 4. Precedente  1, 2, 3, 4

[beta] Edición ajax con editor avanzado sin cambiar de página v 2.0
Tema iniciado por y Añadir a favoritos

staff


Última edición por Chalo el Dom Jul 30, 2017 2:34 pm, editado 17 veces
Recuerdo del primer mensaje :

[codebox]Nueva forma de editar via ajax, usando el propio editor de la respuesta rápida, es un code más ligero que el que hizo el buen JScript, no requiere volver a cargar el css y el js de sceditor, esta versión funciona en phpbb3, invision y punbb

[/codebox]
[alert]Nota: debes tener permitido el uso de formularios externos en tu PA dentro del apartado seguridad.[/alert]
[info]version 2.01 - Actualizado 29/07/17[/info]

Código:

var edit = {
    init: function () {
        this.form = document.forms.post;
        this.button = this.form.preview;
        this.button_send = this.form.post;
        this.sceditor = $(this.form.message).sceditor('instance');
        this.click();
    },
    lang: {
        save: 'Guardar',
        notice_original: 'No hay texto predefinido',
        editing: 'Estas editando el post #',
        wait: 'Por favor se paciente, se esta enviando texto al servidor...',
        color_a: 'linear-gradient(to bottom, #febbbb 0%,#fe9090 45%,#ff5c5c 100%)',
        color_b: 'linear-gradient(to bottom, #ffaf4b 0%,#ff920a 100%)',
        color_c: 'linear-gradient(to bottom, #87e0fd 0%,#53cbf1 40%,#05abe0 100%)',
        color_d: 'linear-gradient(to bottom, #ff3019 0%,#cf0404 100%)',
        color_e: 'linear-gradient(to bottom, #d2ff52 0%,#91e842 100%)'
    },
    click: function () {
        var a = document.getElementsByTagName('a'),
            len = a.length;
        for (var i = 0; i < len; i++) {
            a[i].href.match(/post\?p=(\d+)&mode=editpost/g) && (a[i].setAttribute('onclick', 'edit.edit(this.href, edit.closest(this, \'.post\'));return false'));
        }
    },
    edit: function (d, f) {
        edit.sceditor.updateOriginal();
        if (this.sceditor.val() != '') {
            alert('Para editar no debes tener contenido en el editor')
        } else {
            this.XML('', d, function (x) {
                var o = x.responseXML,
                    a = o.forms.post.message,
                    e = o.forms.post.subject.value,
                    b = document.createElement('input');
                edit.sceditor.val(a.value);
                edit.sC(edit.form, 300);
                b.value = edit.lang.save;
                b.type = 'submit';
                b.id = 'save';
                b.className = 'button';
                b.setAttribute('onclick', 'edit.save(this); return false');
                b.style.marginLeft = '20px';
                edit.button.parentNode.insertBefore(b, edit.button.nextSibling);
                edit.button_send.style.display = 'none';
                edit.url = d;
                edit.subject = e;
                edit.post = f;
                edit.id = edit.url.match(/p=(\d+)/)[1];
                edit.notice(edit.lang.editing + edit.id, edit.lang.color_c, 'on');
            });
        }
    },
    save: function (e) {
        var b,
            a = encodeURIComponent(this.sceditor.val()),
            c = encodeURIComponent(this.subject),
            p = 'message=' + a + '&subject=' + c + '&post=1&prevent_post=1&notify=1';
        e.value = 'Guardando';
        this.notice(edit.lang.wait, edit.lang.color_b, 'off', 1000);
        this.cover('Guardando...');
        this.XML(p, edit.url, function (x) {
            b = document.getElementById('save');
            b && b.parentNode.removeChild(b);
            edit.button_send.style.display = 'initial';
            edit.sceditor.val('');
            edit.cover(false);
            edit.XML('', document.location.href, function (x) {
                var o = x.responseXML,
                    a = o.getElementsByClassName('post--' + edit.id),
                    b = a.length && a[0].innerHTML;
                edit.post.innerHTML = b;
                edit.sC(edit.post, 300);
                edit.click()
            })
        })
    },
    closest: function (t, e) {
        var n;
        ['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'].some(function (t) {
            return 'function' == typeof document.body[t] ? (n = t, !0) : !1
        });
        for (var r; t;) {
            if (r = t.parentElement, r && r[n](e)) return r;
            t = r
        }
        return null
    },
    cover: function (c) {
        var a = document.getElementsByClassName('sceditor-resize-cover')[0];
        a.style.display = c != false ? 'block' : 'none';
        a.innerHTML = c != false ? c : '';
        if (c != false) {
            a.style.color = '#fff';
            a.style.fontSize = '20px';
            a.style.lineHeight = '12';
            a.style.textAlign = 'center'
        }
    },
    notice: function (e, t, a, b) {
        var o, n, s, l, i;
        b = 'undefined' != typeof b ? b : '1000';
        i = document.getElementsByClassName('notice_reply');
        n = document.getElementsByClassName('sceditor-group')[0];
        s = n.parentNode, o = i.length ? i[0] : document.createElement('DIV');
        l = 'height:20px;line-height: 1.5;border-radius: 3px; text-shadow: 0 1px rgba(255, 255, 255, 0.46)';
        !i.length && (o.classList.add('notice_reply'), o.style.cssText = l, s.insertBefore(o, n));
        o.style.display = 'block';
        o.innerHTML = 'undefined' == typeof e ? edit.lang.notice_original : e;
        o.style.background = 'undefined' == typeof t ? edit.lang.color_a : t;
        if (a == 'off') {
            setTimeout(function () {
                'block' == o.style.display && (o.style.display = 'none')
            }, b)
        }
    },
    sC: function (o, e, t, s) {
        e = e || 500, s = s || window;
        var a = o.clientHeight < 150 ? o.clientHeight * 2 : o.clientHeight < 300 ? o.clientHeight : o.clientHeight > 400 && '',
            n = s.scrollTop - a || window.pageYOffset - a;
        if ('number' == typeof o) var r = parseInt(o);
        else var r = edit.gT(o, n);
        var l = Date.now(),
            i = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function (o) {
                window.setTimeout(o, 15)
            },
            a = function () {
                var c = Date.now() - l;
                s !== window ? s.scrollTop = edit.pS(n, r, c, e) : window.scroll(0, edit.pS(n, r, c, e)), c > e ? 'function' == typeof t && t(o) : i(a)
            };
        a()
    },
    eC: function (t) {
        return t < .5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1
    },
    pS: function (o, e, s, r) {
        return o + (e - o) * edit.eC(s / r)
    },
    gT: function (o, e) {
        return 'HTML' === o.nodeName ? -e : o.getBoundingClientRect().top + e
    },
    XML: function (a, b, f) {
        var c;
        c = window.XMLHttpRequest ? new XMLHttpRequest : window.ActiveXObject && (new ActiveXObject('Microsoft.XMLHTTP'));
        'undefined' != typeof a ? c.open('POST', b) : c.open('GET', b, true);
        c.responseType = 'document';
        c.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        c.send('undefined' != typeof a ? a : '');
        c.onreadystatechange = function () {
            this.readyState == 4 && this.status == 200 && (f(this));
        };
    }
};
document.addEventListener('DOMContentLoaded', function () {
    /\/?t\d+.*/.test(window.location.pathname) && document.getElementById('logout') && edit.init();
});

Chalo
Chalo

¿Que estoy pensando? :

jugando con un ping de 999 [table class=fecha_up][td]Se modifico:25/05/20 - 10:57 hrs. [/td][/table]


Banner en temas :

https://i.imgur.com/ikntDYIh.jpeg


Color de titulos :

#fff


Sombra titulo :

0 0 1px #000


Mensajes :

7134


Puntos :

9266


Me gusta :

1063


ingreso :

17/04/2014


Sexo :

Masculino

Plataforma :

phpbb3


Navegador :

chrome


https://www.opensourcephpbb3.com

Volver arriba Ir abajo

Gracias Chalo es perfecto thumbs
fascicularia
fascicularia

¿Que estoy pensando? :

Escribe lo que tienes en mente [table class=fecha_up][td]Se modifico:10/7/15 - 15:25 hrs.[/td][/table]


Banner en temas :

http://davesgarden.com/guides/pf/thumbnail.php?image=2006/10/11/Calif_Sue/aad8bf.jpg


Color de titulos :

#576d00


Sombra titulo :

1px 1px 1px #fff


Mensajes :

237


Puntos :

282


Me gusta :

29


ingreso :

20/01/2016


Sexo :

Femenino

Plataforma :

PhpBB2


Navegador :

Opera


Volver arriba Ir abajo

Hola @Chalo,
mis miembros vienen a mi atención que en el modo de vista previa, el mensaje se duplica en el momento del envío.
fascicularia
fascicularia

¿Que estoy pensando? :

Escribe lo que tienes en mente [table class=fecha_up][td]Se modifico:10/7/15 - 15:25 hrs.[/td][/table]


Banner en temas :

http://davesgarden.com/guides/pf/thumbnail.php?image=2006/10/11/Calif_Sue/aad8bf.jpg


Color de titulos :

#576d00


Sombra titulo :

1px 1px 1px #fff


Mensajes :

237


Puntos :

282


Me gusta :

29


ingreso :

20/01/2016


Sexo :

Femenino

Plataforma :

PhpBB2


Navegador :

Opera


Volver arriba Ir abajo

Buenos días a todos,

funciona muy bien en phpbb2.

Chalo, sería posible que el script actúe solo en el segundo mensaje para dejar la posibilidad al autor del tema de modificar el título?
fascicularia
fascicularia

¿Que estoy pensando? :

Escribe lo que tienes en mente [table class=fecha_up][td]Se modifico:10/7/15 - 15:25 hrs.[/td][/table]


Banner en temas :

http://davesgarden.com/guides/pf/thumbnail.php?image=2006/10/11/Calif_Sue/aad8bf.jpg


Color de titulos :

#576d00


Sombra titulo :

1px 1px 1px #fff


Mensajes :

237


Puntos :

282


Me gusta :

29


ingreso :

20/01/2016


Sexo :

Femenino

Plataforma :

PhpBB2


Navegador :

Opera


Volver arriba Ir abajo

[alert]Recuerda ¿por qué se publica en la sección Beta?
Son códigos que están en fase experimental y puede que su funcionamiento no sea del todo correcto o compatible. Publica un tema en la sección de Soporte.[/alert]
Fibo
Fibo

¿Que estoy pensando? :

No dejes de pensar. [table class=fecha_up][td]Se modifico:3/02/20 - 15:14 hrs. [/td][/table]


Banner en temas :

https://i.imgur.com/zVxw0kMh.png


Color de titulos :

#fff


Sombra titulo :

1px 1px 1px #fff


Mensajes :

667


Puntos :

2033


Me gusta :

210


ingreso :

11/09/2015


Sexo :

Masculino

Plataforma :

PhpBB3


Navegador :

Chrome


http://www.opensourcephpbb3.com

Volver arriba Ir abajo

Excelente Chalo, lo he probado y funciona, he tenido que poner individualmente los codes para citar y editar porque el code que tienes a full que permite citar, editar y eliminar (todo en uno) hacia conflicto con un code que tengo para responder automaticamente dando clic a un boton. Ahora solo me falta un code para eliminar post en ajax, voy a ver si lo teneis por aqui...Gracias de nuevo.
citrato
citrato

¿Que estoy pensando? :

Escribe lo que tienes en mente [table class=fecha_up][td]Se modifico:10/7/15 - 15:25 hrs.[/td][/table]


Banner en temas :

https://2img.net/h/oi64.tinypic.com/2i8tzma.jpg


Color de titulos :

#333


Sombra titulo :

1px 1px 1px #fff


Mensajes :

102


Puntos :

130


Me gusta :

8


ingreso :

13/05/2020


Sexo :

Masculino

Plataforma :

PhpBB3


Navegador :

Chrome


Volver arriba Ir abajo

 En la misma categoria


Permisos de este foro:
No puedes responder a temas en este foro.