]>
git.immae.eu Git - perso/Immae/Projets/packagist/connexionswing-ckeditor-component.git/blob - sources/plugins/imagebrowser/browser/browser.js
1 var CkEditorImageBrowser
= {};
3 CkEditorImageBrowser
.folders
= [];
4 CkEditorImageBrowser
.images
= {}; //folder => list of images
5 CkEditorImageBrowser
.ckFunctionNum
= null;
7 CkEditorImageBrowser
.$folderSwitcher
= null;
8 CkEditorImageBrowser
.$imagesContainer
= null;
10 CkEditorImageBrowser
.init = function () {
11 CkEditorImageBrowser
.$folderSwitcher
= $('#js-folder-switcher');
12 CkEditorImageBrowser
.$imagesContainer
= $('#js-images-container');
14 var baseHref
= CkEditorImageBrowser
.getQueryStringParam("baseHref");
16 var h
= (document
.head
|| document
.getElementsByTagName("head")[0]),
17 el
= h
.getElementsByTagName("link")[0];
18 el
.href
= location
.href
.replace(/\/[^\/]*$/,"/browser.css");
19 (h
.getElementsByTagName("base")[0]).href
= baseHref
;
22 CkEditorImageBrowser
.ckFunctionNum
= CkEditorImageBrowser
.getQueryStringParam('CKEditorFuncNum');
24 CkEditorImageBrowser
.initEventHandlers();
26 CkEditorImageBrowser
.loadData(CkEditorImageBrowser
.getQueryStringParam('listUrl'), function () {
27 CkEditorImageBrowser
.initFolderSwitcher();
31 CkEditorImageBrowser
.loadData = function (url
, onLoaded
) {
32 CkEditorImageBrowser
.folders
= [];
33 CkEditorImageBrowser
.images
= {};
35 $.getJSON(url
, function (list
) {
36 $.each(list
, function (_idx
, item
) {
37 if (typeof(item
.folder
) === 'undefined') {
38 item
.folder
= 'Images';
41 if (typeof(item
.thumb
) === 'undefined') {
42 item
.thumb
= item
.image
;
45 CkEditorImageBrowser
.addImage(item
.folder
, item
.image
, item
.thumb
);
49 }).error(function(jqXHR
, textStatus
, errorThrown
) {
51 if (jqXHR
.status
< 200 || jqXHR
.status
>= 400) {
52 errorMessage
= 'HTTP Status: ' + jqXHR
.status
+ '/' + jqXHR
.statusText
+ ': "<strong style="color: red;">' + url
+ '</strong>"';
53 } else if (textStatus
=== 'parsererror') {
54 errorMessage
= textStatus
+ ': invalid JSON file: "<strong style="color: red;">' + url
+ '</strong>": ' + errorThrown
.message
;
56 errorMessage
= textStatus
+ ' / ' + jqXHR
.statusText
+ ' / ' + errorThrown
.message
;
58 CkEditorImageBrowser
.$imagesContainer
.html(errorMessage
);
62 CkEditorImageBrowser
.addImage = function (folderName
, imageUrl
, thumbUrl
) {
63 if (typeof(CkEditorImageBrowser
.images
[folderName
]) === 'undefined') {
64 CkEditorImageBrowser
.folders
.push(folderName
);
65 CkEditorImageBrowser
.images
[folderName
] = [];
68 CkEditorImageBrowser
.images
[folderName
].push({
74 CkEditorImageBrowser
.initFolderSwitcher = function () {
75 var $switcher
= CkEditorImageBrowser
.$folderSwitcher
;
77 $switcher
.find('li').remove();
79 $.each(CkEditorImageBrowser
.folders
, function (idx
, folderName
) {
80 var $option
= $('<li></li>').data('idx', idx
).text(folderName
);
81 $option
.appendTo($switcher
);
85 if (CkEditorImageBrowser
.folders
.length
=== 0) {
87 CkEditorImageBrowser
.$imagesContainer
.text('No images.');
89 if (CkEditorImageBrowser
.folders
.length
=== 1) {
93 $switcher
.find('li:first').click();
97 CkEditorImageBrowser
.renderImagesForFolder = function (folderName
) {
98 var images
= CkEditorImageBrowser
.images
[folderName
],
99 templateHtml
= $('#js-template-image').html();
101 CkEditorImageBrowser
.$imagesContainer
.html('');
103 $.each(images
, function (_idx
, imageData
) {
104 var html
= templateHtml
;
105 html
= html
.replace('%imageUrl%', imageData
.imageUrl
);
106 html
= html
.replace('%thumbUrl%', imageData
.thumbUrl
);
108 var $item
= $($.parseHTML(html
));
110 CkEditorImageBrowser
.$imagesContainer
.append($item
);
114 CkEditorImageBrowser
.initEventHandlers = function () {
115 $(document
).on('click', '#js-folder-switcher li', function () {
116 var idx
= parseInt($(this).data('idx'), 10),
117 folderName
= CkEditorImageBrowser
.folders
[idx
];
119 $(this).siblings('li').removeClass('active');
120 $(this).addClass('active');
122 CkEditorImageBrowser
.renderImagesForFolder(folderName
);
125 $(document
).on('click', '.js-image-link', function () {
126 window
.opener
.CKEDITOR
.tools
.callFunction(CkEditorImageBrowser
.ckFunctionNum
, $(this).data('url'));
131 CkEditorImageBrowser
.getQueryStringParam = function (name
) {
132 var regex
= new RegExp('[?&]' + name
+ '=([^&]*)'),
133 result
= window
.location
.search
.match(regex
);
135 return (result
&& result
.length
> 1 ? decodeURIComponent(result
[1]) : null);