2015-05-20 2 views
0

Я думаю, что мой вопрос очень конкретный. То, что я делаю прямо сейчас, - это создать простой список событий, в которых вы можете щелкнуть каждый из них в календаре (iCal, Календарь Google, Календарь Live и т. Д.). Для этого я использую addToCalentar, но в этом коде есть что-то странное.Сила для загрузки файла .ics

Когда я выбираю iCal, предполагается загрузить файл ics, но плагин откроет новую вкладку браузера, в которой показан сам файл. Все остальные параметры работают очень хорошо, потому что их нужно открывать в новом окне. Но муй вопрос. Где я могу изменить исходный код, чтобы загружать только файл, если пользователь выбирает опцию «iCal»?

Это мой HTML:

<div class="addtocal"> 
    <div>01/04/2015 <span title="invite.ics"></span> </div> 
</div> 

Это мой плагин Конфигурация:

$('.addtocal').AddToCal({ 
     icalEnabled:true, 
     vcalEnabled:false, 

     getEventDetails: function(element) { 
     var 
      dtstart_element = element.find('.dtstart'), start, 
      dtend_element = element.find('.dtend'), end, 
      title_element = element.find('.summary'), title, 
      details_element = element.find('.description'), details, 
      ics_element = element.find('.ics'), ics; 



     start = dtstart_element.length ? dtstart_element.attr('title') : new Date(); 

     if(dtend_element.length) { 
      end = dtend_element.attr('title'); 

     } else { 

      end = new Date(); 
      end.setTime(end.getTime() + 60 * 60 * 1000); 

     } 

     title = title_element.length ? title_element.html() : element.attr('id'); 
     details = details_element.length ? details_element.html() : element.html(); 

     ics = ics_element.attr('title'); 

     // return the required event structure 
     return { 
      webcalurl: null, 
      icalurl: ics, 
      vcalurl: null, 
      start: start, 
      end: end, 
      title: title, 
      details: details, 
      location: null, 
      url: null 
      }; 
     }, 
    }); 

Это ссылка плагин:

https://github.com/tardate/jquery.addtocalendar/blob/master/jquery.addtocal.js

Что я работаю, это изменение этого метода, чтобы определить, является ли item.label iCal. Я могу добавить <a download>...</>, но не работает.

_renderItem: function(ul, item) { 

     return $("<li></li>") 
     .data("item.addtocal", item) 
     .append($("<a></a>").text(item.label)) 
     .appendTo(ul); 
    }, 

ответ

2

Чтобы заставить ваш браузер, чтобы загрузить файл, а не читать его, вы можете дать ему FileType заголовок, который заставит его загрузить.

Если у вас нет файла .htaccess еще, сделайте один в папку WebRoot, и добавить:

AddType application/octet-stream .ics

Это заставит браузеры скачать * Микросхемы файлы вместо того, чтобы показывать их.

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