AntonLV 10 år sedan
förälder
incheckning
0c74a39882
35 ändrade filer med 879 tillägg och 12 borttagningar
  1. 0 0
      install/sql/system.sql
  2. 19 0
      modules/boonex/air/data/template/studio/scripts/BxTemplStudioGridStorages.php
  3. 19 0
      modules/boonex/air/data/template/studio/scripts/BxTemplStudioStorages.php
  4. 19 0
      modules/boonex/air/data/template/studio/scripts/BxTemplStudioStoragesFiles.php
  5. 19 0
      modules/boonex/air/data/template/studio/scripts/BxTemplStudioStoragesImages.php
  6. 23 0
      modules/boonex/english/data/langs/system/en.xml
  7. 19 0
      modules/boonex/ocean/data/template/studio/scripts/BxTemplStudioGridStorages.php
  8. 19 0
      modules/boonex/ocean/data/template/studio/scripts/BxTemplStudioStorages.php
  9. 19 0
      modules/boonex/ocean/data/template/studio/scripts/BxTemplStudioStoragesFiles.php
  10. 19 0
      modules/boonex/ocean/data/template/studio/scripts/BxTemplStudioStoragesImages.php
  11. 19 0
      modules/boonex/protean/data/template/studio/scripts/BxTemplStudioGridStorages.php
  12. 19 0
      modules/boonex/protean/data/template/studio/scripts/BxTemplStudioStorages.php
  13. 19 0
      modules/boonex/protean/data/template/studio/scripts/BxTemplStudioStoragesFiles.php
  14. 19 0
      modules/boonex/protean/data/template/studio/scripts/BxTemplStudioStoragesImages.php
  15. 18 0
      modules/boonex/russian/data/langs/system/ru.xml
  16. 33 0
      studio/classes/BxDolStudioGridStorages.php
  17. 59 0
      studio/classes/BxDolStudioStorages.php
  18. 28 0
      studio/classes/BxDolStudioStoragesFiles.php
  19. 28 0
      studio/classes/BxDolStudioStoragesImages.php
  20. 18 0
      studio/classes/BxDolStudioStoragesQuery.php
  21. 35 0
      studio/storages.php
  22. 0 12
      studio/template/css/builder_page.css
  23. 16 0
      studio/template/css/forms.css
  24. BIN
      studio/template/images/icons/wi-storages.png
  25. 175 0
      studio/template/scripts/BxBaseStudioGridStorages.php
  26. 92 0
      studio/template/scripts/BxBaseStudioStorages.php
  27. 19 0
      studio/template/scripts/BxBaseStudioStoragesFiles.php
  28. 30 0
      studio/template/scripts/BxBaseStudioStoragesImages.php
  29. 1 0
      studio/template/storages.html
  30. 19 0
      studio/template/strg_add_files.html
  31. 19 0
      studio/template/strg_add_images.html
  32. 12 0
      studio/template/strg_fgt_files.html
  33. 12 0
      studio/template/strg_fgt_images.html
  34. 1 0
      studio/template/strg_files.html
  35. 13 0
      studio/template/strg_images.html

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
install/sql/system.sql


+ 19 - 0
modules/boonex/air/data/template/studio/scripts/BxTemplStudioGridStorages.php

