Веб-разметка «WMD» и как реализовать функцию загрузки изображений - PullRequest
4 голосов
/ 13 августа 2011

Я разрабатываю сайт, который использует инструменты MarkDown и WMD javascript, которые в настоящее время обслуживают изображения, которые уже размещены, но я хотел бы иметь возможность предлагать возможность загрузки изображений в WMD, как в случае переполнения стека, но нене знаю, как это сделать.

Кто-нибудь знает, как это можно реализовать?Мой сайт разрабатывается с использованием ASP.NET MVC, и я в порядке с серверной стороной загрузки изображения и т. Д., Но это как подключить это к редактору javascript WMD (и, возможно, к его элементу AJAX), который язастрял.

1 Ответ

1 голос
/ 14 августа 2011

Мы недавно выпустили нашу переработанную версию ОМУ; Вы можете найти его в http://code.google.com/p/pagedown/.

Все, что является нестандартным в использовании переполнения стека, теперь происходит через перехваты плагинов, и это включает в себя загрузчик файлов. Таким образом, вы можете просто использовать тот же хук для реализации этого. Взгляните на документацию ; часть «подключения» сводится к следующему:

editor.hooks.set("insertImageDialog", function (callback) {
    var dia = createMyDialog();
    dia.find(".ok-button").click(function () {
        var url = getChosenImageUrl();
        removeMyDialog();
        callback(url);
    });
    dia.find(".cancel-button").click(function () {
        removeMyDialog();
        callback(null);
    });
    return true; // tell the editor not to show the standard dialog
});

Что касается фактической загрузки, в настоящее время мы используем довольно уродливое решение, которое работает так:

  • Фактическая форма загрузки файла имеет атрибут target со скрытым iframe, поэтому отправка формы не приводит к переходу на другую страницу.
  • В глобальном объекте определена функция, которая удаляет диалог и вызывает обратный вызов. Это уродливая часть; этот метод совсем не чистый, но работает нормально.
  • Действие контроллера загрузки возвращает минимальный HTML-документ с фрагментом кода JavaScript, который вызывает эту функцию (с помощью window.parent, поскольку нам нужно вырваться из iframe - обратите внимание, что для этого требуется, чтобы URL загрузки имел такой же origin как страница!) с адресом вновь созданного изображения.

Если вы собираетесь реализовать это аналогичным образом, взгляните на этот пост в Meta Stack Overflow относительно неприятной ошибки Chrome, которая может появиться, и обходного пути для нее.

...