2015-02-16 3 views
0

Tinymce - довольно распространенный редактор WYSIWYG, который позволяет пользователям приобретать систему управления имиджем/файлами или создавать свои собственные. Я хочу обновить систему управления контентом от tinymce 2x до 4x. В 4x изображения должны быть представлены вызову tinymce как json-объект в объявлении image_list: http://www.tinymce.com/wiki.php/Configuration:image_listjson.net объект из каталога

На основе этого формата цель состоит в том, чтобы .Net читал папку с изображением и представлял название и значение как filename и 'images/filename' каждого файла. Я работал над этим в последние несколько дней, и я сделал некоторый прогресс, но не до точки функционального образца. Похоже, что это будет то, что другие, использующие .Net и Tinymce, захотят использовать, если они откатывают свою собственную систему управления изображениями (что я должен сделать в этом случае).

Этот пример (см. Ссылку), кажется, приближается, но мой тест (см. Код ниже) возвращает нулевые значения для названия и значения. Когда я попытался включить две другие переменные в примере, я получаю сообщения об ошибках, что переменные недоступны или недоступны. Converting List of Files into JSON array in C#

Вот C# сценария Я пытаюсь использовать в создании переменной JSON ссылок изображения:

<%@ Import Namespace="Newtonsoft.Json" %> 
<script runat="server"> 

    public class FileInformation 
    { 
     [JsonProperty(PropertyName = "title")] 
     public string actualFileName {get;set;} 
     public string value {get;set;} 
    } 

    public string image_list() 
    { 

     string[] arr = new string[3]; // Initialize 
     arr[0] = ".jpg";    // Element 1 
     arr[1] = ".png";    // Element 2 
     arr[2] = ".gif";    // Element 3 

      var imgPath = Server.MapPath("~/images/"); 

      var list = new List<FileInformation>(); 

      //string[] fileNames = Directory.GetFiles(imgPath, "*", SearchOption.TopDirectoryOnly); 
      string[] fileNames = Directory.GetFiles(imgPath); 

      foreach (string filename in fileNames) 
      { 
       FileInfo fileInfo = new FileInfo(filename); 

       string actualFileName = fileInfo.Name; 
       string value = fileInfo.Name; 

       list.Add(new FileInformation(){}); 
      } 

      var yourJSONString = JsonConvert.SerializeObject(list); 
      return yourJSONString; 

    } 
... 

</script> 

Вот вызов Javascript на странице:

<script type="text/javascript"> 
    tinymce.init({ 
      image_list: '<%= image_list()%>', 
      image_class_list: [ 
       {title: 'None', value: ''}, 
       {title: 'Float Right', value: 'img_fright'} 
      ] 
    }); 

сокращенного Источник код из паттерна, где отображается image_list:

image_list: '[{"title":null,"value":null},{"title":null,"value":null},{"title":null,"value":null}]', 

Любые мысли о том, где это может пойти не так?

+0

Вы подумали о том, чтобы положить C# в код на стороне сервера за/действие контроллера (в зависимости от того, какую структуру вы используете)? И затем отлаживаем, чтобы увидеть, действительно ли в каталоге.GetFiles есть значения. –

ответ

0

Извините ... не совсем уверен, как отредактировать ответ. Это немного более понятно для использования с комментариями. Это фактически отфильтровывает определенные расширения, которые вы, вероятно, захотите сделать, и их также можно использовать для документов или медиа-списка (с некоторыми изменениями). Удачи. Я так многому научился, что хорошо отдать, когда сможешь.

public class FileInformation 
{ 
    public string title {get;set;} 
    public string value {get;set;} 
} 

public string image_list() 
{ 

    //Set up the list of acceptible extensions 
    string[] arr = new string[3]; // Initialize 
    arr[0] = ".jpg";    // Element 1 
    arr[1] = ".png";    // Element 2 
    arr[2] = ".gif";    // Element 3 

    //Declare the variable 
    var filePath = ""; 

    //Set the path 
    filePath = Server.MapPath("~/images/"); 


    //Start the string for the list 
    var list = new List<FileInformation>(); 

    //Get the filesnames from the path 
    string[] fileNames = Directory.GetFiles(filePath, "*", SearchOption.TopDirectoryOnly); 

    //Loop through each of the file names 
    foreach (string filename in fileNames) 
    { 
     //Get the information on the filename 
     FileInfo fileInfo = new FileInfo(filename); 

     //Loop through each of extension provided 
     foreach (var ext in arr) { 
      //If the extenion on the filename matches one of the list then... 
      if (fileInfo.Extension == ext) { 
       //Add the filename and location to the list in the title: filename, value: "images/filename" format 
       list.Add(new FileInformation(){ title = fileInfo.Name, value = "images/" + fileInfo.Name }); 
      } 
     } 
    } 

    //Convert the list to a JSON string using JSON.net (use the correct framework format) 
    var yourJSONString = JsonConvert.SerializeObject(list); 
    //Return the JSON string for use in the javascript call. 
    return yourJSONString; 
} 

... И ваш Javascript в файле:

<script src="//tinymce.cachefly.net/4.1/tinymce.min.js"></script> 
<script type="text/javascript"> 
tinymce.init({ 
    selector: "textarea", 
    theme: "modern", 
     encoding: 'xml', 
     convert_urls: false, 
    removed_menuitems: 'newdocument', 
    plugins: [ 
     "advlist autolink lists link image charmap print preview hr anchor pagebreak", 
     "searchreplace wordcount visualblocks visualchars code fullscreen", 
     "insertdatetime media nonbreaking save table contextmenu directionality", 
     "template paste textpattern" 
    ], 
    toolbar1: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright | bullist numlist outdent indent | link image | print preview media", 
     content_css: "", 
     style_formats: [{ title: 'Bold', inline: 'span', classes: 'Bold' }, 
      { title: 'Italic', inline: 'span', classes: 'Italic' }, 
      { title: 'Superscript', inline: 'span', classes: 'Superscript' }, 
      { title: 'Subscript', inline: 'span', classes: 'Subscript' }], 
     document_base_url: '', 

     image_list: <%= image_list()%>, 
     image_class_list: [ 
      {title: 'None', value: ''}, 
      {title: 'Float Right', value: 'img_fright'} 
     ], 
     cleanup: false, 

    image_advtab: true, 
    templates: [ 
     {title: 'Test template 1', content: '<div row><div class="col-md-6">Content</div><div class="col-md-6">Content</div></div>'}, 
     {title: 'Test template 2', content: 'Test 2'} 
    ] 
}); 

Я планирую разместить код, если я пишу JSON в файл, как я хочу, чтобы динамически иметь возможность загружать и сделать шаблоны, доступные нашим пользователям. Если у вас есть какой-либо пример, не стесняйтесь публиковать здесь. В противном случае удачи!

+0

Спасибо ... Я вижу это сейчас. Экономьте время позже. – H2O

Смежные вопросы