@@ -0,0 +1,19 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentView Trident Studio Representation classes
+ * @ingroup     TridentStudio
+ * @{
+ */
+defined('BX_DOL') or die('hack attempt');
+
+class BxTemplStudioGridStorages extends BxBaseStudioGridStorages
+{
+    function __construct($aOptions, $oTemplate = false)
+    {
+        parent::__construct($aOptions, $oTemplate);
+    }
+}
+/** @} */

+ 19 - 0
modules/boonex/air/data/template/studio/scripts/BxTemplStudioStorages.php

@@ -0,0 +1,19 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentView Trident Studio Representation classes
+ * @ingroup     TridentStudio
+ * @{
+ */
+defined('BX_DOL') or die('hack attempt');
+
+class BxTemplStudioStorages extends BxBaseStudioStorages
+{
+    function __construct($sType = '', $sPage = '')
+    {
+        parent::__construct($sType, $sPage);
+    }
+}
+/** @} */

+ 19 - 0
modules/boonex/air/data/template/studio/scripts/BxTemplStudioStoragesFiles.php

@@ -0,0 +1,19 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentView Trident Studio Representation classes
+ * @ingroup     TridentStudio
+ * @{
+ */
+defined('BX_DOL') or die('hack attempt');
+
+class BxTemplStudioStoragesFiles extends BxBaseStudioStoragesFiles
+{
+    function __construct($aOptions, $oTemplate = false)
+    {
+        parent::__construct($aOptions, $oTemplate);
+    }
+}
+/** @} */

+ 19 - 0
modules/boonex/air/data/template/studio/scripts/BxTemplStudioStoragesImages.php

@@ -0,0 +1,19 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentView Trident Studio Representation classes
+ * @ingroup     TridentStudio
+ * @{
+ */
+defined('BX_DOL') or die('hack attempt');
+
+class BxTemplStudioStoragesImages extends BxBaseStudioStoragesImages
+{
+    function __construct($aOptions, $oTemplate = false)
+    {
+        parent::__construct($aOptions, $oTemplate);
+    }
+}
+/** @} */

+ 23 - 0
modules/boonex/english/data/langs/system/en.xml

@@ -849,10 +849,12 @@
 	<string name="_adm_lmi_cpt_etemplates"><![CDATA[Email Templates]]></string>
 	<string name="_adm_lmi_cpt_etemplates"><![CDATA[Email Templates]]></string>
 	<string name="_adm_lmi_cpt_featured"><![CDATA[Featured]]></string>
 	<string name="_adm_lmi_cpt_featured"><![CDATA[Featured]]></string>
 	<string name="_adm_lmi_cpt_fields"><![CDATA[Fields]]></string>
 	<string name="_adm_lmi_cpt_fields"><![CDATA[Fields]]></string>
+	<string name="_adm_lmi_cpt_files"><![CDATA[Files]]></string>
 	<string name="_adm_lmi_cpt_forms"><![CDATA[Forms]]></string>
 	<string name="_adm_lmi_cpt_forms"><![CDATA[Forms]]></string>
 	<string name="_adm_lmi_cpt_general"><![CDATA[General]]></string>
 	<string name="_adm_lmi_cpt_general"><![CDATA[General]]></string>
 	<string name="_adm_lmi_cpt_goodies"><![CDATA[Storefront]]></string>
 	<string name="_adm_lmi_cpt_goodies"><![CDATA[Storefront]]></string>
 	<string name="_adm_lmi_cpt_icon"><![CDATA[Site Icon]]></string>
 	<string name="_adm_lmi_cpt_icon"><![CDATA[Site Icon]]></string>
+	<string name="_adm_lmi_cpt_images"><![CDATA[Images]]></string>
 	<string name="_adm_lmi_cpt_items"><![CDATA[Items]]></string>
 	<string name="_adm_lmi_cpt_items"><![CDATA[Items]]></string>
 	<string name="_adm_lmi_cpt_keys"><![CDATA[Keys]]></string>
 	<string name="_adm_lmi_cpt_keys"><![CDATA[Keys]]></string>
 	<string name="_adm_lmi_cpt_levels"><![CDATA[Levels]]></string>
 	<string name="_adm_lmi_cpt_levels"><![CDATA[Levels]]></string>
@@ -1003,6 +1005,7 @@
 	<string name="_adm_page_cpt_login"><![CDATA[Login]]></string>
 	<string name="_adm_page_cpt_login"><![CDATA[Login]]></string>
 	<string name="_adm_page_cpt_polyglot"><![CDATA[Polyglot]]></string>
 	<string name="_adm_page_cpt_polyglot"><![CDATA[Polyglot]]></string>
 	<string name="_adm_page_cpt_settings"><![CDATA[Settings]]></string>
 	<string name="_adm_page_cpt_settings"><![CDATA[Settings]]></string>
+	<string name="_adm_page_cpt_storages"><![CDATA[Storages]]></string>
 	<string name="_adm_page_cpt_store"><![CDATA[Apps]]></string>
 	<string name="_adm_page_cpt_store"><![CDATA[Apps]]></string>
 	<string name="_adm_pgt_btn_add_new_key"><![CDATA[Create New Key]]></string>
 	<string name="_adm_pgt_btn_add_new_key"><![CDATA[Create New Key]]></string>
 	<string name="_adm_pgt_btn_delete"><![CDATA[Delete]]></string>
 	<string name="_adm_pgt_btn_delete"><![CDATA[Delete]]></string>
@@ -1281,6 +1284,25 @@
 	<string name="_adm_str_txt_pv_version"><![CDATA[Version]]></string>
 	<string name="_adm_str_txt_pv_version"><![CDATA[Version]]></string>
 	<string name="_adm_str_txt_pv_version_mask"><![CDATA[{0} ({1} is available)]]></string>
 	<string name="_adm_str_txt_pv_version_mask"><![CDATA[{0} ({1} is available)]]></string>
 	<string name="_adm_str_txt_update_from_to"><![CDATA[{0} - {1}]]></string>
 	<string name="_adm_str_txt_update_from_to"><![CDATA[{0} - {1}]]></string>
+	
+	<string name="_adm_strg_err_cannot_process_action"><![CDATA[Cannot process action. It does not have an associated handler.]]></string>
+	<string name="_adm_strg_err_files_add"><![CDATA[Nothing to add. Please select file first.]]></string>
+	<string name="_adm_strg_err_files_delete"><![CDATA[Cannot delete file(s).]]></string>
+	<string name="_adm_strg_msg_files_delete"><![CDATA[Files were queued for deletion. They will be deleted a little bit later.]]></string>
+	<string name="_adm_strg_err_images_add"><![CDATA[Nothing to add. Please select image first.]]></string>
+	<string name="_adm_strg_err_images_delete"><![CDATA[Cannot delete image(s).]]></string>
+	<string name="_adm_strg_msg_images_delete"><![CDATA[Images were queued for deletion. They will be deleted a little bit later.]]></string>
+	<string name="_adm_strg_txt_file_name"><![CDATA[Name]]></string>
+	<string name="_adm_strg_txt_path"><![CDATA[URL]]></string>
+	<string name="_adm_strg_txt_mime_type"><![CDATA[Type]]></string>
+	<string name="_adm_strg_txt_added"><![CDATA[Date]]></string>
+	<string name="_adm_strg_btn_delete"><![CDATA[Delete]]></string>
+	<string name="_adm_strg_btn_add"><![CDATA[Add]]></string>
+	<string name="_adm_strg_btn_cancel"><![CDATA[Cancel]]></string>
+	<string name="_adm_strg_txt_download"><![CDATA[View/Download file]]></string>
+	<string name="_adm_strg_txt_files_add_popup"><![CDATA[Add File]]></string>
+	<string name="_adm_strg_txt_images_add_popup"><![CDATA[Add Image]]></string>
+	<string name="_adm_strg_txt_size_mime_type"><![CDATA[{0}x{1}, {}]]></string>
 	<string name="_adm_tmi_cpt_edit"><![CDATA[Manage Launcher]]></string>
 	<string name="_adm_tmi_cpt_edit"><![CDATA[Manage Launcher]]></string>
 	<string name="_adm_tmi_cpt_extensions"><![CDATA[Add Apps]]></string>
 	<string name="_adm_tmi_cpt_extensions"><![CDATA[Add Apps]]></string>
 	<string name="_adm_tmi_cpt_favorite"><![CDATA[Show Favorite Only]]></string>
 	<string name="_adm_tmi_cpt_favorite"><![CDATA[Show Favorite Only]]></string>
@@ -1359,6 +1381,7 @@
 	<string name="_adm_wgt_cpt_designer"><![CDATA[Designer]]></string>
 	<string name="_adm_wgt_cpt_designer"><![CDATA[Designer]]></string>
 	<string name="_adm_wgt_cpt_polyglot"><![CDATA[Polyglot]]></string>
 	<string name="_adm_wgt_cpt_polyglot"><![CDATA[Polyglot]]></string>
 	<string name="_adm_wgt_cpt_settings"><![CDATA[Settings]]></string>
 	<string name="_adm_wgt_cpt_settings"><![CDATA[Settings]]></string>
+	<string name="_adm_wgt_cpt_storages"><![CDATA[Storages]]></string>
 	<string name="_adm_wgt_cpt_store"><![CDATA[Apps]]></string>
 	<string name="_adm_wgt_cpt_store"><![CDATA[Apps]]></string>
 	<string name="_are you sure?"><![CDATA[Are you sure?]]></string>
 	<string name="_are you sure?"><![CDATA[Are you sure?]]></string>
 	<string name="_cmt_block_comments_title"><![CDATA[Comments ({0})]]></string>
 	<string name="_cmt_block_comments_title"><![CDATA[Comments ({0})]]></string>

+ 19 - 0
modules/boonex/ocean/data/template/studio/scripts/BxTemplStudioGridStorages.php

@@ -0,0 +1,19 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentView Trident Studio Representation classes
+ * @ingroup     TridentStudio
+ * @{
+ */
+defined('BX_DOL') or die('hack attempt');
+
+class BxTemplStudioGridStorages extends BxBaseStudioGridStorages
+{
+    function __construct($aOptions, $oTemplate = false)
+    {
+        parent::__construct($aOptions, $oTemplate);
+    }
+}
+/** @} */

+ 19 - 0
modules/boonex/ocean/data/template/studio/scripts/BxTemplStudioStorages.php

@@ -0,0 +1,19 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentView Trident Studio Representation classes
+ * @ingroup     TridentStudio
+ * @{
+ */
+defined('BX_DOL') or die('hack attempt');
+
+class BxTemplStudioStorages extends BxBaseStudioStorages
+{
+    function __construct($sType = '', $sPage = '')
+    {
+        parent::__construct($sType, $sPage);
+    }
+}
+/** @} */

+ 19 - 0
modules/boonex/ocean/data/template/studio/scripts/BxTemplStudioStoragesFiles.php

@@ -0,0 +1,19 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentView Trident Studio Representation classes
+ * @ingroup     TridentStudio
+ * @{
+ */
+defined('BX_DOL') or die('hack attempt');
+
+class BxTemplStudioStoragesFiles extends BxBaseStudioStoragesFiles
+{
+    function __construct($aOptions, $oTemplate = false)
+    {
+        parent::__construct($aOptions, $oTemplate);
+    }
+}
+/** @} */

+ 19 - 0
modules/boonex/ocean/data/template/studio/scripts/BxTemplStudioStoragesImages.php

@@ -0,0 +1,19 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentView Trident Studio Representation classes
+ * @ingroup     TridentStudio
+ * @{
+ */
+defined('BX_DOL') or die('hack attempt');
+
+class BxTemplStudioStoragesImages extends BxBaseStudioStoragesImages
+{
+    function __construct($aOptions, $oTemplate = false)
+    {
+        parent::__construct($aOptions, $oTemplate);
+    }
+}
+/** @} */

+ 19 - 0
modules/boonex/protean/data/template/studio/scripts/BxTemplStudioGridStorages.php

@@ -0,0 +1,19 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentView Trident Studio Representation classes
+ * @ingroup     TridentStudio
+ * @{
+ */
+defined('BX_DOL') or die('hack attempt');
+
+class BxTemplStudioGridStorages extends BxBaseStudioGridStorages
+{
+    function __construct($aOptions, $oTemplate = false)
+    {
+        parent::__construct($aOptions, $oTemplate);
+    }
+}
+/** @} */

+ 19 - 0
modules/boonex/protean/data/template/studio/scripts/BxTemplStudioStorages.php

@@ -0,0 +1,19 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentView Trident Studio Representation classes
+ * @ingroup     TridentStudio
+ * @{
+ */
+defined('BX_DOL') or die('hack attempt');
+
+class BxTemplStudioStorages extends BxBaseStudioStorages
+{
+    function __construct($sType = '', $sPage = '')
+    {
+        parent::__construct($sType, $sPage);
+    }
+}
+/** @} */

+ 19 - 0
modules/boonex/protean/data/template/studio/scripts/BxTemplStudioStoragesFiles.php

@@ -0,0 +1,19 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentView Trident Studio Representation classes
+ * @ingroup     TridentStudio
+ * @{
+ */
+defined('BX_DOL') or die('hack attempt');
+
+class BxTemplStudioStoragesFiles extends BxBaseStudioStoragesFiles
+{
+    function __construct($aOptions, $oTemplate = false)
+    {
+        parent::__construct($aOptions, $oTemplate);
+    }
+}
+/** @} */

+ 19 - 0
modules/boonex/protean/data/template/studio/scripts/BxTemplStudioStoragesImages.php

@@ -0,0 +1,19 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentView Trident Studio Representation classes
+ * @ingroup     TridentStudio
+ * @{
+ */
+defined('BX_DOL') or die('hack attempt');
+
+class BxTemplStudioStoragesImages extends BxBaseStudioStoragesImages
+{
+    function __construct($aOptions, $oTemplate = false)
+    {
+        parent::__construct($aOptions, $oTemplate);
+    }
+}
+/** @} */

+ 18 - 0
modules/boonex/russian/data/langs/system/ru.xml

@@ -847,10 +847,12 @@
 	<string name="_adm_lmi_cpt_etemplates"><![CDATA[Имейл-шаблоны]]></string>
 	<string name="_adm_lmi_cpt_etemplates"><![CDATA[Имейл-шаблоны]]></string>
 	<string name="_adm_lmi_cpt_featured"><![CDATA[Избранные]]></string>
 	<string name="_adm_lmi_cpt_featured"><![CDATA[Избранные]]></string>
 	<string name="_adm_lmi_cpt_fields"><![CDATA[Поля]]></string>
 	<string name="_adm_lmi_cpt_fields"><![CDATA[Поля]]></string>
+	<string name="_adm_lmi_cpt_files"><![CDATA[Файлы]]></string>
 	<string name="_adm_lmi_cpt_forms"><![CDATA[Формы]]></string>
 	<string name="_adm_lmi_cpt_forms"><![CDATA[Формы]]></string>
 	<string name="_adm_lmi_cpt_general"><![CDATA[Общие]]></string>
 	<string name="_adm_lmi_cpt_general"><![CDATA[Общие]]></string>
 	<string name="_adm_lmi_cpt_goodies"><![CDATA[Витрина]]></string>
 	<string name="_adm_lmi_cpt_goodies"><![CDATA[Витрина]]></string>
 	<string name="_adm_lmi_cpt_icon"><![CDATA[Иконка сайта]]></string>
 	<string name="_adm_lmi_cpt_icon"><![CDATA[Иконка сайта]]></string>
+	<string name="_adm_lmi_cpt_images"><![CDATA[Изображения]]></string>
 	<string name="_adm_lmi_cpt_items"><![CDATA[Элементы]]></string>
 	<string name="_adm_lmi_cpt_items"><![CDATA[Элементы]]></string>
 	<string name="_adm_lmi_cpt_keys"><![CDATA[Ключи]]></string>
 	<string name="_adm_lmi_cpt_keys"><![CDATA[Ключи]]></string>
 	<string name="_adm_lmi_cpt_levels"><![CDATA[Уровни]]></string>
 	<string name="_adm_lmi_cpt_levels"><![CDATA[Уровни]]></string>
@@ -1001,6 +1003,7 @@
 	<string name="_adm_page_cpt_login"><![CDATA[Войти]]></string>
 	<string name="_adm_page_cpt_login"><![CDATA[Войти]]></string>
 	<string name="_adm_page_cpt_polyglot"><![CDATA[Полиглот]]></string>
 	<string name="_adm_page_cpt_polyglot"><![CDATA[Полиглот]]></string>
 	<string name="_adm_page_cpt_settings"><![CDATA[Настройки]]></string>
 	<string name="_adm_page_cpt_settings"><![CDATA[Настройки]]></string>
+	<string name="_adm_page_cpt_storages"><![CDATA[Хранилища]]></string>
 	<string name="_adm_page_cpt_store"><![CDATA[Приложения]]></string>
 	<string name="_adm_page_cpt_store"><![CDATA[Приложения]]></string>
 	<string name="_adm_pgt_btn_add_new_key"><![CDATA[Создать Новый Ключ]]></string>
 	<string name="_adm_pgt_btn_add_new_key"><![CDATA[Создать Новый Ключ]]></string>
 	<string name="_adm_pgt_btn_delete"><![CDATA[Удалить]]></string>
 	<string name="_adm_pgt_btn_delete"><![CDATA[Удалить]]></string>
@@ -1279,6 +1282,20 @@
 	<string name="_adm_str_txt_pv_version"><![CDATA[Версия]]></string>
 	<string name="_adm_str_txt_pv_version"><![CDATA[Версия]]></string>
 	<string name="_adm_str_txt_pv_version_mask"><![CDATA[{0} ({1} доступно)]]></string>
 	<string name="_adm_str_txt_pv_version_mask"><![CDATA[{0} ({1} доступно)]]></string>
 	<string name="_adm_str_txt_update_from_to"><![CDATA[{0} - {1}]]></string>
 	<string name="_adm_str_txt_update_from_to"><![CDATA[{0} - {1}]]></string>
+	<string name="_adm_strg_err_cannot_process_action"><![CDATA[Невозможно выполнить действие. Отсутствует связанный обработчик.]]></string>
+	<string name="_adm_strg_err_files_add"><![CDATA[Нечего добавлять. Пожалуйста, выберите файл.]]></string>
+	<string name="_adm_strg_err_files_delete"><![CDATA[Не могу удалить файл(ы).]]></string>
+	<string name="_adm_strg_msg_files_delete"><![CDATA[Файлы были добавлены в очередь на удаление. Они будут удалены немного позже.]]></string>
+	<string name="_adm_strg_txt_file_name"><![CDATA[Имя]]></string>
+	<string name="_adm_strg_txt_path"><![CDATA[ЮРЛ]]></string>
+	<string name="_adm_strg_txt_mime_type"><![CDATA[Тип]]></string>
+	<string name="_adm_strg_txt_added"><![CDATA[Дата]]></string>
+	<string name="_adm_strg_btn_delete"><![CDATA[Удалить]]></string>
+	<string name="_adm_strg_btn_add"><![CDATA[Добавить]]></string>
+	<string name="_adm_strg_btn_cancel"><![CDATA[Отмена]]></string>
+	<string name="_adm_strg_txt_download"><![CDATA[Посмотреть/Скачать файл]]></string>
+	<string name="_adm_strg_txt_files_add_popup"><![CDATA[Добавить Файл]]></string>
+	<string name="_adm_strg_txt_size_mime_type"><![CDATA[{0}x{1}, {2}]]></string>
 	<string name="_adm_tmi_cpt_edit"><![CDATA[Управление Загрузчиком]]></string>
 	<string name="_adm_tmi_cpt_edit"><![CDATA[Управление Загрузчиком]]></string>
 	<string name="_adm_tmi_cpt_extensions"><![CDATA[Добавить Приложения]]></string>
 	<string name="_adm_tmi_cpt_extensions"><![CDATA[Добавить Приложения]]></string>
 	<string name="_adm_tmi_cpt_favorite"><![CDATA[Показывать только Любимые]]></string>
 	<string name="_adm_tmi_cpt_favorite"><![CDATA[Показывать только Любимые]]></string>
@@ -1357,6 +1374,7 @@
 	<string name="_adm_wgt_cpt_designer"><![CDATA[Дизайнер]]></string>
 	<string name="_adm_wgt_cpt_designer"><![CDATA[Дизайнер]]></string>
 	<string name="_adm_wgt_cpt_polyglot"><![CDATA[Полиглот]]></string>
 	<string name="_adm_wgt_cpt_polyglot"><![CDATA[Полиглот]]></string>
 	<string name="_adm_wgt_cpt_settings"><![CDATA[Настройки]]></string>
 	<string name="_adm_wgt_cpt_settings"><![CDATA[Настройки]]></string>
+	<string name="_adm_wgt_cpt_storages"><![CDATA[Хранилища]]></string>
 	<string name="_adm_wgt_cpt_store"><![CDATA[Приложения]]></string>
 	<string name="_adm_wgt_cpt_store"><![CDATA[Приложения]]></string>
 	<string name="_are you sure?"><![CDATA[Вы уверены?]]></string>
 	<string name="_are you sure?"><![CDATA[Вы уверены?]]></string>
 	<string name="_cmt_block_comments_title"><![CDATA[Комментарии ({0})]]></string>
 	<string name="_cmt_block_comments_title"><![CDATA[Комментарии ({0})]]></string>

+ 33 - 0
studio/classes/BxDolStudioGridStorages.php

@@ -0,0 +1,33 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentStudio Trident Studio
+ * @{
+ */
+
+bx_import('BxDolStudioStorages');
+
+class BxDolStudioGridStorages extends BxTemplStudioGrid
+{
+	protected $_sType;
+	protected $_aT;
+
+	protected $_sStorage;
+	protected $_oStorage;
+	protected $_sTranscoder;
+	protected $_aUploaders;
+
+    public function __construct ($aOptions, $oTemplate = false)
+    {
+        parent::__construct ($aOptions, $oTemplate ? $oTemplate : BxDolStudioTemplate::getInstance());
+
+        $this->oDb = new BxDolStudioStoragesQuery();
+
+        $this->_oStorage = BxDolStorage::getObjectInstance($this->_sStorage);
+        $this->_sTranscoder = '';
+        $this->_aUploaders = array('sys_html5');
+    }
+}
+/** @} */

+ 59 - 0
studio/classes/BxDolStudioStorages.php

@@ -0,0 +1,59 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentStudio Trident Studio
+ * @{
+ */
+
+define('BX_DOL_STUDIO_STRG_TYPE_FILES', 'files');
+define('BX_DOL_STUDIO_STRG_TYPE_IMAGES', 'images');
+
+define('BX_DOL_STUDIO_STRG_TYPE_DEFAULT', BX_DOL_STUDIO_STRG_TYPE_FILES);
+
+class BxDolStudioStorages extends BxTemplStudioPage
+{
+protected $sPage;
+
+    function __construct($sPage = "")
+    {
+        parent::__construct('storages');
+
+        $this->oDb = new BxDolStudioStoragesQuery();
+
+        $this->sPage = BX_DOL_STUDIO_STRG_TYPE_DEFAULT;
+        if(is_string($sPage) && !empty($sPage))
+            $this->sPage = $sPage;
+    }
+
+    public function init()
+	{
+        if(($sAction = bx_get('strg_action')) === false) 
+        	return;
+
+		$sAction = bx_process_input($sAction);
+
+		$aResult = array('code' => 1, 'message' => _t('_adm_strg_err_cannot_process_action'));
+		switch($sAction) {
+			case 'get-page-by-type':
+				$sValue = bx_process_input(bx_get('nav_value'));
+				if(empty($sValue))
+					break;
+
+				$this->sPage = $sValue;
+				$aResult = array('code' => 0, 'content' => $this->getPageCode());
+				break;
+
+			default:
+				$sMethod = 'action' . $this->getClassName($sAction);
+				if(method_exists($this, $sMethod))
+					$aResult = $this->$sMethod();
+		}
+
+		echo json_encode($aResult);
+		exit;
+	}
+}
+
+/** @} */

+ 28 - 0
studio/classes/BxDolStudioStoragesFiles.php

@@ -0,0 +1,28 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentStudio Trident Studio
+ * @{
+ */
+
+class BxDolStudioStoragesFiles extends BxTemplStudioGridStorages
+{
+    public function __construct ($aOptions, $oTemplate = false)
+    {
+    	$this->_sStorage = 'sys_files';
+
+        parent::__construct ($aOptions, $oTemplate);
+
+        $this->_sType = BX_DOL_STUDIO_STRG_TYPE_FILES;
+        $this->_aT = array(
+        	'err_files_add' => '_adm_strg_err_files_add',
+        	'err_files_delete' => '_adm_strg_err_files_delete',
+        	'msg_files_delete' => '_adm_strg_msg_files_delete',
+        	'txt_files_add_popup' => '_adm_strg_txt_files_add_popup',
+        );
+    }
+}
+
+/** @} */

+ 28 - 0
studio/classes/BxDolStudioStoragesImages.php

@@ -0,0 +1,28 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentStudio Trident Studio
+ * @{
+ */
+
+class BxDolStudioStoragesImages extends BxTemplStudioGridStorages
+{
+    public function __construct ($aOptions, $oTemplate = false)
+    {
+        $this->_sStorage = 'sys_images';
+
+        parent::__construct ($aOptions, $oTemplate);
+
+        $this->_sType = BX_DOL_STUDIO_STRG_TYPE_IMAGES;
+        $this->_aT = array(
+        	'err_files_add' => '_adm_strg_err_images_add',
+        	'err_files_delete' => '_adm_strg_err_images_delete',
+        	'msg_files_delete' => '_adm_strg_msg_images_delete',
+        	'txt_files_add_popup' => '_adm_strg_txt_images_add_popup',
+        );
+    }
+}
+
+/** @} */

+ 18 - 0
studio/classes/BxDolStudioStoragesQuery.php

@@ -0,0 +1,18 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentStudio Trident Studio
+ * @{
+ */
+
+class BxDolStudioStoragesQuery extends BxDolDb
+{
+    function __construct()
+    {
+        parent::__construct();
+    }
+}
+
+/** @} */

+ 35 - 0
studio/storages.php

@@ -0,0 +1,35 @@
+<?php
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentEndAdmin Trident Studio End Admin Pages
+ * @ingroup     TridentStudio
+ * @{
+ */
+
+require_once('./../inc/header.inc.php');
+require_once(BX_DIRECTORY_PATH_INC . 'design.inc.php');
+require_once(BX_DOL_DIR_STUDIO_INC . 'utils.inc.php');
+
+bx_import('BxDolLanguages');
+
+bx_require_authentication(true);
+
+$sPage = bx_get('page');
+$sPage = $sPage !== false ? bx_process_input($sPage) : '';
+
+$oPage = new BxTemplStudioStorages($sPage);
+$oPage->init();
+
+$oTemplate = BxDolStudioTemplate::getInstance();
+$oTemplate->setPageNameIndex($oPage->getPageIndex());
+$oTemplate->setPageHeader($oPage->getPageHeader());
+$oTemplate->setPageContent('page_caption_code', $oPage->getPageCaption());
+$oTemplate->setPageContent('page_attributes', $oPage->getPageAttributes());
+$oTemplate->setPageContent('page_menu_code', $oPage->getPageMenu());
+$oTemplate->setPageContent('page_main_code', $oPage->getPageCode());
+$oTemplate->addCss($oPage->getPageCss());
+$oTemplate->addJs($oPage->getPageJs());
+$oTemplate->getPageCode();
+/** @} */

+ 0 - 12
studio/template/css/builder_page.css

@@ -167,18 +167,6 @@ div.adm-bp-edit-block-form {
 }
 }
 
 
 /*--- Uploader Ghost in Popup style ---*/
 /*--- Uploader Ghost in Popup style ---*/
-div.bx-popup .bx-uploader-ghost .bx-ug-icon {
-    float: left;
-}
-
-div.bx-popup .bx-uploader-ghost .bx-ug-icon img {
-    max-height: 8rem;
-}
-div.bx-popup .bx-uploader-ghost .bx-btn {
-	float: none;
-	display: inline-block;
-	vertical-align: top; 
-}
 div.bx-popup .bx-uploader-ghost .bx-ug-content input.bx-ug-url.bx-form-input-text {
 div.bx-popup .bx-uploader-ghost .bx-ug-content input.bx-ug-url.bx-form-input-text {
     width: 18.0rem;
     width: 18.0rem;
 }
 }

+ 16 - 0
studio/template/css/forms.css

@@ -121,3 +121,19 @@ div.bx-form-input-language {
 div.bx-form-input-language-current {
 div.bx-form-input-language-current {
 	font-weight: bold;
 	font-weight: bold;
 }
 }
+
+/**
+ * Files Uploader field in popup.
+ */
+div.bx-popup .bx-uploader-ghost .bx-ug-icon {
+    float: left;
+}
+
+div.bx-popup .bx-uploader-ghost .bx-ug-icon img {
+    max-height: 8rem;
+}
+div.bx-popup .bx-uploader-ghost .bx-btn {
+	float: none;
+	display: inline-block;
+	vertical-align: top; 
+}

BIN
studio/template/images/icons/wi-storages.png


+ 175 - 0
studio/template/scripts/BxBaseStudioGridStorages.php

@@ -0,0 +1,175 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentView Trident Studio Representation classes
+ * @ingroup     TridentStudio
+ * @{
+ */
+
+class BxBaseStudioGridStorages extends BxDolStudioGridStorages
+{
+    public function __construct($aOptions, $oTemplate = false)
+    {
+        parent::__construct($aOptions, $oTemplate);
+    }
+
+	public function getCode($isDisplayHeader = true)
+    {
+        return $this->_oTemplate->parseHtmlByName('strg_' . $this->_sType . '.html', array(
+            'content' => parent::getCode($isDisplayHeader),
+            'js_object' => $this->getJsObject(),
+        	'page' => $this->_sType,
+            'grid_object' => $this->_sObject,
+            'params_divider' => $this->sParamsDivider
+        ));
+    }
+
+	public function performActionAdd()
+    {
+        $sAction = 'add';
+
+        $oForm = $this->_getFormObject($sAction);
+        $oForm->initChecker();
+        if($oForm->isSubmittedAndValid()) {
+        	$iProfileId = bx_get_logged_profile_id();
+
+        	$aFiles = $oForm->getCleanValue($this->_sType);
+        	if(!empty($aFiles) && is_array($aFiles)) {
+        		foreach($aFiles as $iFileId)
+					$this->_oStorage->updateGhostsContentId($iFileId, $iProfileId, time());
+
+                $aRes = array('grid' => $this->getCode(false), 'blink' => $aFiles);
+        	}
+            else
+                $aRes = array('msg' => _t($this->_aT['err_files_add']));
+
+            echoJson($aRes);
+        }
+        else {
+            $sContent = BxTemplStudioFunctions::getInstance()->popupBox('adm-strg-' . $this->_sType . '-add-popup', _t($this->_aT['txt_files_add_popup']), $this->_oTemplate->parseHtmlByName('strg_add_' . $this->_sType . '.html', array(
+                'form_id' => $oForm->aFormAttrs['id'],
+                'form' => $oForm->getCode(true),
+                'object' => $this->_sObject,
+                'action' => $sAction
+            )));
+
+            echoJson(array('popup' => array('html' => $sContent, 'options' => array('closeOnOuterClick' => false))));
+        }
+    }
+
+	public function performActionDelete()
+    {
+        $aIds = bx_get('ids');
+        if(!$aIds || !is_array($aIds)) {
+            echoJson(array());
+            exit;
+        }
+
+		$iAffected = $this->_oStorage->queueFilesForDeletion($aIds);
+		if($iAffected > 0)
+			$aRes = array('msg' => _t($this->_aT['msg_files_delete']), 'grid' => $this->getCode(false));
+		else 
+			$aRes = array('msg' => _t($this->_aT['err_files_delete']));
+
+        echoJson($aRes);
+    }
+
+    protected function _addJsCss()
+    {
+	    $oTemplate = BxDolStudioTemplate::getInstance();
+		foreach($this->_aUploaders as $sUploader) {
+			$oUploader = BxDolUploader::getObjectInstance($sUploader, $this->_sStorage, '', $oTemplate);
+			if($oUploader)
+				$oUploader->addCssJs();
+		}
+
+		$oForm = new BxTemplStudioFormView(array());
+        $oForm->addCssJs();
+
+        parent::_addJsCss();
+        $this->_oTemplate->addJs(array('jquery.form.min.js'));
+    }
+
+	protected function _getCellPath ($mixedValue, $sKey, $aField, $aRow)
+    {
+    	$sValue = $this->_oStorage->getFileUrlById($aRow['id']);
+    	$aValue = $this->_limitMaxLength($sValue, $sKey, $aField, $aRow, $this->_isDisplayPopupOnTextOverflow, false);
+
+        $mixedValue = $this->_oTemplate->parseHtmlByName('bx_a.html', array(
+            'href' => $sValue,
+            'title' => _t('_adm_strg_txt_download'),
+            'bx_repeat:attrs' => array(
+        		array('key' => 'target', 'value' => '_blank')
+        	),
+            'content' => $aValue[0]
+        )) . (isset($aValue[1]) ? $aValue[1] : '');
+
+        return parent::_getCellDefault($mixedValue, $sKey, $aField, $aRow);
+    }
+
+	protected function _getCellAdded($mixedValue, $sKey, $aField, $aRow)
+    {
+        return parent::_getCellDefault(bx_time_js($mixedValue), $sKey, $aField, $aRow);
+    }
+
+	protected function _getFormObject($sAction)
+    {
+    	bx_import('BxTemplStudioFormView');
+
+        $aForm = array(
+            'form_attrs' => array(
+                'id' => 'adm-strg-' . $this->_sType . '-' . $sAction,
+                'action' => BX_DOL_URL_ROOT . 'grid.php?o=' . $this->_sObject . '&a=' . $sAction,
+                'method' => BX_DOL_STUDIO_METHOD_DEFAULT
+            ),
+            'params' => array (
+                'db' => array(
+                    'table' => '',
+                    'key' => '',
+                    'uri' => '',
+                    'uri_title' => '',
+                    'submit_name' => 'do_submit'
+                ),
+            ),
+            'inputs' => array (
+                $this->_sType => array(
+					'type' => 'files',
+					'name' => $this->_sType,
+					'storage_object' => $this->_sStorage,
+					'images_transcoder' => $this->_sTranscoder,
+					'uploaders' => $this->_aUploaders,
+					'multiple' => true,
+					'content_id' => 0,
+					'ghost_template' => BxDolStudioTemplate::getInstance()->parseHtmlByName('strg_fgt_' . $this->_sType . '.html', array(
+						'name' => $this->_sType . '[]'
+					)),
+					'caption' => ''
+                ),
+                'controls' => array(
+                    'name' => 'controls',
+                    'type' => 'input_set',
+                    array(
+                        'type' => 'submit',
+                        'name' => 'do_submit',
+                        'value' => _t('_adm_strg_btn_add'),
+                    ),
+                    array (
+                        'type' => 'reset',
+                        'name' => 'close',
+                        'value' => _t('_adm_strg_btn_cancel'),
+                        'attrs' => array(
+                            'onclick' => "$('.bx-popup-applied:visible').dolPopupHide()",
+                            'class' => 'bx-def-margin-sec-left',
+                        ),
+                    )
+                )
+            )
+        );
+
+        return new BxTemplStudioFormView($aForm);
+    }
+}
+
+/** @} */

+ 92 - 0
studio/template/scripts/BxBaseStudioStorages.php

@@ -0,0 +1,92 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentView Trident Studio Representation classes
+ * @ingroup     TridentStudio
+ * @{
+ */
+
+class BxBaseStudioStorages extends BxDolStudioStorages
+{
+	protected $aStorages;
+	protected $sSubpageUrl;
+
+    function __construct($sPage = '')
+    {
+        parent::__construct($sPage);
+
+        $this->aStorages = array(
+        	BX_DOL_STUDIO_STRG_TYPE_FILES => array('icon' => 'file-o'),
+        	BX_DOL_STUDIO_STRG_TYPE_IMAGES => array('icon' => 'file-image-o')
+        );
+
+        $this->sSubpageUrl = BX_DOL_URL_STUDIO . 'storages.php?page=';
+    }
+
+	function getPageCss()
+    {
+        return array_merge(parent::getPageCss(), array());
+    }
+
+    function getPageJs()
+    {
+        return array_merge(parent::getPageJs(), array());
+    }
+
+    function getPageJsObject()
+    {
+        return '';
+    }
+
+    function getPageMenu($aMenu = array(), $aMarkers = array())
+    {
+        $aMenu = array();
+        foreach($this->aStorages as $sName => $aStorage)
+            $aMenu[] = array(
+                'name' => $sName,
+                'icon' => $aStorage['icon'],
+                'link' => $this->sSubpageUrl . $sName,
+                'title' => _t('_adm_lmi_cpt_' . $sName),
+                'selected' => $sName == $this->sPage
+            );
+
+        return parent::getPageMenu($aMenu);
+    }
+
+    function getPageCode($bHidden = false)
+    {
+        $sMethod = 'get' . ucfirst($this->sPage);
+        if(!method_exists($this, $sMethod))
+            return '';
+
+        return $this->$sMethod();
+    }
+
+	protected function getFiles()
+    {
+        return $this->getGrid(BX_DOL_STUDIO_STRG_TYPE_FILES);
+    }
+
+    protected function getImages()
+    {
+        return $this->getGrid(BX_DOL_STUDIO_STRG_TYPE_IMAGES);
+    }
+
+	protected function getGrid($sName)
+    {
+        $oGrid = BxDolGrid::getObjectInstance('sys_studio_strg_' . $sName);
+        if(!$oGrid)
+            return '';
+
+        return BxDolStudioTemplate::getInstance()->parseHtmlByName('storages.html', array(
+            'js_object' => $this->getPageJsObject(),
+            'content' => $this->getBlockCode(array(
+				'items' => $oGrid->getCode()
+			))
+        ));
+    }
+}
+
+/** @} */

+ 19 - 0
studio/template/scripts/BxBaseStudioStoragesFiles.php

@@ -0,0 +1,19 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentView Trident Studio Representation classes
+ * @ingroup     TridentStudio
+ * @{
+ */
+
+class BxBaseStudioStoragesFiles extends BxDolStudioStoragesFiles
+{
+    function __construct($aOptions, $oTemplate = false)
+    {
+        parent::__construct($aOptions, $oTemplate);
+    }
+}
+
+/** @} */

+ 30 - 0
studio/template/scripts/BxBaseStudioStoragesImages.php

@@ -0,0 +1,30 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    TridentView Trident Studio Representation classes
+ * @ingroup     TridentStudio
+ * @{
+ */
+
+class BxBaseStudioStoragesImages extends BxDolStudioStoragesImages
+{
+    function __construct($aOptions, $oTemplate = false)
+    {
+        parent::__construct($aOptions, $oTemplate);
+    }
+
+	protected function _getCellMimeType($mixedValue, $sKey, $aField, $aRow)
+    {
+    	$iWidth = $iHeight = 0;
+
+    	$sFileUrl = $this->_oStorage->getFileUrlById($aRow['id']);
+    	if(!empty($sFileUrl))
+    		list($iWidth, $iHeight) = @getimagesize($sFileUrl);
+
+        return parent::_getCellDefault(_t('_adm_strg_txt_size_mime_type', (int)$iWidth, (int)$iHeight, $mixedValue), $sKey, $aField, $aRow);
+    }
+}
+
+/** @} */

+ 1 - 0
studio/template/storages.html

@@ -0,0 +1 @@
+__content__

+ 19 - 0
studio/template/strg_add_files.html

@@ -0,0 +1,19 @@
+<div class="bx-strg-add-file bx-def-color-bg-block">
+    <div class="bx-strg-add-file-cnt">
+        __form__
+        <script type="text/javascript">
+            $(document).ready(function () {
+                $("#__form_id__").ajaxForm({ 
+                    dataType: "json",
+                    beforeSubmit: function (formData, jqForm, options) {
+                        bx_loading($("#__form_id__"), true);
+                    },
+                    success: function (data) {
+                        $(".bx-popup-applied:visible").dolPopupHide();
+                        glGrids.__object__.processJson(data, '__action__');
+                    }
+                });
+            });
+        </script>
+    </div>
+</div>

+ 19 - 0
studio/template/strg_add_images.html

@@ -0,0 +1,19 @@
+<div class="bx-strg-add-file bx-def-color-bg-block">
+    <div class="bx-strg-add-file-cnt">
+        __form__
+        <script type="text/javascript">
+            $(document).ready(function () {
+                $("#__form_id__").ajaxForm({ 
+                    dataType: "json",
+                    beforeSubmit: function (formData, jqForm, options) {
+                        bx_loading($("#__form_id__"), true);
+                    },
+                    success: function (data) {
+                        $(".bx-popup-applied:visible").dolPopupHide();
+                        glGrids.__object__.processJson(data, '__action__');
+                    }
+                });
+            });
+        </script>
+    </div>
+</div>

+ 12 - 0
studio/template/strg_fgt_files.html

@@ -0,0 +1,12 @@
+<div id="bx-uploader-file-{storage_object}-{file_id}" class="bx-uploader-ghost bx-def-margin-sec-top bx-clearfix">
+    <input type="hidden" name="__name__" value="{file_id}" />
+    <div class="bx-ug-icon bx-def-margin-sec-right">
+        <img src="{file_icon}" class="bx-def-round-corners bx-base-text-icon bx-base-text-icon-{file_id}" />
+    </div>
+    <div class="bx-ug-content">
+    	<div class="bx-uploader-ghost-form-filename bx-def-font-grayed">{file_name}</div>
+        <div class="bx-def-padding-top">
+	        <a class="bx-btn bx-btn-small bx-def-margin-sec-right" href="javascript:void(0);" onclick="javascript: {js_instance_name}.deleteGhost('{file_id}');"><bx_text:_sys_txt_form_entry_input_picture_delete /></a>
+		</div>
+    </div>
+</div>

+ 12 - 0
studio/template/strg_fgt_images.html

@@ -0,0 +1,12 @@
+<div id="bx-uploader-file-{storage_object}-{file_id}" class="bx-uploader-ghost bx-def-margin-sec-top bx-clearfix">
+    <input type="hidden" name="__name__" value="{file_id}" />
+    <div class="bx-ug-icon bx-def-margin-sec-right">
+        <img src="{file_icon}" class="bx-def-round-corners bx-base-text-icon bx-base-text-icon-{file_id}" />
+    </div>
+    <div class="bx-ug-content">
+    	<div class="bx-uploader-ghost-form-filename bx-def-font-grayed">{file_name}</div>
+        <div class="bx-def-padding-top">
+	        <a class="bx-btn bx-btn-small bx-def-margin-sec-right" href="javascript:void(0);" onclick="javascript: {js_instance_name}.deleteGhost('{file_id}');"><bx_text:_sys_txt_form_entry_input_picture_delete /></a>
+		</div>
+    </div>
+</div>

+ 1 - 0
studio/template/strg_files.html

@@ -0,0 +1 @@
+__content__

+ 13 - 0
studio/template/strg_images.html

@@ -0,0 +1,13 @@
+__content__
+<!--
+//TODO: Delete this code if JS class isn't needed.
+<script type="text/javascript">
+    var __js_object__ = new BxDolStudioStoragesFiles({
+        sActionUrl: '<bx_url_root />grid.php',
+        sPageUrl: '<bx_url_studio />storages.php?page=__page__',
+        sObjNameGrid: '__grid_object__',
+        sParamsDivider: '__params_divider__',
+        sTextSearchInput: '<bx_text_js:_sys_grid_search />'
+    });
+</script>
+-->

Vissa filer visades inte eftersom för många filer har ändrats