git-svn-id: https://svn.typo3.org/TYPO3v4/Extensions/wt_gallery/trunk@18743 735d13b6... master
authorwunschtacho <wunschtacho@735d13b6-9817-0410-8766-e36946ffe9aa>
Mon, 6 Apr 2009 11:20:39 +0000 (11:20 +0000)
committerwunschtacho <wunschtacho@735d13b6-9817-0410-8766-e36946ffe9aa>
Mon, 6 Apr 2009 11:20:39 +0000 (11:20 +0000)
34 files changed:
be/flexform_ds_pi1.xml [new file with mode: 0644]
doc/manual.sxw [new file with mode: 0644]
ext_emconf.php [new file with mode: 0644]
ext_icon.gif [new file with mode: 0644]
ext_localconf.php [new file with mode: 0644]
ext_tables.php [new file with mode: 0644]
ext_typoscript_constants.txt [new file with mode: 0644]
ext_typoscript_setup.txt [new file with mode: 0644]
files/css/wtgallery_example.css [new file with mode: 0644]
files/css/wtgallery_main.css [new file with mode: 0644]
files/static/setup.txt [new file with mode: 0644]
files/swf/cooliris.swf [new file with mode: 0644]
lib/class.tx_wtgallery_category_pagebrowser.php [new file with mode: 0644]
lib/class.tx_wtgallery_coolirisrss.php [new file with mode: 0644]
lib/class.tx_wtgallery_div.php [new file with mode: 0644]
lib/class.tx_wtgallery_dynamicmarkers.php [new file with mode: 0644]
lib/class.tx_wtgallery_list_pagebrowser.php [new file with mode: 0644]
lib/user_wtgallery_category_pagebrowser.php [new file with mode: 0644]
lib/user_wtgallery_list_pagebrowser.php [new file with mode: 0644]
locallang.xml [new file with mode: 0644]
locallang_db.xml [new file with mode: 0644]
pi1/ce_wiz.gif [new file with mode: 0644]
pi1/class.tx_wtgallery_category.php [new file with mode: 0644]
pi1/class.tx_wtgallery_cooliris.php [new file with mode: 0644]
pi1/class.tx_wtgallery_list.php [new file with mode: 0644]
pi1/class.tx_wtgallery_pi1.php [new file with mode: 0644]
pi1/class.tx_wtgallery_pi1_wizicon.php [new file with mode: 0644]
pi1/class.tx_wtgallery_single.php [new file with mode: 0644]
pi1/clear.gif [new file with mode: 0644]
pi1/locallang.xml [new file with mode: 0644]
templates/category.html [new file with mode: 0644]
templates/cooliris.html [new file with mode: 0644]
templates/list.html [new file with mode: 0644]
templates/single.html [new file with mode: 0644]

diff --git a/be/flexform_ds_pi1.xml b/be/flexform_ds_pi1.xml
new file mode 100644 (file)
index 0000000..8a7000f
--- /dev/null
@@ -0,0 +1,338 @@
+<T3DataStructure>\r
+       <meta>\r
+               <langDisable>1</langDisable>\r
+       </meta>\r
+       <sheets>\r
+               <main>\r
+                       <ROOT>\r
+                               <TCEforms>\r
+                                       <sheetTitle>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.sheet_main</sheetTitle>\r
+                               </TCEforms>\r
+                               <type>array</type>\r
+                               <el>\r
+                                       <mode>\r
+                                               <TCEforms>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.mode</label>\r
+                                                       <config>\r
+                                                               <type>select</type>\r
+                                                               <items type="array">\r
+                                                                       <numIndex index="0" type="array">\r
+                                                                               <numIndex index="0">LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.mode.0</numIndex>\r
+                                                                               <numIndex index="1">single</numIndex>\r
+                                                                       </numIndex>\r
+                                                                       <numIndex index="1" type="array">\r
+                                                                               <numIndex index="0">LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.mode.1</numIndex>\r
+                                                                               <numIndex index="1">list</numIndex>\r
+                                                                       </numIndex>\r
+                                                                       <!--\r
+                                                                       <numIndex index="2" type="array">\r
+                                                                               <numIndex index="0">LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.mode.2</numIndex>\r
+                                                                               <numIndex index="1">latest</numIndex>\r
+                                                                       </numIndex>\r
+                                                                       -->\r
+                                                                       <numIndex index="3" type="array">\r
+                                                                               <numIndex index="0">LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.mode.3</numIndex>\r
+                                                                               <numIndex index="1">category</numIndex>\r
+                                                                       </numIndex>\r
+                                                                       <numIndex index="4" type="array">\r
+                                                                               <numIndex index="0">LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.mode.4</numIndex>\r
+                                                                               <numIndex index="1">cooliris</numIndex>\r
+                                                                       </numIndex>\r
+                                                               </items>\r
+                                                               <maxitems>100</maxitems>\r
+                                                               <size>4</size>\r
+                                                               <multiple>1</multiple>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </mode>\r
+                                       <path>\r
+                                               <TCEforms>\r
+                                                       <exclude>1</exclude>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.path</label>\r
+                                                       <config>\r
+                                                               <type>input</type>\r
+                                                               <size>30</size>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </path>\r
+                               </el>\r
+                       </ROOT>\r
+               </main>\r
+               <single>\r
+                       <ROOT>\r
+                               <TCEforms>\r
+                                       <sheetTitle>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.sheet_single</sheetTitle>\r
+                               </TCEforms>\r
+                               <type>array</type>\r
+                               <el>\r
+                                       <width>\r
+                                               <TCEforms>\r
+                                                       <exclude>1</exclude>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.width</label>\r
+                                                       <config>\r
+                                                               <type>input</type>\r
+                                                               <size>2</size>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </width>\r
+                                       <height>\r
+                                               <TCEforms>\r
+                                                       <exclude>1</exclude>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.height</label>\r
+                                                       <config>\r
+                                                               <type>input</type>\r
+                                                               <size>2</size>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </height>\r
+                                       <pid_single>\r
+                                               <TCEforms>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.pid_single</label>\r
+                                                       <config>\r
+                                                               <type>group</type>\r
+                                                               <internal_type>db</internal_type>\r
+                                                               <allowed>pages</allowed>\r
+                                                               <size>1</size>\r
+                                                               <maxitems>1</maxitems>\r
+                                                               <minitems>0</minitems>\r
+                                                               <show_thumbs>1</show_thumbs>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </pid_single>\r
+                               </el>\r
+                       </ROOT>\r
+               </single>\r
+               <list>\r
+                       <ROOT>\r
+                               <TCEforms>\r
+                                       <sheetTitle>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.sheet_list</sheetTitle>\r
+                               </TCEforms>\r
+                               <type>array</type>\r
+                               <el>\r
+                                       <width>\r
+                                               <TCEforms>\r
+                                                       <exclude>1</exclude>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.width</label>\r
+                                                       <config>\r
+                                                               <type>input</type>\r
+                                                               <size>2</size>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </width>\r
+                                       <height>\r
+                                               <TCEforms>\r
+                                                       <exclude>1</exclude>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.height</label>\r
+                                                       <config>\r
+                                                               <type>input</type>\r
+                                                               <size>2</size>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </height>\r
+                                       <columns>\r
+                                               <TCEforms>\r
+                                                       <exclude>1</exclude>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.columns</label>\r
+                                                       <config>\r
+                                                               <type>input</type>\r
+                                                               <size>2</size>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </columns>\r
+                                       <rows>\r
+                                               <TCEforms>\r
+                                                       <exclude>1</exclude>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.rows</label>\r
+                                                       <config>\r
+                                                               <type>input</type>\r
+                                                               <size>2</size>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </rows>\r
+                                       <pid_list>\r
+                                               <TCEforms>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.pid_list</label>\r
+                                                       <config>\r
+                                                               <type>group</type>\r
+                                                               <internal_type>db</internal_type>\r
+                                                               <allowed>pages</allowed>\r
+                                                               <size>1</size>\r
+                                                               <maxitems>1</maxitems>\r
+                                                               <minitems>0</minitems>\r
+                                                               <show_thumbs>1</show_thumbs>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </pid_list>\r
+                               </el>\r
+                       </ROOT>\r
+               </list>\r
+               <category>\r
+                       <ROOT>\r
+                               <TCEforms>\r
+                                       <sheetTitle>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.sheet_category</sheetTitle>\r
+                               </TCEforms>\r
+                               <type>array</type>\r
+                               <el>\r
+                                       <width>\r
+                                               <TCEforms>\r
+                                                       <exclude>1</exclude>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.width</label>\r
+                                                       <config>\r
+                                                               <type>input</type>\r
+                                                               <size>2</size>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </width>\r
+                                       <height>\r
+                                               <TCEforms>\r
+                                                       <exclude>1</exclude>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.height</label>\r
+                                                       <config>\r
+                                                               <type>input</type>\r
+                                                               <size>2</size>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </height>\r
+                                       <columns>\r
+                                               <TCEforms>\r
+                                                       <exclude>1</exclude>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.columns</label>\r
+                                                       <config>\r
+                                                               <type>input</type>\r
+                                                               <size>2</size>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </columns>\r
+                                       <rows>\r
+                                               <TCEforms>\r
+                                                       <exclude>1</exclude>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.rows</label>\r
+                                                       <config>\r
+                                                               <type>input</type>\r
+                                                               <size>2</size>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </rows>\r
+                                       <!--\r
+                                       <pid_category>\r
+                                               <TCEforms>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.pid_category</label>\r
+                                                       <config>\r
+                                                               <type>group</type>\r
+                                                               <internal_type>db</internal_type>\r
+                                                               <allowed>pages</allowed>\r
+                                                               <size>1</size>\r
+                                                               <maxitems>1</maxitems>\r
+                                                               <minitems>0</minitems>\r
+                                                               <show_thumbs>1</show_thumbs>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </pid_category>\r
+                                       -->\r
+                               </el>\r
+                       </ROOT>\r
+               </category>\r
+               <!--\r
+               <latest>\r
+                       <ROOT>\r
+                               <TCEforms>\r
+                                       <sheetTitle>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.sheet_latest</sheetTitle>\r
+                               </TCEforms>\r
+                               <type>array</type>\r
+                               <el>\r
+                                       <width>\r
+                                               <TCEforms>\r
+                                                       <exclude>1</exclude>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.width</label>\r
+                                                       <config>\r
+                                                               <type>input</type>\r
+                                                               <size>2</size>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </width>\r
+                                       <height>\r
+                                               <TCEforms>\r
+                                                       <exclude>1</exclude>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.height</label>\r
+                                                       <config>\r
+                                                               <type>input</type>\r
+                                                               <size>2</size>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </height>\r
+                                       <columns>\r
+                                               <TCEforms>\r
+                                                       <exclude>1</exclude>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.columns</label>\r
+                                                       <config>\r
+                                                               <type>input</type>\r
+                                                               <size>2</size>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </columns>\r
+                                       <rows>\r
+                                               <TCEforms>\r
+                                                       <exclude>1</exclude>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.rows</label>\r
+                                                       <config>\r
+                                                               <type>input</type>\r
+                                                               <size>2</size>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </rows>\r
+                               </el>\r
+                       </ROOT>\r
+               </latest>\r
+               -->\r
+               <cooliris>\r
+                       <ROOT>\r
+                               <TCEforms>\r
+                                       <sheetTitle>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.sheet_cooliris</sheetTitle>\r
+                               </TCEforms>\r
+                               <type>array</type>\r
+                               <el>\r
+                                       <width>\r
+                                               <TCEforms>\r
+                                                       <exclude>1</exclude>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.width</label>\r
+                                                       <config>\r
+                                                               <type>input</type>\r
+                                                               <size>2</size>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </width>\r
+                                       <height>\r
+                                               <TCEforms>\r
+                                                       <exclude>1</exclude>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.height</label>\r
+                                                       <config>\r
+                                                               <type>input</type>\r
+                                                               <size>2</size>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </height>\r
+                                       <window_width>\r
+                                               <TCEforms>\r
+                                                       <exclude>1</exclude>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.window_width</label>\r
+                                                       <config>\r
+                                                               <type>input</type>\r
+                                                               <size>2</size>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </window_width>\r
+                                       <window_height>\r
+                                               <TCEforms>\r
+                                                       <exclude>1</exclude>\r
+                                                       <label>LLL:EXT:wt_gallery/locallang_db.xml:pi_flexform.window_height</label>\r
+                                                       <config>\r
+                                                               <type>input</type>\r
+                                                               <size>2</size>\r
+                                                       </config>\r
+                                               </TCEforms>\r
+                                       </window_height>\r
+                               </el>\r
+                       </ROOT>\r
+               </cooliris>\r
+       </sheets>\r
+</T3DataStructure>
\ No newline at end of file
diff --git a/doc/manual.sxw b/doc/manual.sxw
new file mode 100644 (file)
index 0000000..415e128
Binary files /dev/null and b/doc/manual.sxw differ
diff --git a/ext_emconf.php b/ext_emconf.php
new file mode 100644 (file)
index 0000000..b56e341
--- /dev/null
@@ -0,0 +1,51 @@
+<?php\r
+\r
+########################################################################\r
+# Extension Manager/Repository config file for ext: "wt_gallery"\r
+#\r
+# Auto generated 05-04-2009 22:04\r
+#\r
+# Manual updates:\r
+# Only the data in the array - anything else is removed by next write.\r
+# "version" and "dependencies" must not be touched!\r
+########################################################################\r
+\r
+$EM_CONF[$_EXTKEY] = array(\r
+       'title' => 'wt_gallery',\r
+       'description' => 'Easy to use gallery with separate single- , category- and listview. Configurable via typoscript, show EXIF or TXT information, Cooliris (Piclens) and Imagelightbox integration, see screenshots in manual!',\r
+       'category' => 'plugin',\r
+       'shy' => 0,\r
+       'version' => '3.0.6',\r
+       'dependencies' => 'wt_doorman',\r
+       'conflicts' => '',\r
+       'priority' => '',\r
+       'loadOrder' => '',\r
+       'module' => '',\r
+       'state' => 'alpha',\r
+       'uploadfolder' => 0,\r
+       'createDirs' => '',\r
+       'modify_tables' => '',\r
+       'clearcacheonload' => 0,\r
+       'lockType' => '',\r
+       'author' => 'Alex Kellner',\r
+       'author_email' => 'alexander.kellner@einpraegsam.net',\r
+       'author_company' => '',\r
+       'CGLcompliance' => '',\r
+       'CGLcompliance_note' => '',\r
+       'constraints' => array(\r
+               'depends' => array(\r
+                       'php' => '4.2.0-0.0.0',\r
+                       'typo3' => '3.5.0-0.0.0',\r
+                       'wt_doorman' => '0.2.1-0.0.0',\r
+               ),\r
+               'conflicts' => array(\r
+               ),\r
+               'suggests' => array(\r
+               ),\r
+       ),\r
+       '_md5_values_when_last_written' => 'a:33:{s:12:"ext_icon.gif";s:4:"bbfc";s:17:"ext_localconf.php";s:4:"39e5";s:14:"ext_tables.php";s:4:"cc70";s:28:"ext_typoscript_constants.txt";s:4:"24c5";s:24:"ext_typoscript_setup.txt";s:4:"63c4";s:13:"locallang.xml";s:4:"06c3";s:16:"locallang_db.xml";s:4:"4b74";s:14:"doc/manual.sxw";s:4:"b445";s:14:"pi1/ce_wiz.gif";s:4:"bf2c";s:35:"pi1/class.tx_wtgallery_category.php";s:4:"1b69";s:35:"pi1/class.tx_wtgallery_cooliris.php";s:4:"8092";s:31:"pi1/class.tx_wtgallery_list.php";s:4:"22ce";s:30:"pi1/class.tx_wtgallery_pi1.php";s:4:"5177";s:38:"pi1/class.tx_wtgallery_pi1_wizicon.php";s:4:"e978";s:33:"pi1/class.tx_wtgallery_single.php";s:4:"9596";s:13:"pi1/clear.gif";s:4:"cc11";s:17:"pi1/locallang.xml";s:4:"a07e";s:22:"be/flexform_ds_pi1.xml";s:4:"bf2a";s:47:"lib/class.tx_wtgallery_category_pagebrowser.php";s:4:"dd8c";s:38:"lib/class.tx_wtgallery_coolirisrss.php";s:4:"4052";s:30:"lib/class.tx_wtgallery_div.php";s:4:"79d3";s:41:"lib/class.tx_wtgallery_dynamicmarkers.php";s:4:"357a";s:43:"lib/class.tx_wtgallery_list_pagebrowser.php";s:4:"4a08";s:43:"lib/user_wtgallery_category_pagebrowser.php";s:4:"6269";s:39:"lib/user_wtgallery_list_pagebrowser.php";s:4:"24c2";s:23:"templates/category.html";s:4:"6bbe";s:23:"templates/cooliris.html";s:4:"e82c";s:19:"templates/list.html";s:4:"8a9c";s:21:"templates/single.html";s:4:"1730";s:31:"files/css/wtgallery_example.css";s:4:"1a88";s:28:"files/css/wtgallery_main.css";s:4:"8927";s:22:"files/swf/cooliris.swf";s:4:"1e98";s:22:"files/static/setup.txt";s:4:"e0ff";}',\r
+       'suggests' => array(\r
+       ),\r
+);\r
+\r
+?>
\ No newline at end of file
diff --git a/ext_icon.gif b/ext_icon.gif
new file mode 100644 (file)
index 0000000..ab8b6a6
Binary files /dev/null and b/ext_icon.gif differ
diff --git a/ext_localconf.php b/ext_localconf.php
new file mode 100644 (file)
index 0000000..03cfd75
--- /dev/null
@@ -0,0 +1,5 @@
+<?php\r
+if (!defined ('TYPO3_MODE'))   die ('Access denied.');\r
+\r
+t3lib_extMgm::addPItoST43($_EXTKEY, 'pi1/class.tx_wtgallery_pi1.php', '_pi1', 'list_type', 0);\r
+?>
\ No newline at end of file
diff --git a/ext_tables.php b/ext_tables.php
new file mode 100644 (file)
index 0000000..1bf4ed3
--- /dev/null
@@ -0,0 +1,25 @@
+<?php\r
+if (!defined ('TYPO3_MODE'))   die ('Access denied.');\r
+\r
+t3lib_extMgm::addStaticFile($_EXTKEY, 'files/static/', 'Add default CSS');\r
+\r
+t3lib_div::loadTCA('tt_content');\r
+\r
+$TCA['tt_content']['types']['list']['subtypes_excludelist'][$_EXTKEY.'_pi1']='layout,select_key,pages';\r
+$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY.'_pi1']='pi_flexform';\r
+\r
+\r
+t3lib_extMgm::addPlugin(\r
+       array(\r
+               'LLL:EXT:wt_gallery/locallang_db.xml:tt_content.list_type_pi1', \r
+               $_EXTKEY.'_pi1',\r
+               t3lib_extMgm::extRelPath($_EXTKEY) . 'ext_icon.gif'\r
+       ),\r
+       'list_type'\r
+);\r
+\r
+t3lib_extMgm::addPiFlexFormValue($_EXTKEY.'_pi1', 'FILE:EXT:wt_gallery/be/flexform_ds_pi1.xml');\r
+\r
+if (TYPO3_MODE=="BE") $TBE_MODULES_EXT["xMOD_db_new_content_el"]["addElClasses"]["tx_wtgallery_pi1_wizicon"] = t3lib_extMgm::extPath($_EXTKEY).'pi1/class.tx_wtgallery_pi1_wizicon.php';\r
+\r
+?>
\ No newline at end of file
diff --git a/ext_typoscript_constants.txt b/ext_typoscript_constants.txt
new file mode 100644 (file)
index 0000000..db44661
--- /dev/null
@@ -0,0 +1,130 @@
+###\r
+# This are the default TS-constants for wt_gallery\r
+##\r
+\r
+plugin.wtgallery {\r
+       \r
+       # cat=plugin.wtgallery//0010; type=file[html,htm,tmpl,txt]; label= Template File single: HTML-template file for single view (see EXT:wt_gallery/templates/single.html for an example)\r
+       template.single = EXT:wt_gallery/templates/single.html\r
+       \r
+       # cat=plugin.wtgallery//0020; type=file[html,htm,tmpl,txt]; label= Template File list: HTML-template file for list view (see EXT:wt_gallery/templates/list.html for an example)\r
+       template.list = EXT:wt_gallery/templates/list.html\r
+       \r
+       # cat=plugin.wtgallery//0030; type=file[html,htm,tmpl,txt]; label= Template File category: HTML-template file for category view (see EXT:wt_gallery/templates/category.html for an example)\r
+       template.category = EXT:wt_gallery/templates/category.html\r
+       \r
+       # cat=plugin.wtgallery//0040; type=file[html,htm,tmpl,txt]; label= Template File cooliris: HTML-template file for cooliris view (see EXT:wt_gallery/templates/cooliris.html for an example)\r
+       template.cooliris = EXT:wt_gallery/templates/cooliris.html\r
+\r
+       # cat=plugin.wtgallery//1000; type=options[,single,list,latest]; label= Main Gallery mode: Define what the gallery should do - normally set via flexform in the plugin (e.g. single)\r
+       main.mode = \r
+\r
+       # cat=plugin.wtgallery//1010; type=text; label= Main Picture path: Relative path to the pictures (e.g. fileadmin/pictures/)\r
+       main.path = \r
+\r
+       # cat=plugin.wtgallery//1020; type=text; label= Main Allowed file extensions: Define all allowed file extensions of the picture path (not allowed files will be ignored) (default jpg,jpeg,gif,png)\r
+       main.file_extensions = jpg,jpeg,gif,png\r
+\r
+       # cat=plugin.wtgallery//1030; type=boolean; label= Main Parent DIV for rows: De/Activate a parent DIV container for every row of the list or category view (default 1)\r
+       main.DIVforRows = 1\r
+\r
+       # cat=plugin.wtgallery//2000; type=text; label= Single view PID: Set PID of single page (e.g. 5) (Note: Flexform value overwrite this setting!)\r
+       single.pid_single = \r
+\r
+       # cat=plugin.wtgallery//2010; type=text; label= Single picture width: Default width of singlepicture (e.g. 500) (Note: Flexform value overwrite this setting!)\r
+       single.width = 500\r
+\r
+       # cat=plugin.wtgallery//2020; type=text; label= Single picture height: Default height of singlepicture (e.g. 500) (Note: Flexform value overwrite this setting!)\r
+       single.height =\r
+\r
+       # cat=plugin.wtgallery//2030; type=options[ASC,DESC,newest,oldest,random]; label= Single picture sorting: If no picture is chosen, the first picture is selected by one of the methods (ASC,DESC,newest,oldest,random)\r
+       single.order = ASC\r
+\r
+       # cat=plugin.wtgallery//2040; type=options[TXT/EXIF,EXIF/TXT,TXT,EXIF,]; label= Single metainformation: Show meta information of a single picture from textfile or from EXIF information (possibilities: TXT/EXIF,EXIF/TXT,TXT,EXIF or empty) (TXT/EXIF means - search for a txt file and if no info from txt than take EXIF information of picture)\r
+       single.metainformation = TXT/EXIF\r
+\r
+       # cat=plugin.wtgallery//3000; type=text; label= List view PID: Set PID of list page (e.g. 6) (Note: Flexform value overwrite this setting!)\r
+       list.pid_list = \r
+\r
+       # cat=plugin.wtgallery//3010; type=text; label= List picture width: Default width of listpictures (e.g. 100) (Note: Flexform value overwrite this setting!)\r
+       list.width = 100\r
+\r
+       # cat=plugin.wtgallery//3020; type=text; label= List picture height: Default height of listpictures (e.g. 500) (Note: Flexform value overwrite this setting!)\r
+       list.height =\r
+\r
+       # cat=plugin.wtgallery//3030; type=text; label= List number of rows: Set the number of rows for listview (e.g. 3) (Note: Flexform value overwrite this setting!)\r
+       list.rows = \r
+\r
+       # cat=plugin.wtgallery//3040; type=text; label= List number of columns: Set the number of columns for listview (e.g. 6) (Note: Flexform value overwrite this setting!)\r
+       list.columns = \r
+\r
+       # cat=plugin.wtgallery//3050; type=options[ASC,DESC,newest,oldest,random]; label= List sorting: Define the sorting of the listview images (ASC,DESC,newest,oldest,random)\r
+       list.order = ASC\r
+\r
+       # cat=plugin.wtgallery//3060; type=text; label= Listview limit: Define a maximum limit of the listview images (e.g. 100) (empty for no limit)\r
+       list.limit = \r
+\r
+       # cat=plugin.wtgallery//3070; type=options[TXT/EXIF,EXIF/TXT,TXT,EXIF,]; label= List metainformation: Show meta information of a list picture from textfile or from EXIF information (possibilities: TXT/EXIF,EXIF/TXT,TXT,EXIF or empty) (TXT/EXIF means - search for a txt file and if no info from txt than take EXIF information of picture)\r
+       list.metainformation = TXT/EXIF\r
+\r
+       # cat=plugin.wtgallery//4000; type=text; label= Category picture width: Default width of categorypictures (e.g. 80) (Note: Flexform value overwrite this setting!)\r
+       category.width = 80\r
+\r
+       # cat=plugin.wtgallery//4010; type=text; label= Category picture height: Default height of categorypictures (e.g. 500) (Note: Flexform value overwrite this setting!)\r
+       category.height =\r
+\r
+       # cat=plugin.wtgallery//4020; type=text; label= Category number of rows: Set the number of rows for categoryview (e.g. 3) (Note: Flexform value overwrite this setting!)\r
+       category.rows = \r
+\r
+       # cat=plugin.wtgallery//4030; type=text; label= Category number of columns: Set the number of columns for categoryview (e.g. 6) (Note: Flexform value overwrite this setting!)\r
+       category.columns = \r
+\r
+       # cat=plugin.wtgallery//4035; type=options[ASC,DESC,random]; label= Category sorting: Define the sorting of the categories itselve (ASC,DESC,random)\r
+       category.order = ASC\r
+\r
+       # cat=plugin.wtgallery//4040; type=options[ASC,DESC,newest,oldest,random]; label= Category image sorting: If no special picture is chosen, any picture of the folder will be chosen (ASC,DESC,newest,oldest,random)\r
+       category.previewpicture_order = random\r
+\r
+       # cat=plugin.wtgallery//4050; type=options[TXT/EXIF,EXIF/TXT,TXT,EXIF,]; label= Category metainformation: Show meta information of a category picture from textfile or from EXIF information (possibilities: TXT/EXIF,EXIF/TXT,TXT,EXIF or empty) (TXT/EXIF means - search for a txt file and if no info from txt than take EXIF information of picture)\r
+       category.metainformation = TXT/EXIF\r
+\r
+       # cat=plugin.wtgallery//5000; type=text; label= Cooliris title: Define a title for the cooliris view (e.g. This is the title)\r
+       cooliris.title = wt_gallery for cooliris\r
+\r
+       # cat=plugin.wtgallery//5010; type=text; label= Cooliris url: Define an URL for the cooliris view (e.g. http://www.domain.org/)\r
+       cooliris.url = http://www.cooliris.com/\r
+\r
+       # cat=plugin.wtgallery//5020; type=text; label= Cooliris description: Define a description for the cooliris view (e.g. This is the description)\r
+       cooliris.description = This is the wt_gallery cooliris description...\r
+\r
+       # cat=plugin.wtgallery//5030; type=text; label= Cooliris picture width: Default width of coolirispictures (e.g. 500)\r
+       cooliris.width = 500\r
+\r
+       # cat=plugin.wtgallery//5040; type=text; label= Cooliris picture height: Default height of coolirispictures (e.g. 500)\r
+       cooliris.height =\r
+\r
+       # cat=plugin.wtgallery//5050; type=options[ASC,DESC,newest,oldest,random]; label= Cooliris sorting: Define the sorting of the coolirisview images (ASC,DESC,newest,oldest,random)\r
+       cooliris.order = ASC\r
+\r
+       # cat=plugin.wtgallery//5060; type=text; label= Cooliris limit: Define a maximum limit of the coolirisview images (e.g. 100) (empty for no limit)\r
+       cooliris.limit = \r
+\r
+       # cat=plugin.wtgallery//5070; type=text; label= Cooliris SWF path: Define a path for cooliris SWF file (e.g. EXT:wt_gallery/files/swf/cooliris.swf)\r
+       cooliris.swf = EXT:wt_gallery/files/swf/cooliris.swf\r
+\r
+       # cat=plugin.wtgallery//5080; type=int; label= Cooliris window width: Define width of the flash window in Frontend (e.g. 800) (Note: Flexform value overwrite this setting!)\r
+       cooliris.window_width = 800\r
+\r
+       # cat=plugin.wtgallery//5090; type=int; label= Cooliris window height: Define height of the flash window in Frontend (e.g. 600) (Note: Flexform value overwrite this setting!)\r
+       cooliris.window_height = 600\r
+\r
+       # cat=plugin.wtgallery//5100; type=boolean; label= Cooliris fullscreen button: Enable fullscreen button in cooliris flash window\r
+       cooliris.allow_fullscreen = 1\r
+\r
+       # cat=plugin.wtgallery//5110; type=boolean; label= Cooliris scriptaccess button: Enable scriptaccess button in cooliris flash window\r
+       cooliris.allow_scriptaccess = 0\r
+\r
+       # cat=plugin.wtgallery//5120; type=text; label= Cooliris No-Flash message: Define a message if no flash was found in the browser\r
+       cooliris.noflash_message = <a href="http://www.adobe.com/go/getflashplayer">Get Adobe Flash</a>\r
+               \r
+}
\ No newline at end of file
diff --git a/ext_typoscript_setup.txt b/ext_typoscript_setup.txt
new file mode 100644 (file)
index 0000000..5c55a24
--- /dev/null
@@ -0,0 +1,308 @@
+# WT_GALLERY PLUGIN #\r
+includeLibs.user_wtgallery_list_pagebrowser = EXT:wt_gallery/lib/user_wtgallery_list_pagebrowser.php\r
+includeLibs.user_wtgallery_category_pagebrowser = EXT:wt_gallery/lib/user_wtgallery_category_pagebrowser.php\r
+\r
+# main settings\r
+plugin.tx_wtgallery_pi1 {\r
+       \r
+       # Constants\r
+       template.single = {$plugin.wtgallery.template.single}\r
+       template.category = {$plugin.wtgallery.template.category}\r
+       template.list = {$plugin.wtgallery.template.list}\r
+       template.cooliris = {$plugin.wtgallery.template.cooliris}\r
+       main.mode = {$plugin.wtgallery.main.mode}\r
+       main.path = {$plugin.wtgallery.main.path}\r
+       main.file_extensions = {$plugin.wtgallery.main.file_extensions}\r
+       main.DIVforRows = {$plugin.wtgallery.main.DIVforRows}\r
+       \r
+       \r
+       \r
+       # Single view settings\r
+       single {\r
+               # Constants\r
+               pid_single = {$plugin.wtgallery.single.pid_single}\r
+               width = {$plugin.wtgallery.single.width}\r
+               height = {$plugin.wtgallery.single.height}\r
+               order = {$plugin.wtgallery.single.order}\r
+               metainformation = {$plugin.wtgallery.single.metainformation}\r
+               \r
+               # Single image\r
+               image = IMAGE\r
+               image {\r
+                       # available variables for .field are: picture, tstamp, filename, dirname, basename, extension\r
+                       wrap = <div class="wt_gallery_single_inner_pic">|</div>\r
+                       file.import.field = picture\r
+                       file.width = {$plugin.wtgallery.single.width}\r
+                       file.height = {$plugin.wtgallery.single.height}\r
+                       altText.field = basename\r
+                       titleText.field = filename\r
+                       params = class="wtgallery wtgallery_single"\r
+                       if.isTrue.field = picture\r
+                       \r
+                       # popup definition\r
+                       imageLinkWrap = 1\r
+                       imageLinkWrap.enable = 1\r
+                       imageLinkWrap {\r
+                               bodyTag = <body style="background-color: black;">\r
+                               wrap = <a href="javascript:close();">|</a>\r
+                               JSwindow = 1\r
+                               JSwindow.newWindow = 1\r
+                       }\r
+               }\r
+               \r
+               # Text from txt file or EXIF information to single image\r
+               # available variables for .field are: comments, title, subject, author, recordtime, cam_brand, cam_model\r
+               text = COA\r
+               text {\r
+                       wrap = <div class="wt_gallery_single_inner_text">|</div>\r
+                       if.isTrue.field = comments\r
+                       \r
+                       10 = TEXT\r
+                       10.field = title\r
+                       10.wrap = <div class="wt_gallery_single_inner_title">|</div>\r
+                       10.if.isTrue.field = title\r
+                       \r
+                       20 = TEXT\r
+                       20.field = comments\r
+                       20.wrap = <div class="wt_gallery_single_inner_comments">|</div>\r
+                       20.if.isTrue.field = comments\r
+               }\r
+               \r
+               # Link to the listview below picture (only if listview and singleview are not on the same page)\r
+               # available variables for .field are: listview_link\r
+               listviewlink = TEXT\r
+               listviewlink {\r
+                       wrap = <p>|</p>\r
+                       data = LLL:EXT:wt_gallery/pi1/locallang.xml:wtgallery_ll_listviewlink\r
+                       typolink.parameter.field = listview_link\r
+                       if.isTrue.field = listview_link\r
+               }\r
+       }\r
+       \r
+       \r
+       \r
+       # List view settings\r
+       list {\r
+               # Constants\r
+               pid_list = {$plugin.wtgallery.single.pid_list}\r
+               order = {$plugin.wtgallery.list.order}\r
+               limit = {$plugin.wtgallery.list.limit}\r
+               width = {$plugin.wtgallery.list.width}\r
+               height = {$plugin.wtgallery.list.height}\r
+               rows = {$plugin.wtgallery.list.rows}\r
+               columns = {$plugin.wtgallery.list.columns}\r
+               metainformation = {$plugin.wtgallery.list.metainformation}\r
+               \r
+               # List preview image\r
+               image = IMAGE\r
+               image {\r
+                       # available variables for .field are: picture, tstamp, filename, dirname, basename, extension, currentfolder, picturehash, pid_single, link_single\r
+                       #wrap = <div class="wt_gallery_list_pic">|</div>\r
+                       file.import.field = picture\r
+                       file.width = {$plugin.wtgallery.list.width}\r
+                       file.height = {$plugin.wtgallery.list.height}\r
+                       altText.field = basename\r
+                       titleText.field = filename\r
+                       params = class="wtgallery wtgallery_list"\r
+                       if.isTrue.field = picture\r
+                       \r
+                       # link to singleview\r
+                       imageLinkWrap = 1\r
+                       imageLinkWrap.enable = 1\r
+                       imageLinkWrap.typolink.parameter.field = link_single\r
+               }\r
+               \r
+               # Text from txt file or EXIF information to current list image\r
+               # available variables for .field are: comments, title, subject, author, recordtime, cam_brand, cam_model\r
+               text = COA\r
+               text {\r
+                       wrap = <div class="wt_gallery_list_inner_text">|</div>\r
+                       if.isTrue.field = comments\r
+                       \r
+                       10 = TEXT\r
+                       10.field = title\r
+                       10.wrap = <div class="wt_gallery_list_inner_title">|</div>\r
+                       10.if.isTrue.field = title\r
+                       \r
+                       20 = TEXT\r
+                       20.field = comments\r
+                       20.wrap = <div class="wt_gallery_list_inner_comments">|</div>\r
+                       20.if.isTrue.field = comments\r
+               }\r
+               \r
+               # Pagebrowser for listview\r
+               pagebrowser = HMENU\r
+               pagebrowser {\r
+                       special = userfunction\r
+                       special.userFunc = user_wtgallery_list_pagebrowser->start\r
+                       \r
+                       1 = TMENU\r
+                       1 {\r
+                               wrap = <ul class="wtgallery_pagebrowser_list">|</ul>\r
+                               NO.allWrap = <li>|</li>\r
+                               ACT = 1\r
+                               ACT.allWrap = <li>|</li>\r
+                               ACT.ATagParams = class="act"\r
+                       }\r
+               }\r
+       }\r
+       \r
+       \r
+       \r
+       # Category view settings\r
+       category {\r
+               # Constants\r
+               order = {$plugin.wtgallery.category.order}\r
+               width = {$plugin.wtgallery.category.width}\r
+               height = {$plugin.wtgallery.category.height}\r
+               previewpicture_order = {$plugin.wtgallery.category.previewpicture_order}\r
+               rows = {$plugin.wtgallery.category.rows}\r
+               columns = {$plugin.wtgallery.category.columns}\r
+               metainformation = {$plugin.wtgallery.category.metainformation}\r
+               \r
+               # Category preview image\r
+               image = IMAGE\r
+               image {\r
+                       # available variables for .field are: picture, tstamp, filename, dirname, basename, extension, currentfolder, link_list\r
+                       wrap = <div class="wt_gallery_category_pic">|</div>\r
+                       file.import.field = picture\r
+                       file.width = {$plugin.wtgallery.category.width}\r
+                       file.height = {$plugin.wtgallery.category.height}\r
+                       altText.field = basename\r
+                       titleText.field = filename\r
+                       params = class="wtgallery wtgallery_category"\r
+                       if.isTrue.field = picture\r
+                       \r
+                       # link to categoryview\r
+                       imageLinkWrap = 1\r
+                       imageLinkWrap.enable = 1\r
+                       imageLinkWrap.typolink.parameter.field = link_list\r
+               }\r
+               \r
+               # Text from txt file or EXIF information to current category image\r
+               # available variables for .field are: comments, title, subject, author, recordtime, cam_brand, cam_model, link_list\r
+               text = COA\r
+               text {\r
+                       wrap = <div class="wt_gallery_category_inner_text">|</div>\r
+                       if.isTrue.field = comments\r
+                       \r
+                       10 = TEXT\r
+                       10.field = title\r
+                       10.wrap = <div class="wt_gallery_category_inner_title">|</div>\r
+                       10.if.isTrue.field = title\r
+                       \r
+                       20 = TEXT\r
+                       20.field = comments\r
+                       20.wrap = <div class="wt_gallery_category_inner_comments">|</div>\r
+                       20.if.isTrue.field = comments\r
+               }\r
+               \r
+               # Link to the startcategory below category\r
+               # available variables for .field are: startcategory_link\r
+               startcategorylink = TEXT\r
+               startcategorylink {\r
+                       wrap = <p>|</p>\r
+                       data = LLL:EXT:wt_gallery/pi1/locallang.xml:wtgallery_ll_startcategorylink\r
+                       typolink.parameter.field = startcategory_link\r
+                       if.isTrue.field = startcategory_link\r
+               }\r
+               \r
+               # Pagebrowser for categoryview\r
+               pagebrowser = HMENU\r
+               pagebrowser {\r
+                       special = userfunction\r
+                       special.userFunc = user_wtgallery_category_pagebrowser->start\r
+                       \r
+                       1 = TMENU\r
+                       1 {\r
+                               wrap = <ul class="wtgallery_pagebrowser_category">|</ul>\r
+                               NO.allWrap = <li>|</li>\r
+                               ACT = 1\r
+                               ACT.allWrap = <li>|</li>\r
+                               ACT.ATagParams = class="act"\r
+                       }\r
+               }\r
+       }\r
+       \r
+       \r
+       \r
+       # Cooliris view settings\r
+       cooliris {\r
+               # Constants\r
+               title = {$plugin.wtgallery.cooliris.title}\r
+               url = {$plugin.wtgallery.cooliris.url}\r
+               description = {$plugin.wtgallery.cooliris.description}\r
+               width = {$plugin.wtgallery.cooliris.width}\r
+               height = {$plugin.wtgallery.cooliris.height}\r
+               order = {$plugin.wtgallery.cooliris.order}\r
+               limit = {$plugin.wtgallery.cooliris.limit}\r
+               swf = {$plugin.wtgallery.cooliris.swf}\r
+               window_width = {$plugin.wtgallery.cooliris.window_width}\r
+               window_height = {$plugin.wtgallery.cooliris.window_height}\r
+               allow_fullscreen = {$plugin.wtgallery.cooliris.allow_fullscreen}\r
+               allow_scriptaccess = {$plugin.wtgallery.cooliris.allow_scriptaccess}\r
+               noflash_message = {$plugin.wtgallery.cooliris.noflash_message}\r
+               \r
+               # path for cooliris image\r
+               image = COA\r
+               image {\r
+                       10 = TEXT\r
+                       10 {\r
+                               data = getIndpEnv:TYPO3_SITE_URL\r
+                       }\r
+                       20 = IMG_RESOURCE\r
+                       20 {\r
+                               # available variables for .field are: picture, tstamp, filename, dirname, basename, extension, currentfolder, picturehash\r
+                               file.import.field = picture\r
+                               file.width = {$plugin.wtgallery.cooliris.width}\r
+                               file.height = {$plugin.wtgallery.cooliris.height}\r
+                               if.isTrue.field = picture\r
+                       }\r
+               }\r
+       }\r
+       \r
+       \r
+}\r
+\r
+\r
+\r
+\r
+# Add css file for "table style" of list and categoryview\r
+page.includeCSS.file3135 = EXT:wt_gallery/files/css/wtgallery_main.css\r
+seite.includeCSS.file3135 < page.includeCSS.file3135# COOLIRIS part for wt_gallery\r
+\r
+\r
+\r
+# add rss feed to header\r
+page.headerData.3135 = COA\r
+page.headerData.3135 {\r
+    wrap = <link rel="alternate" type="application/rss+xml" title="RSS-Feed" href="|" />\r
+       \r
+       10 = TEXT\r
+       10.data = getIndpEnv:TYPO3_SITE_URL\r
+       \r
+       20 = TEXT\r
+       20 {\r
+       typolink.parameter.data = page : uid\r
+       typolink.additionalParams = &type=3135\r
+       typolink.addQueryString = 1\r
+       typolink.returnLast = url\r
+       }\r
+}\r
+seite.headerData.3135 < page.headerData.3135\r
+\r
+\r
+\r
+# TypeNum 3135 offers a dynamic rss feed (listview) for cooliris (piclens) - more infos at www.cooliris.com\r
+wtgallery_cooliris_rss = PAGE\r
+wtgallery_cooliris_rss {\r
+       typeNum = 3135\r
+       10 < plugin.tx_wtgallery_pi1\r
+       \r
+       config {\r
+               disableAllHeaderCode = 1\r
+               disablePrefixComment = 1\r
+               xhtml_cleaning = 0\r
+               admPanel = 0\r
+       }\r
+}
\ No newline at end of file
diff --git a/files/css/wtgallery_example.css b/files/css/wtgallery_example.css
new file mode 100644 (file)
index 0000000..3b10cd5
--- /dev/null
@@ -0,0 +1,38 @@
+div.tx-wtgallery-pi1 {\r
+       padding: 10px;\r
+       background-color: #ddd;\r
+}\r
+div.wt_gallery_single_inner_pic {\r
+       margin: 10px;\r
+       padding: 1px;\r
+}\r
+div.wt_gallery_single_inner_pic a img {\r
+       border: 1px solid #FF9900;\r
+}\r
+div.wtgallery_list {\r
+       padding: 1px;\r
+       margin: 10px;\r
+       background-color: #444;\r
+}\r
+div.wtgallery_list a img {\r
+       padding: 1px;\r
+       filter: alpha(opacity=66); \r
+       -moz-opacity: 0.66; \r
+       opacity: 0.66;\r
+       border: 1px solid #444;\r
+}\r
+div.wtgallery_list_current a img {\r
+       border: 1px solid #FF9900;\r
+}\r
+div.wtgallery_list a:hover img {\r
+       filter: alpha(opacity=100); \r
+       -moz-opacity: 1.00; \r
+       opacity: 1.00;\r
+}\r
+div.wt_gallery_single_inner_title {\r
+       font-weight: bold;\r
+       margin-top: 5px;\r
+}\r
+div.wt_gallery_single_inner_comments {\r
+\r
+}
\ No newline at end of file
diff --git a/files/css/wtgallery_main.css b/files/css/wtgallery_main.css
new file mode 100644 (file)
index 0000000..399ea35
--- /dev/null
@@ -0,0 +1,11 @@
+div.clear {\r
+       clear: both;\r
+}\r
+div.wtgallery_list_area div.wtgallery_list,\r
+div.wtgallery_category_area div.wtgallery_categories {\r
+       float: left;\r
+}\r
+div.wtgallery_list_area div.wtgallery_list_firstofrow,\r
+div.wtgallery_category_area div.wtgallery_category_firstofrow {\r
+       clear: left;\r
+}
\ No newline at end of file
diff --git a/files/static/setup.txt b/files/static/setup.txt
new file mode 100644 (file)
index 0000000..f2c6cdd
--- /dev/null
@@ -0,0 +1,3 @@
+page {\r
+       includeCSS.file3139 = EXT:wt_gallery/files/css/wtgallery_example.css\r
+}
\ No newline at end of file
diff --git a/files/swf/cooliris.swf b/files/swf/cooliris.swf
new file mode 100644 (file)
index 0000000..d7119d7
Binary files /dev/null and b/files/swf/cooliris.swf differ
diff --git a/lib/class.tx_wtgallery_category_pagebrowser.php b/lib/class.tx_wtgallery_category_pagebrowser.php
new file mode 100644 (file)
index 0000000..18204bc
--- /dev/null
@@ -0,0 +1,81 @@
+<?php\r
+/***************************************************************\r
+*  Copyright notice\r
+*\r
+*  (c) 2008 Alex Kellner <alexander.kellner@einpraegsam.net>\r
+*  All rights reserved\r
+*\r
+*  This script is part of the TYPO3 project. The TYPO3 project is\r
+*  free software; you can redistribute it and/or modify\r
+*  it under the terms of the GNU General Public License as published by\r
+*  the Free Software Foundation; either version 2 of the License, or\r
+*  (at your option) any later version.\r
+*\r
+*  The GNU General Public License can be found at\r
+*  http://www.gnu.org/copyleft/gpl.html.\r
+*\r
+*  This script is distributed in the hope that it will be useful,\r
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+*  GNU General Public License for more details.\r
+*\r
+*  This copyright notice MUST APPEAR in all copies of the script!\r
+***************************************************************/\r
+\r
+require_once(PATH_tslib.'class.tslib_pibase.php');\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'lib/class.tx_wtgallery_div.php'); // load div class\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'lib/class.tx_wtgallery_dynamicmarkers.php'); // file for dynamicmarker functions\r
+\r
+class tx_wtgallery_category_pagebrowser extends tslib_pibase {\r
+       \r
+       var $prefixId = 'tx_wtgallery_pi1';             // Same as class name\r
+       var $scriptRelPath = 'pi1/class.tx_wtgallery_pi1.php';  // Path to any file in pi1 for locallang\r
+       var $extKey = 'wt_gallery';     // The extension key.\r
+       \r
+       function start($conf, $piVars, $cObj, $pbarray) {\r
+               // config\r
+               $this->conf = $conf;\r
+               $this->piVars = $piVars;\r
+               $this->cObj = $cObj;\r
+               $this->pbarray = $pbarray;\r
+               $this->pi_loadLL();\r
+               $this->div = t3lib_div::makeInstance('tx_wtgallery_div'); // Create new instance for div class\r
+               $this->dynamicMarkers = t3lib_div::makeInstance('tx_wtgallery_dynamicmarkers'); // Create new instance for dynamicmarker function\r
+               $this->tmpl = $this->markerArray = $this->wrappedSubpartArray = array(); // init\r
+               $this->tmpl['category_browser'] = $this->cObj->getSubpart($this->cObj->fileResource($this->conf['template.']['category']), '###WTGALLERY_CATEGORY_PAGEBROWSER###'); // Load HTML Template\r
+               \r
+               // fill markers\r
+               if ($this->pbarray['overall'] != 0) { // if there are some categories\r
+                       $this->markerArray['###CURRENT_MIN###'] = ($this->pbarray['pointer'] * ($this->conf['category.']['rows'] * $this->conf['category.']['columns'])) + 1; // Current page: From\r
+                       $this->markerArray['###CURRENT_MAX###'] = ($this->pbarray['pointer'] * ($this->conf['category.']['rows'] * $this->conf['category.']['columns'])) + $this->pbarray['overall_cur']; // Current page: up to\r
+                       if ($this->markerArray['###CURRENT_MAX###'] > $this->pbarray['overall']) $this->markerArray['###CURRENT_MAX###'] = $this->pbarray['overall']; // set maximum\r
+                       $this->markerArray['###OVERALL###'] = $this->pbarray['overall']; // Overall addresses\r
+               }\r
+               if ($this->pbarray['overall'] == 0) $this->markerArray['###WTGALLERY_LL_PAGEBROWSER_UPTO###'] = ''; // clear marker\r
+               if ($this->pbarray['overall'] == 0) $this->markerArray['###WTGALLERY_LL_PAGEBROWSER_WITHIN###'] = ''; // clear marker\r
+               $this->conf['category.']['pagebrowser.']['special.']['userFunc.'] = $this->pbarray; // config for pagebrowser userfunc\r
+               if (($this->conf['category.']['rows'] * $this->conf['category.']['columns']) < $this->pbarray['overall']) $this->markerArray['###PAGELINKS###'] = $this->cObj->cObjGetSingle($this->conf['category.']['pagebrowser'], $this->conf['category.']['pagebrowser.']); // Pagebrowser menu (show only if needed)\r
+               \r
+               $row = array ( // write $row for .field in ts\r
+                       'startcategory_link' => $this->cObj->typolink('x', array('parameter' => $GLOBALS["TSFE"]->id, 'returnLast' => 'url'))\r
+               );\r
+               if (empty($this->piVars['category'])) $row = array(); // clear if on startcategory\r
+               $this->cObj->start($row, 'tt_content'); // enable .field in typoscript for singleview\r
+               $this->markerArray['###STARTCATEGORYLINK###'] = $this->cObj->cObjGetSingle($this->conf['category.']['startcategorylink'], $this->conf['category.']['startcategorylink.']); // values from ts\r
+               \r
+               // return\r
+               $this->content = $this->cObj->substituteMarkerArrayCached($this->tmpl['category_browser'], $this->markerArray, array(), $this->wrappedSubpartArray); // Get html template\r
+               $this->content = $this->dynamicMarkers->main($this->conf, $this->cObj, $this->content); // Fill dynamic locallang or typoscript markers\r
+               $this->content = preg_replace("|###.*?###|i", "", $this->content); // Finally clear not filled markers\r
+               if (!empty($this->content)) return $this->content; // return HTML if $content is not empty\r
+       }       \r
+       \r
+\r
+}\r
+       \r
+\r
+if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/lib/class.tx_wtgallery_category_pagebrowser.php']) {\r
+       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/lib/class.tx_wtgallery_category_pagebrowser.php']);\r
+}\r
+\r
+?>
\ No newline at end of file
diff --git a/lib/class.tx_wtgallery_coolirisrss.php b/lib/class.tx_wtgallery_coolirisrss.php
new file mode 100644 (file)
index 0000000..ee85fa3
--- /dev/null
@@ -0,0 +1,102 @@
+<?php\r
+/***************************************************************\r
+*  Copyright notice\r
+*\r
+*  (c) 2008 Alex Kellner <alexander.kellner@einpraegsam.net>\r
+*  All rights reserved\r
+*\r
+*  This script is part of the TYPO3 project. The TYPO3 project is\r
+*  free software; you can redistribute it and/or modify\r
+*  it under the terms of the GNU General Public License as published by\r
+*  the Free Software Foundation; either version 2 of the License, or\r
+*  (at your option) any later version.\r
+*\r
+*  The GNU General Public License can be found at\r
+*  http://www.gnu.org/copyleft/gpl.html.\r
+*\r
+*  This script is distributed in the hope that it will be useful,\r
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+*  GNU General Public License for more details.\r
+*\r
+*  This copyright notice MUST APPEAR in all copies of the script!\r
+***************************************************************/\r
+\r
+require_once(PATH_tslib.'class.tslib_pibase.php');\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'lib/class.tx_wtgallery_div.php'); // load div class\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'lib/class.tx_wtgallery_dynamicmarkers.php'); // file for dynamicmarker functions\r
+\r
+class tx_wtgallery_coolirisrss extends tslib_pibase {\r
+       \r
+       var $prefixId = 'tx_wtgallery_pi1';             // Same as class name\r
+       var $scriptRelPath = 'pi1/class.tx_wtgallery_pi1.php';  // Path to any file in pi1 for locallang\r
+       var $extKey = 'wt_gallery';     // The extension key.\r
+       var $mode = 'cooliris'; // mode name\r
+       \r
+       function start($conf, $piVars, $cObj) {\r
+               // config\r
+               $this->conf = $conf;\r
+               $this->piVars = $piVars;\r
+               $this->cObj = $cObj;\r
+               $this->pi_loadLL();\r
+               $this->div = t3lib_div::makeInstance('tx_wtgallery_div'); // Create new instance for div class\r
+               $this->dynamicMarkers = t3lib_div::makeInstance('tx_wtgallery_dynamicmarkers'); // Create new instance for dynamicmarker function\r
+               $this->tmpl = $this->markerArray = $this->outerMarkerArray = $subpartArray = array(); $content_item = ''; // init\r
+               $this->tmpl[$this->mode]['all'] = trim($this->cObj->getSubpart($this->cObj->fileResource($this->conf['template.'][$this->mode]), '###WTGALLERY_COOLIRIS_RSS###')); // Load HTML Template\r
+               $this->tmpl[$this->mode]['item'] = $this->cObj->getSubpart($this->tmpl[$this->mode]['all'],'###ITEM###'); // work on subpart 2\r
+               \r
+               // let's go\r
+               if (!empty($this->conf['main.']['path'])) { // if startpath was set via typoscript\r
+                       $startpath = $this->div->validatePicturePath($this->piVars['category'] ? $this->div->hash2folder($this->piVars['category'], $this->conf['main.']['path']) : $this->conf['main.']['path']); // startpath from piVars or from ts\r
+                       $pictures = $this->div->getFiles($this->conf, $startpath, $this->conf[$this->mode.'.']['order'], $this->conf[$this->mode.'.']['limit']); // get all pictures from current folder\r
+                       \r
+                       if (count($pictures) > 0) { // if there are pictures\r
+                               for ($i=0; $i<count($pictures); $i++) { // one loop for every picture in current folder\r
+                                       // let's start\r
+                                       $row = array ( // write $row for .field in ts AND for markers in html template\r
+                                               'picture' => $pictures[$i], // first entry of files array (e.g. fileadmin/pic1.jpg)\r
+                                               'tstamp' => filemtime($pictures[$i]), // timestamp of file\r
+                                               'filename' => $this->div->fileInfo($pictures[$i], 'filename'), // like pic\r
+                                               'dirname' => $this->div->fileInfo($pictures[$i], 'dirname'), // like fileadmin/pics\r
+                                               'basename' => $this->div->fileInfo($pictures[$i], 'basename'), // like pic.jpg\r
+                                               'extension' => $this->div->fileInfo($pictures[$i], 'extension'), // like jpg\r
+                                               'currentfolder' => $this->div->fileInfo($pictures[$i], 'currentfolder'), // like folder\r
+                                               'picturehash' => t3lib_div::md5int($pictures[$i]), // like 12345678\r
+                                       );\r
+                                       $this->cObj->start($row, 'tt_content'); // enable .field in typoscript for singleview\r
+                                       \r
+                                       if (!empty($this->conf[$this->mode.'.']['width'])) $this->conf[$this->mode.'.']['image.']['file.']['width'] = $this->conf[$this->mode.'.']['width'];  // set width from config (e.g. flexform if not empty)\r
+                                       if (!empty($this->conf[$this->mode.'.']['height'])) $this->conf[$this->mode.'.']['image.']['file.']['height'] = $this->conf[$this->mode.'.']['height'];  // set height from config (e.g. flexform if not empty)\r
+                                       $this->markerArray['###IMAGE###'] = $this->cObj->cObjGetSingle($this->conf[$this->mode.'.']['image'], $this->conf[$this->mode.'.']['image.']); // values from ts\r
+                                       foreach ($row as $key => $value) { // one loop for every row entry\r
+                                               $this->markerArray['###'.strtoupper($key).'###'] = $value; // fill marker with value of row\r
+                                       }\r
+                                       \r
+                                       $content_item .= $this->cObj->substituteMarkerArrayCached($this->tmpl[$this->mode]['item'], $this->markerArray, array(), $this->wrappedSubpartArray); // add inner html to variable\r
+                               } \r
+                       }\r
+                       $subpartArray['###CONTENT###'] = $content_item; // work on subpart 3\r
+                       $this->outerMarkerArray['###TITLE###'] = $this->conf[$this->mode.'.']['title']; // Add title to RSS\r
+                       $this->outerMarkerArray['###URL###'] = $this->conf[$this->mode.'.']['url']; // Add url to RSS\r
+                       $this->outerMarkerArray['###DESCRIPTION###'] = $this->conf[$this->mode.'.']['description']; // Add description to RSS\r
+                       \r
+                       \r
+                       $this->content = $this->cObj->substituteMarkerArrayCached($this->tmpl[$this->mode]['all'], $this->outerMarkerArray, $subpartArray); // Get html template\r
+                       $this->content = $this->dynamicMarkers->main($this->conf, $this->cObj, $this->content); // Fill dynamic locallang or typoscript markers\r
+                       $this->content = preg_replace("|###.*?###|i", "", $this->content); // Finally clear not filled markers\r
+                       if (!empty($this->content) && count($pictures) > 0) return $this->content; // return HTML if $content is not empty and if there are pictures\r
+                       else return $this->pi_getLL('wtgallery_ll_coolirisError', 'no pictures to list on current url'); // return error message for dynamic RSS\r
+               } else { // if startpath was not set via typoscript\r
+                       return $this->pi_getLL('wtgallery_ll_coolirisErrorNoPath', 'Please set the startpath via typoscript and not only in the plugin - this is needed for cooliris!'); // return error message for dynamic RSS\r
+               }\r
+       }       \r
+       \r
+\r
+}\r
+       \r
+\r
+if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/lib/class.tx_wtgallery_coolirisrss.php'])  {\r
+       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/lib/class.tx_wtgallery_coolirisrss.php']);\r
+}\r
+\r
+?>
\ No newline at end of file
diff --git a/lib/class.tx_wtgallery_div.php b/lib/class.tx_wtgallery_div.php
new file mode 100644 (file)
index 0000000..70aba71
--- /dev/null
@@ -0,0 +1,386 @@
+<?php\r
+/***************************************************************\r
+*  Copyright notice\r
+*\r
+*  (c) 2008 Alex Kellner <alexander.kellner@einpraegsam.net>\r
+*  All rights reserved\r
+*\r
+*  This script is part of the TYPO3 project. The TYPO3 project is\r
+*  free software; you can redistribute it and/or modify\r
+*  it under the terms of the GNU General Public License as published by\r
+*  the Free Software Foundation; either version 2 of the License, or\r
+*  (at your option) any later version.\r
+*\r
+*  The GNU General Public License can be found at\r
+*  http://www.gnu.org/copyleft/gpl.html.\r
+*\r
+*  This script is distributed in the hope that it will be useful,\r
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+*  GNU General Public License for more details.\r
+*\r
+*  This copyright notice MUST APPEAR in all copies of the script!\r
+***************************************************************/\r
+\r
+require_once(PATH_tslib.'class.tslib_pibase.php');\r
+\r
+class tx_wtgallery_div extends tslib_pibase {\r
+       \r
+       var $prefixId = 'tx_wtgallery_pi1';             // Same as class name\r
+       var $scriptRelPath = 'pi1/class.tx_wtgallery_pi1.php';  // Path to any file in pi1 for locallang\r
+       var $extKey = 'wt_gallery';     // The extension key.\r
+       var $infoarray = array('comments', 'title', 'subject', 'author', 'recordtime', 'cam_brand', 'cam_model'); // sequence for TXT and EXIF information\r
+       \r
+       \r
+       // Function getFiles() returns file array ($sort could be: random, ASC, DESC, newest, oldest)\r
+       function getFiles($conf, $folder, $sort = 'ASC', $limit = '', $hash = 0) {\r
+               $files = t3lib_div::getFilesInDir($folder, $conf['main.']['file_extensions'], 1, 1); // Get all pictures (sort by name ASC AND with folders)\r
+               \r
+               // 1. sort array\r
+               switch ($sort) { // sortmode\r
+                       case 'random': // shuffle array\r
+                               shuffle($files);\r
+                               break;\r
+                               \r
+                       case 'DESC': // alphabetical descendening\r
+                               arsort($files);\r
+                               break;\r
+                               \r
+                       case 'newest': // newest or \r
+                       case 'oldest': // oldest files\r
+                               if (is_array($files)) { // if files is an array\r
+                                       $newarray = array();\r
+                                       foreach ($files as $value) { // one loop for every file\r
+                                               $newarray[filemtime($value)] = $value; // $array[time] = pic.jpg\r
+                                       }\r
+                                       if ($sort == 'newest') krsort($newarray); // sort from key\r
+                                       if ($sort == 'oldest') ksort($newarray); // sort from key\r
+                                       \r
+                                       $files = $newarray; // overwrite files array\r
+                               }\r
+                               break;\r
+                       \r
+                       case (strpos($method, '"') !== false): // " found\r
+                               $files[0] = $folder.str_replace('"', '', $sort); // special picture\r
+                               break;\r
+                       \r
+                       default: // default\r
+                       case 'ASC': // or ASC - so do nothing\r
+                               break;\r
+               }\r
+               \r
+               // 2. rewrite keys of array\r
+               $array = array();\r
+               if (is_array($files)) { // if the array is filled\r
+                       foreach ($files as $key => $value) { // one loop for every key\r
+                               \r
+                               // rewrite key in new array\r
+                               if (!$hash) $array[] = $value; // with filename\r
+                               else $array[] = $this->hashCode($value); // with hashcode instead of filename\r
+                               \r
+                       }\r
+               }\r
+               \r
+               // 3. return whole or part of array\r
+               if (!empty($array)) { // if there is an entry\r
+                       if (empty($limit)) { // no limit\r
+                               return $array; // return complete array\r
+                       } else { // there is an entry for limit\r
+                               if (strlen($limit) > 6) { // return only a special picture like pic.jpg\r
+                                       $temparray = array();\r
+                                       if (is_array($array)) { // if is array\r
+                                               foreach ($array as $key => $value) { // one loop for every picture in array\r
+                                                       if ($this->hashCode($value) == $limit) { // if hash fits, return picture\r
+                                                               $temparray[] = $value; // $temparray[0] = fileadmin/pic.jpg\r
+                                                               return $temparray;\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               } else { // cut after X\r
+                                       return array_slice($array, 0, $limit); // return only the first X values of the array\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+       \r
+       \r
+       // Function sorting4folders() returns sorted folder array ($sort could be: random, ASC, DESC, newest, oldest)\r
+       function sorting4folders($folderArray, $sort = 'ASC') {\r
+               if (is_array($folderArray)) {\r
+                       // sort array\r
+                       switch ($sort) { // sortmode\r
+                               case 'random': // shuffle array\r
+                                       shuffle($folderArray);\r
+                                       break;\r
+                                       \r
+                               case 'DESC': // alphabetical descendening\r
+                                       arsort($folderArray);\r
+                                       break;\r
+                               \r
+                               default: // default\r
+                               case 'ASC': // or ASC\r
+                                       asort($folderArray);\r
+                                       break;\r
+                       }\r
+               }       \r
+               return $folderArray;\r
+       }\r
+       \r
+       \r
+       // Get info of a file (extension, filename, etc...)\r
+       function fileInfo($file, $mode = 'filename', $md5 = 0) { // $mode could be: dirname (fileadmin/pics), basename (pic.jpg), extension (jpg), filename (pic)\r
+               if ($file) {\r
+                       $pathinfo = pathinfo($file); // get file infos\r
+                       \r
+                       switch ($mode) { \r
+                               case 'filename': // if filename should be returned\r
+                                       return $md5 ? $this->hashCode(basename($file, '.'.$pathinfo['extension'])) : basename($file, '.'.$pathinfo['extension']); // return basename\r
+                                       break;\r
+                                       \r
+                               case 'currentfolder': // return currentfolder\r
+                                       return $md5 ? $this->hashCode(str_replace('/', '' ,substr($pathinfo['dirname'], strrpos($pathinfo['dirname'], '/')))) : str_replace('/', '' ,substr($pathinfo['dirname'], strrpos($pathinfo['dirname'], '/'))); // return current folder (subfolder of folder/subfolder/pic.jpg)\r
+                                       break;\r
+                               \r
+                               default: // default\r
+                                       return $md5 ? $this->hashCode($pathinfo[$mode]) : $pathinfo[$mode]; // return part of array\r
+                                       break;\r
+                       }\r
+               }\r
+       }\r
+       \r
+       \r
+       // Function check4errors() shows errormessage if there is an error\r
+       function check4errors($value, $msg = 'Error found', $mode = 1, $die = 0) {\r
+               \r
+               switch ($mode) { // mode\r
+                       case 1: // check if value is not empty\r
+                               if ($value == '') { // if $value is empty\r
+                                       $error = $this->extKey . ' Error: ' . $msg . '!'; // set errormessage\r
+                               }\r
+                               break;\r
+                               \r
+                       case 2: // should be a valid path\r
+                               if ($value != '' && !empty($this->conf['main.']['path'])) { // if category is set\r
+                                       if (!in_array($value, $array = $this->folderChange($this->conf['main.']['path']))) { // only if current hash is in folderarray\r
+                                               $error = $this->extKey . ' Error: ' . $msg . '!'; // set errormessage\r
+                                       }\r
+                               }\r
+                               if ($value != '' && (!t3lib_div::validPathStr($value) || strpos($value, '..') !== false)) { // if $value is not empty AND path is not valid\r
+                                       $error = $this->extKey . ' Error: ' . $msg . '!'; // set errormessage\r
+                               }\r
+                               break;\r
+                               \r
+                       case 3: // check if file exits\r
+                               if (!file_exists($value)) { // if $value (file) don't exits\r
+                                       $error = $this->extKey . ' Error: ' . $msg . '!'; // set errormessage\r
+                               }\r
+                               break;\r
+               }\r
+                       \r
+               if (isset($error)) { // if there is an error\r
+                       $error = '<div style="background-color: #A71B42; border: 1px solid black; padding: 5px; color: white; font-weight: bold;">'.$error.'</div>';\r
+                       if (!$die) return $error; \r
+                       else die ($error);\r
+               }\r
+               \r
+       }\r
+       \r
+       \r
+       // Function validatePicturePath() adds slash at the end if this is missing\r
+       function validatePicturePath($path) {\r
+               if ($path) { // if picture path exists \r
+                       if (substr($path, -1, 1) != '/') $path .= '/'; // add slash at the end if this is missing\r
+                       if (substr($path, 0, 1) == '/') $path = substr($path, 1); // remove first slash if exits\r
+                       if (!t3lib_div::validPathStr($path)) { // picture path is not valid\r
+                               die ($this->extKey . ': Picture path not valid - please correct it!'); // stop script\r
+                       }\r
+                       return $path;\r
+               }\r
+       }\r
+       \r
+       \r
+       // Function markersClassStyle() returns markerArray with definitions of ###CLASS### (firstofrow, centerofrow, lastofrow)\r
+       function markersClassStyle($i, $mode = 'list', $conf) {\r
+               // config\r
+               $markerArray = array();\r
+               \r
+               // let's start\r
+               if ($conf[$mode.'.']['columns'] > 0) { // only if columns where set via flexform or ts\r
+                       if(($i+1) / $conf[$mode.'.']['columns'] == round(($i+1) / $conf[$mode.'.']['columns'])) { // If the current picture is the last of the row (current / cols == integer)\r
+                               $markerArray['###CLASS###'] = 'wtgallery_'.$mode.'_lastofrow'; // Additional class for DIV Container\r
+                       } elseif (fmod($i+1, $conf[$mode.'.']['columns']) == '1') { // If the current picture is the first of the row\r
+                               $markerArray['###CLASS###'] = 'wtgallery_'.$mode.'_firstofrow'; // Additional class for DIV Container\r
+                       } else { // If current is not the first and not the last in the row\r
+                               $markerArray['###CLASS###'] = 'wtgallery_'.$mode.'_centerofrow'; // No additional class\r
+                       }\r
+                       return $markerArray;\r
+               }\r
+               \r
+       }\r
+       \r
+       \r
+       // Function rowWrapper() wraps content with a div (so every row in list view gets its own parent DIV container)\r
+       function rowWrapper($content, $i, $mode = 'list', $max, $conf) {\r
+               if ($conf['main.']['DIVforRows']) { // if DIV container for every row is activated in constants\r
+                       // config\r
+                       $addcleardiv = '<div class="clear"></div>';\r
+                       $j = ceil(($i+1) / $conf[$mode.'.']['columns']); // row counter\r
+                       \r
+                       // let's start\r
+                       if(($i+1) / $conf[$mode.'.']['columns'] == round(($i+1) / $conf[$mode.'.']['columns']) || ($i+1) == $max) { // If the current picture is the last of the row (current / cols == integer) OR current pictures is the last overall\r
+                               $content .= $addcleardiv.'</div>'; // add closing DIV tag\r
+                       \r
+                       } \r
+                       #if (fmod($i+1, $conf[$mode.'.']['columns']) == '1') { // If the current picture is the first of the row\r
+                       if (is_int($i/$conf[$mode.'.']['columns'])) { // If the current picture is the first of the row\r
+                               $content = '<div class="'.$mode.'_row '.$mode.'_row_'.$j.'">'.$content; // add starting DIV tag\r
+                       } \r
+               }\r
+               \r
+               return $content;\r
+       }\r
+       \r
+       \r
+       // Function EXIForTXT() returns wanted meta information of a txt file\r
+       // possibilities for $mode = 'TXT', 'EXIF', 'TXT/EXIF', 'EXIF/TXT', ''\r
+       function EXIForTXT($file, $mode = 'TXT/EXIF') {\r
+               if (!empty($file)) { // only if isset\r
+                       // config\r
+                       $array = $tmp_array = array(); // init array\r
+                       $mode_array = array_reverse(t3lib_div::trimExplode('/', $mode, 1)); // split mode on ,\r
+                       \r
+                       // let's go\r
+                       for ($i=0; $i<count($mode_array); $i++) { // one loop for every set mode\r
+                               switch ($mode_array[$i]) {\r
+                                       case 'EXIF': // if exif should be shown\r
+                                               $tmp_array = $this->readEXIF($file); // get EXIF information of a picture\r
+                                               break;\r
+                                               \r
+                                       case 'TXT': // if txt file content should be shown\r
+                                               $tmp_array = $this->readTXT($file); // get TXT information of a picture\r
+                                               break;\r
+                                               \r
+                                       default: // default: do nothing\r
+                                               $tmp_array = array(); // empty array\r
+                                               break;  \r
+                               }\r
+                               $array = array_merge((array) $array, (array) $tmp_array); // add to existing array\r
+                       }\r
+                       \r
+                       if (!empty($array)) return $array;\r
+               }\r
+       }\r
+       \r
+       \r
+       // Function readEXIF() reads EXIF information of a given picture ($file could be 'fileadmin/pic.jpg')\r
+       function readEXIF($file) {\r
+               if(file_exists($file) && function_exists('exif_read_data')) { // if file exists AND EXIF function exists\r
+                       $info = exif_read_data($file); // get exif of image\r
+                       //$info = exif_read_data($file, 'EXIF', 1, 0); // get exif of image\r
+                       \r
+                       // make EXIF array\r
+                       if ($info['Comments'] || $info['WINXP']['Comments']) $array[$this->infoarray[0]] = ($info['Comments'] ? $info['Comments'] : $info['WINXP']['Comments']); // comments\r
+                       if ($info['Title'] || $info['WINXP']['Title']) $array[$this->infoarray[1]] = ($info['Title'] ? $info['Title'] : $info['WINXP']['Title']); // title\r
+                       if ($info['Subject'] || $info['WINXP']['Subject']) $array[$this->infoarray[2]] = ($info['Subject'] ? $info['Subject'] : $info['WINXP']['Subject']); // subject\r
+                       if ($info['Author'] || $info['WINXP']['Author']) $array[$this->infoarray[3]] = ($info['Author'] ? $info['Author'] : $info['WINXP']['Author']); // author\r
+                       if ($info['EXIF']['DateTimeOriginal']) $array[$this->infoarray[4]] = $info['EXIF']['DateTimeOriginal']; // recordtime original\r
+                       if ($info['IFD0']['Make']) $array[$this->infoarray[5]] = $info['IFD0']['Make']; // camera brand\r
+                       if ($info['IFD0']['Model']) $array[$this->infoarray[6]] = $info['IFD0']['Model']; // camera model\r
+                       if ($GLOBALS['TSFE']->metaCharset == 'utf-8') $array = array_map('utf8_encode', (array) $array); // utf8 encode on all values of array if utf8 system\r
+                       \r
+                       if (!empty($array)) return $array;\r
+                       \r
+               }\r
+       }\r
+       \r
+       \r
+       // Function readTXT() reads text file of any picture ($file could be 'fileadmin/pic.jpg')\r
+       function readTXT($file) {\r
+               // config\r
+               $postfix = '.txt'; // default postfix like pic.jpg.txt\r
+               if (!empty($GLOBALS['TSFE']->tmpl->setup['config.']['language']) && file_exists($file.'.'.$GLOBALS['TSFE']->tmpl->setup['config.']['language'].$postfix)) $postfix = '.'.$GLOBALS['TSFE']->tmpl->setup['config.']['language'].'.txt'; // rewrite postfix with language postfix pic.jpg.txt => pic.jpg.en.txt\r
+               \r
+               // let's go\r
+               if (file_exists($file) && file_exists($file.$postfix)) { // if picture exists and txt file to picture exists\r
+                       $content = t3lib_div::getURL($file.$postfix); // read txtfile\r
+                       $contentarray = t3lib_div::trimExplode('|', $content, 1); // split on '|'\r
+                       for ($i=0; $i<count($contentarray); $i++) { // one loop for every splitted part in array\r
+                               $array[$this->infoarray[$i]] = htmlspecialchars($contentarray[$i]); // rewrite array\r
+                       }\r
+                       \r
+                       if (!empty($array)) return $array;\r
+               }\r
+       }\r
+       \r
+       \r
+       // Function folderChange() gives an array with all picture folders and the fitting md5 hash\r
+       function folderChange($startpath) {\r
+               $folderArray = $newArray = array(); // init empty array\r
+               $folderArray = t3lib_div::getAllFilesAndFoldersInPath($folderArray, t3lib_div::getFileAbsFileName($startpath), 'wt_gallery', 1); // get all folders of the startpath in an array\r
+               $folderArray = array_flip($folderArray); // flip array\r
+               \r
+               foreach ((array) $folderArray as $key => $value) { // one loop for every array content\r
+                       if (substr($key, -1) === '/') $key = substr($key, 0, -1); // if last sign is '/' than delete it\r
+                       $newArray[str_replace(t3lib_div::getIndpEnv('TYPO3_DOCUMENT_ROOT').'/', '', $key)] = $this->hashCode(str_replace(t3lib_div::getIndpEnv('TYPO3_DOCUMENT_ROOT').'/', '', $key)); // rewrite array like 12345 => fileadmin/pics\r
+               }\r
+               \r
+               if (!empty($newArray)) return $newArray;\r
+       }\r
+       \r
+       \r
+       // Function hash2folder returns fitting folder to a hash code\r
+       function hash2folder($hash, $startpath = 0) {\r
+               if (!$startpath) $startpath = $this->conf['main.']['path']; // set startpath if not yet\r
+               $folderArray = $this->folderChange($startpath);\r
+               $folderArrayFlipped = array_flip($folderArray); // flip array\r
+               return $folderArrayFlipped[$hash];\r
+       }\r
+       \r
+       \r
+       // Function changeSlash() changes / to @ and reverse\r
+       function changeSlash($string, $encode = 1) {\r
+               if ($encode) $string = str_replace('/', '@', $string); // replace 1\r
+               else $string = str_replace('@', '/', $string); // replace 2\r
+               \r
+               return $string;\r
+       }\r
+       \r
+       \r
+       // Function hashCode() returns md5 hash of anything (this is an own function if I want to change it future)\r
+       function hashCode($string) {\r
+               if (!empty($string)) return t3lib_div::md5int($string);\r
+       }\r
+       \r
+       \r
+       // Function init() enables $this->conf\r
+       function init($conf) {\r
+               $this->conf = $conf;\r
+       }\r
+       \r
+       \r
+       /*\r
+       // Function getFolderStructure() returns array with recursive folder list ($folder could be 'fileadmin/pics/')\r
+       function getFolderStructure($folder, $level = 1, $limit = 10) {\r
+               if ($level <= $limit) { // only if limit not reached yet\r
+                       $array = array(); // init new array\r
+                       $folders = t3lib_div::get_dirs($folder); // array with folders\r
+                       \r
+                       if (is_array($folders)) { // if there are folders in the array\r
+                               foreach ($folders as $key => $value) { // one loop for every folder\r
+                                       $array[$value] = $this->getFolderStructure($folder.$value.'/', $level + 1, $limit); // recursive open of own function\r
+                               }\r
+                       }\r
+                       if (is_array($folders)) return $array; // if there where folders, return array\r
+                       else return 0; // if there where no folders return 0\r
+               }\r
+       }\r
+       */\r
+\r
+}\r
+       \r
+\r
+if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/lib/class.tx_wtgallery_div.php'])  {\r
+       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/lib/class.tx_wtgallery_div.php']);\r
+}\r
+\r
+?>
\ No newline at end of file
diff --git a/lib/class.tx_wtgallery_dynamicmarkers.php b/lib/class.tx_wtgallery_dynamicmarkers.php
new file mode 100644 (file)
index 0000000..c36f075
--- /dev/null
@@ -0,0 +1,89 @@
+<?php\r
+/***************************************************************\r
+*  Copyright notice\r
+*\r
+*  (c) 2008 Alexander Kellner <alexander.kellner@einpraegsam.net>\r
+*  All rights reserved\r
+*\r
+*  This script is part of the TYPO3 project. The TYPO3 project is\r
+*  free software; you can redistribute it and/or modify\r
+*  it under the terms of the GNU General Public License as published by\r
+*  the Free Software Foundation; either version 2 of the License, or\r
+*  (at your option) any later version.\r
+*\r
+*  The GNU General Public License can be found at\r
+*  http://www.gnu.org/copyleft/gpl.html.\r
+*\r
+*  This script is distributed in the hope that it will be useful,\r
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+*  GNU General Public License for more details.\r
+*\r
+*  This copyright notice MUST APPEAR in all copies of the script!\r
+***************************************************************/\r
+\r
+require_once(PATH_tslib.'class.tslib_pibase.php');\r
+\r
+class tx_wtgallery_dynamicmarkers extends tslib_pibase {\r
+\r
+    var $extKey = 'wt_gallery';\r
+    var $scriptRelPath = 'pi1/class.tx_wtgallery_pi1.php';    // Path to pi1 to get locallang.xml from pi1 folder\r
+    var $locallangmarker_prefix = array('WTGALLERY_LL_','wtgallery_ll_'); // prefix for automatic locallangmarker\r
+    var $typoscriptmarker_prefix = array('WTGALLERY_TS_','dynamicTyposcript'); // prefix for automatic typoscriptmarker\r
+    \r
+       \r
+       // Function main() to replace typoscript- and locallang markers\r
+       function main($conf, $cObj, $content, $enable = 1) {\r
+               // config\r
+               $this->conf = $conf;\r
+               $this->cObj = $cObj;\r
+               $this->content = $content;\r
+               $this->pi_loadLL();\r
+               \r
+               if ($enable == 1) { // could be disabled for testing\r
+               \r
+                       // let's go\r
+                       // 1. replace locallang markers\r
+                       $this->content = preg_replace_callback ( // Automaticly fill locallangmarkers with fitting value of locallang.xml\r
+                               '#\#\#\#'.$this->locallangmarker_prefix[0].'(.*)\#\#\##Uis', // regulare expression\r
+                               array($this, 'DynamicLocalLangMarker'), // open function\r
+                               $this->content // current content\r
+                       );\r
+                       \r
+                       // 2. replace typoscript markers\r
+                       $this->content = preg_replace_callback ( // Automaticly fill locallangmarkers with fitting value of locallang.xml\r
+                               '#\#\#\#'.$this->typoscriptmarker_prefix[0].'(.*)\#\#\##Uis', // regulare expression\r
+                               array($this, 'DynamicTyposcriptMarker'), // open function\r
+                               $this->content // current content\r
+                       );\r
+                       \r
+               }\r
+               \r
+               if (!empty($this->content)) return $this->content;\r
+       }\r
+    \r
+    \r
+    // Function DynamicLocalLangMarker() to get automaticly a marker from locallang.xml (###LOCALLANG_BLABLA### from locallang.xml: locallangmarker_blabla)\r
+    function DynamicLocalLangMarker($array) {\r
+               if (!empty($array[1])) $string = $this->pi_getLL(strtolower($this->locallangmarker_prefix[1].$array[1]), '<i>'.strtolower($array[1]).'</i>'); // search for a fitting entry in locallang.xml or typoscript\r
+        \r
+               if (!empty($string)) return $string;\r
+    }\r
+    \r
+    \r
+    // Function DynamicTyposcriptMarker() to get automaticly a marker from typoscript \r
+    function DynamicTyposcriptMarker($array) {\r
+               if ($this->conf['dynamicTyposcript.'][strtolower($array[1])]) { // If there is a fitting entry in typoscript\r
+                       $string = $this->cObj->cObjGetSingle($this->conf[$this->typoscriptmarker_prefix[1].'.'][strtolower($array[1])], $this->conf[$this->typoscriptmarker_prefix[1].'.'][strtolower($array[1]).'.']); // fill string with typoscript value\r
+               }\r
+        \r
+               if (!empty($string)) return $string;\r
+    }\r
+       \r
+}\r
+\r
+if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/lib/class.tx_wtgallery_dynamicmarkers.php']) {\r
+    include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/lib/class.tx_wtgallery_dynamicmarkers.php']);\r
+}\r
+\r
+?>
\ No newline at end of file
diff --git a/lib/class.tx_wtgallery_list_pagebrowser.php b/lib/class.tx_wtgallery_list_pagebrowser.php
new file mode 100644 (file)
index 0000000..b12c95e
--- /dev/null
@@ -0,0 +1,67 @@
+<?php\r
+/***************************************************************\r
+*  Copyright notice\r
+*\r
+*  (c) 2008 Alexander Kellner <alexander.kellner@einpraegsam.net>\r
+*  All rights reserved\r
+*\r
+*  This script is part of the TYPO3 project. The TYPO3 project is\r
+*  free software; you can redistribute it and/or modify\r
+*  it under the terms of the GNU General Public License as published by\r
+*  the Free Software Foundation; either version 2 of the License, or\r
+*  (at your option) any later version.\r
+*\r
+*  The GNU General Public License can be found at\r
+*  http://www.gnu.org/copyleft/gpl.html.\r
+*\r
+*  This script is distributed in the hope that it will be useful,\r
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+*  GNU General Public License for more details.\r
+*\r
+*  This copyright notice MUST APPEAR in all copies of the script!\r
+***************************************************************/\r
+\r
+require_once(PATH_tslib.'class.tslib_pibase.php');\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'lib/class.tx_wtgallery_div.php'); // load div class\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'lib/class.tx_wtgallery_dynamicmarkers.php'); // file for dynamicmarker functions\r
+\r
+\r
+class tx_wtgallery_list_pagebrowser extends tslib_pibase {\r
+       \r
+       var $prefixId = 'tx_wtgallery_pi1';             // Same as class name\r
+       var $scriptRelPath = 'pi1/class.tx_wtgallery_list.php'; // Path to any file in pi1 for locallang\r
+       var $extKey = 'wt_gallery';     // The extension key.\r
+       \r
+       function start($conf, $piVars, $cObj, $pbarray) {\r
+               // Config\r
+               $this->conf = $conf;\r
+               $this->piVars = $piVars;\r
+               $this->cObj = $cObj;\r
+               $this->pbarray = $pbarray;\r
+               $this->markerArray = array();\r
+               $this->div = t3lib_div::makeInstance('tx_wtgallery_div'); // Create new instance for div class\r
+               $this->dynamicMarkers = t3lib_div::makeInstance('tx_wtgallery_dynamicmarkers'); // Create new instance for dynamicmarker function\r
+               $this->tmpl = array ('pagebrowser' => $this->cObj->getSubpart($this->cObj->fileResource($this->conf['template.']['list']), '###WTGALLERY_LIST_PAGEBROWSER###')); // Load HTML Template for pagebrowser\r
+\r
+               // let's go\r
+               $this->markerArray['###CURRENT_MIN###'] = ($this->pbarray['pointer'] * ($this->conf['list.']['rows'] * $this->conf['list.']['columns'])) + 1; // Current page: From\r
+               $this->markerArray['###CURRENT_MAX###'] = ($this->pbarray['pointer'] * ($this->conf['list.']['rows'] * $this->conf['list.']['columns'])) + $this->pbarray['overall_cur']; // Current page: up to\r
+               if ($this->markerArray['###CURRENT_MAX###'] > $this->pbarray['overall']) $this->markerArray['###CURRENT_MAX###'] = $this->pbarray['overall']; // set maximum\r
+               $this->markerArray['###OVERALL###'] = $this->pbarray['overall']; // Overall addresses\r
+               $this->conf['list.']['pagebrowser.']['special.']['userFunc.'] = $this->pbarray; // config for pagebrowser userfunc\r
+               if (($this->conf['list.']['rows'] * $this->conf['list.']['columns']) < $this->pbarray['overall']) $this->markerArray['###PAGELINKS###'] = $this->cObj->cObjGetSingle($this->conf['list.']['pagebrowser'], $this->conf['list.']['pagebrowser.']); // Pagebrowser menu (show only if needed)\r
+               \r
+               $this->content = $this->cObj->substituteMarkerArrayCached($this->tmpl['pagebrowser'], $this->markerArray); // substitute Marker in Template\r
+               $this->content = $this->dynamicMarkers->main($this->conf, $this->cObj, $this->content); // Fill dynamic locallang or typoscript markers\r
+               $this->content = preg_replace("|###.*?###|i", "", $this->content); // Finally clear not filled markers\r
+               if (!empty($this->content) && $this->pbarray['overall'] > 0) return $this->content; // return only if results\r
+    }  \r
+       \r
+}\r
+\r
+if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/lib/class.tx_wtgallery_list_pagebrowser.php'])     {\r
+       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/lib/class.tx_wtgallery_list_pagebrowser.php']);\r
+}\r
+\r
+?>
\ No newline at end of file
diff --git a/lib/user_wtgallery_category_pagebrowser.php b/lib/user_wtgallery_category_pagebrowser.php
new file mode 100644 (file)
index 0000000..55f7fec
--- /dev/null
@@ -0,0 +1,60 @@
+<?php\r
+/***************************************************************\r
+*  Copyright notice\r
+*\r
+*  (c) 2008 Alexander Kellner <alexander.kellner@einpraegsam.net>\r
+*  All rights reserved\r
+*\r
+*  This script is part of the TYPO3 project. The TYPO3 project is\r
+*  free software; you can redistribute it and/or modify\r
+*  it under the terms of the GNU General Public License as published by\r
+*  the Free Software Foundation; either version 2 of the License, or\r
+*  (at your option) any later version.\r
+*\r
+*  The GNU General Public License can be found at\r
+*  http://www.gnu.org/copyleft/gpl.html.\r
+*\r
+*  This script is distributed in the hope that it will be useful,\r
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+*  GNU General Public License for more details.\r
+*\r
+*  This copyright notice MUST APPEAR in all copies of the script!\r
+***************************************************************/\r
+\r
+require_once(PATH_tslib.'class.tslib_pibase.php');\r
+\r
+class user_wtgallery_category_pagebrowser extends tslib_pibase {\r
+       \r
+       var $prefixId = 'tx_wtgallery_pi1';             // Same as class name\r
+       var $scriptRelPath = 'pi1/class.tx_wtgallery_list.php'; // Path to any file in pi1 for locallang\r
+       var $extKey = 'wt_gallery';     // The extension key.\r
+\r
+       // Function start() generates HMENU for typoscript\r
+       function start($content='', $conf=array()) {\r
+               // config\r
+               global $TSFE;\r
+               $cObj = $TSFE->cObj; // cObject\r
+               $this->conf = $conf; // conf\r
+               $this->pi_loadLL();\r
+               $menuarray = array(); $conf['userFunc.']['pointer'] = 0;\r
+               \r
+               // let's go\r
+               for($i=0; $i < ceil($conf['userFunc.']['overall'] / $conf['userFunc.']['perPage']); $i++) { // one loop for every page\r
+                       if ($conf['userFunc.']['pointer'] == intval($_GET[$this->prefixId]['listpointer'])) $menuarray[$i]['ITEM_STATE'] = 'ACT'; // act status for menu\r
+                       \r
+                       $menuarray[$i]['title'] = sprintf($this->pi_getLL('wtgallery_ll_pagebrowser_page', 'page '.($i+1)), ($i+1)); // menu label\r
+                       $menuarray[$i]['_OVERRIDE_HREF'] = $this->pi_linkTP_keepPIvars_url(array('categorypointer' => $conf['userFunc.']['pointer']), 1); // url for menu\r
+                       $conf['userFunc.']['pointer'] = ($i+1);\r
+               };\r
+               \r
+               return $menuarray;\r
+       }\r
+       \r
+}\r
+\r
+if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/lib/user_wtgallery_category_pagebrowser.php'])     {\r
+       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/lib/user_wtgallery_category_pagebrowser.php']);\r
+}\r
+\r
+?>
\ No newline at end of file
diff --git a/lib/user_wtgallery_list_pagebrowser.php b/lib/user_wtgallery_list_pagebrowser.php
new file mode 100644 (file)
index 0000000..2a6035d
--- /dev/null
@@ -0,0 +1,60 @@
+<?php\r
+/***************************************************************\r
+*  Copyright notice\r
+*\r
+*  (c) 2008 Alexander Kellner <alexander.kellner@einpraegsam.net>\r
+*  All rights reserved\r
+*\r
+*  This script is part of the TYPO3 project. The TYPO3 project is\r
+*  free software; you can redistribute it and/or modify\r
+*  it under the terms of the GNU General Public License as published by\r
+*  the Free Software Foundation; either version 2 of the License, or\r
+*  (at your option) any later version.\r
+*\r
+*  The GNU General Public License can be found at\r
+*  http://www.gnu.org/copyleft/gpl.html.\r
+*\r
+*  This script is distributed in the hope that it will be useful,\r
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+*  GNU General Public License for more details.\r
+*\r
+*  This copyright notice MUST APPEAR in all copies of the script!\r
+***************************************************************/\r
+\r
+require_once(PATH_tslib.'class.tslib_pibase.php');\r
+\r
+class user_wtgallery_list_pagebrowser extends tslib_pibase {\r
+       \r
+       var $prefixId = 'tx_wtgallery_pi1';             // Same as class name\r
+       var $scriptRelPath = 'pi1/class.tx_wtgallery_list.php'; // Path to any file in pi1 for locallang\r
+       var $extKey = 'wt_gallery';     // The extension key.\r
+\r
+       // Function start() generates HMENU for typoscript\r
+       function start($content='', $conf=array()) {\r
+               // config\r
+               global $TSFE;\r
+               $cObj = $TSFE->cObj; // cObject\r
+               $this->conf = $conf; // conf\r
+               $this->pi_loadLL();\r
+               $menuarray = array(); $conf['userFunc.']['pointer'] = 0;\r
+               \r
+               // let's go\r
+               for($i=0; $i < ceil($conf['userFunc.']['overall'] / $conf['userFunc.']['perPage']); $i++) { // one loop for every page\r
+                       if ($conf['userFunc.']['pointer'] == intval($_GET[$this->prefixId]['listpointer'])) $menuarray[$i]['ITEM_STATE'] = 'ACT'; // act status for menu\r
+                       \r
+                       $menuarray[$i]['title'] = sprintf($this->pi_getLL('wtgallery_ll_pagebrowser_page', 'page '.($i+1)), ($i+1)); // menu label\r
+                       $menuarray[$i]['_OVERRIDE_HREF'] = $this->pi_linkTP_keepPIvars_url(array('listpointer' => $conf['userFunc.']['pointer']), 1); // url for menu\r
+                       $conf['userFunc.']['pointer'] = ($i+1);\r
+               };\r
+               \r
+               return $menuarray;\r
+       }\r
+       \r
+}\r
+\r
+if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/lib/user_wtgallery_list_pagebrowser.php']) {\r
+       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/lib/user_wtgallery_list_pagebrowser.php']);\r
+}\r
+\r
+?>
\ No newline at end of file
diff --git a/locallang.xml b/locallang.xml
new file mode 100644 (file)
index 0000000..a2a61ff
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>\r
+<T3locallang>\r
+       <meta type="array">\r
+               <type>module</type>\r
+               <description>Language labels for extension 'wt_gallery'</description>\r
+       </meta>\r
+       <data type="array">\r
+               <languageKey index="default" type="array">\r
+                       <label index="pi1_title">WT Gallery</label>\r
+                       <label index="pi1_plus_wiz_description">Provides a gallery with separate Single- and Thumbnail-View</label>\r
+               </languageKey>\r
+               <languageKey index="de" type="array">\r
+                       <label index="pi1_title">WT Galerie</label>\r
+                       <label index="pi1_plus_wiz_description">Galerie mit getrennter Einzel- und Uebersichtsansicht</label>\r
+               </languageKey>\r
+       </data>\r
+</T3locallang>
\ No newline at end of file
diff --git a/locallang_db.xml b/locallang_db.xml
new file mode 100644 (file)
index 0000000..a10911e
--- /dev/null
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>\r
+<T3locallang>\r
+       <meta type="array">\r
+               <type>database</type>\r
+               <description>Language labels for database tables/fields belonging to extension 'wt_gallery'</description>\r
+       </meta>\r
+       <data type="array">\r
+               <languageKey index="default" type="array">\r
+                       <label index="tt_content.list_type_pi1">WT Gallery</label>\r
+                       <label index="pi_flexform.sheet_main">Main Configuration</label>\r
+                       <label index="pi_flexform.sheet_single">Single</label>\r
+                       <label index="pi_flexform.sheet_list">List</label>\r
+                       <label index="pi_flexform.sheet_latest">Latest</label>\r
+                       <label index="pi_flexform.sheet_category">Category</label>\r
+                       <label index="pi_flexform.sheet_cooliris">Cooliris</label>\r
+                       <label index="pi_flexform.mode">Show:</label>\r
+                       <label index="pi_flexform.mode.0">Single</label>\r
+                       <label index="pi_flexform.mode.1">List</label>\r
+                       <label index="pi_flexform.mode.2">Latest</label>\r
+                       <label index="pi_flexform.mode.3">Category</label>\r
+                       <label index="pi_flexform.mode.4">Cooliris listview</label>\r
+                       <label index="pi_flexform.path">Pic Folder (e.g. fileadmin/pics/)</label>\r
+                       <label index="pi_flexform.width">Picture width</label>\r
+                       <label index="pi_flexform.height">Picture height</label>\r
+                       <label index="pi_flexform.window_width">Width of cooliris window (px)</label>\r
+                       <label index="pi_flexform.window_height">Height of cooliris window (px)</label>\r
+                       <label index="pi_flexform.columns">Number of columns</label>\r
+                       <label index="pi_flexform.rows">Number of rows</label>\r
+                       <label index="pi_flexform.pid_single">Page with single view (empty = same page)</label>\r
+                       <label index="pi_flexform.pid_list">Page with list view (empty = same page)</label>\r
+                       <label index="pi_flexform.pid_category">Page with category view (empty = same page)</label>\r
+                       <label index="pi_flexform.pid_latest">Page with latest view (empty = same page)</label>\r
+               </languageKey>\r
+               <languageKey index="de" type="array">\r
+                       <label index="tt_content.list_type_pi1">WT Galerie</label>\r
+                       <label index="pi_flexform.sheet_main">Haupteinstellungen</label>\r
+                       <label index="pi_flexform.sheet_single">Single</label>\r
+                       <label index="pi_flexform.sheet_list">Liste</label>\r
+                       <label index="pi_flexform.sheet_latest">Letzte (Latest)</label>\r
+                       <label index="pi_flexform.sheet_category">Kategorie</label>\r
+                       <label index="pi_flexform.sheet_cooliris">Cooliris</label>\r
+                       <label index="pi_flexform.mode">Anzeige:</label>\r
+                       <label index="pi_flexform.mode.0">Single</label>\r
+                       <label index="pi_flexform.mode.1">Liste</label>\r
+                       <label index="pi_flexform.mode.2">Letzte (Latest)</label>\r
+                       <label index="pi_flexform.mode.3">Kategorien</label>\r
+                       <label index="pi_flexform.mode.4">Cooliris Listenansicht</label>\r
+                       <label index="pi_flexform.path">Bild Verzeichnis (z.B. fileadmin/pics/)</label>\r
+                       <label index="pi_flexform.width">Bildbreite</label>\r
+                       <label index="pi_flexform.height">Bildhöhe</label>\r
+                       <label index="pi_flexform.window_width">Breite des Cooliris Fensters (px)</label>\r
+                       <label index="pi_flexform.window_height">Höhe des Cooliris Fensters (px)</label>\r
+                       <label index="pi_flexform.columns">Anzahl Spalten</label>\r
+                       <label index="pi_flexform.rows">Anzahl Zeilen</label>\r
+                       <label index="pi_flexform.pid_single">Seite mit Singleansicht (leer = gleiche Seite)</label>\r
+                       <label index="pi_flexform.pid_list">Seite mit Listenansicht (leer = gleiche Seite)</label>\r
+                       <label index="pi_flexform.pid_category">Seite mit Kategorieansicht (leer = gleiche Seite)</label>\r
+                       <label index="pi_flexform.pid_latest">Seite mit Ansicht der Letzen Bilder (leer = gleiche Seite)</label>\r
+               </languageKey>\r
+       </data>\r
+</T3locallang>\r
diff --git a/pi1/ce_wiz.gif b/pi1/ce_wiz.gif
new file mode 100644 (file)
index 0000000..db8357c
Binary files /dev/null and b/pi1/ce_wiz.gif differ
diff --git a/pi1/class.tx_wtgallery_category.php b/pi1/class.tx_wtgallery_category.php
new file mode 100644 (file)
index 0000000..f1e314c
--- /dev/null
@@ -0,0 +1,110 @@
+<?php\r
+/***************************************************************\r
+*  Copyright notice\r
+*\r
+*  (c) 2008 Alex Kellner <alexander.kellner@einpraegsam.net>\r
+*  All rights reserved\r
+*\r
+*  This script is part of the TYPO3 project. The TYPO3 project is\r
+*  free software; you can redistribute it and/or modify\r
+*  it under the terms of the GNU General Public License as published by\r
+*  the Free Software Foundation; either version 2 of the License, or\r
+*  (at your option) any later version.\r
+*\r
+*  The GNU General Public License can be found at\r
+*  http://www.gnu.org/copyleft/gpl.html.\r
+*\r
+*  This script is distributed in the hope that it will be useful,\r
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+*  GNU General Public License for more details.\r
+*\r
+*  This copyright notice MUST APPEAR in all copies of the script!\r
+***************************************************************/\r
+\r
+require_once(PATH_tslib.'class.tslib_pibase.php');\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'lib/class.tx_wtgallery_div.php'); // load div class\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'lib/class.tx_wtgallery_dynamicmarkers.php'); // file for dynamicmarker functions\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'lib/class.tx_wtgallery_category_pagebrowser.php'); // file for categorybrowser function\r
+\r
+class tx_wtgallery_category extends tslib_pibase {\r
+       \r
+       var $prefixId = 'tx_wtgallery_pi1';             // Same as class name\r
+       var $scriptRelPath = 'pi1/class.tx_wtgallery_category.php';     // Path to any file in pi1 for locallang\r
+       var $extKey = 'wt_gallery';     // The extension key.\r
+       \r
+       function start($conf, $piVars, $cObj) {\r
+               // config\r
+               $this->conf = $conf;\r
+               $this->piVars = $piVars;\r
+               $this->cObj = $cObj;\r
+               $this->pi_loadLL();\r
+               $this->div = t3lib_div::makeInstance('tx_wtgallery_div'); // Create new instance for div class\r
+               $this->dynamicMarkers = t3lib_div::makeInstance('tx_wtgallery_dynamicmarkers'); // Create new instance for dynamicmarker function\r
+               $this->pagebrowser = t3lib_div::makeInstance('tx_wtgallery_category_pagebrowser'); // Create new instance for categorybrowser function\r
+               $this->tmpl = $this->markerArray = $this->outerMarkerArray = array(); $content_item = ''; // init\r
+               $this->tmpl['category']['all'] = $this->cObj->getSubpart($this->cObj->fileResource($this->conf['template.']['category']), '###WTGALLERY_CATEGORY###'); // Load HTML Template\r
+               $this->tmpl['category']['item'] = $this->cObj->getSubpart($this->tmpl['category']['all'],'###ITEM###'); // work on subpart 2\r
+\r
+               // let's go\r
+               $startpath = $this->div->validatePicturePath($this->piVars['category'] ? $this->div->hash2folder($this->piVars['category'], $this->conf['main.']['path']) : $this->conf['main.']['path']); // startpath from piVars or from ts\r
+               $folders = $this->div->sorting4folders(t3lib_div::get_dirs($startpath), $this->conf['category.']['order']); // Get all subfolders in the picture folder\r
+               $folders_current = array_chunk((array) $folders, ($this->conf['category.']['rows'] * $this->conf['category.']['columns'])); // split array in parts for pagebrowser\r
+               $this->overall = count($folders); // count all pictures\r
+               $pointer = ($this->piVars['categorypointer'] > 0 ? $this->piVars['categorypointer'] : 0); // pointer\r
+               \r
+               if (count($folders_current[$pointer]) > 0) { // if there are folders\r
+                       for ($i=0; $i<count($folders_current[$pointer]); $i++) { // one loop for every folder in current folder\r
+                               // let's start\r
+                               $picture = $this->div->getFiles($this->conf, $startpath.$folders_current[$pointer][$i].'/', $this->conf['category.']['previewpicture_order'], 1); // get a picture from category\r
+                               $row = array ( // write $row for .field in ts AND for markers in html template\r
+                                       'picture' => $picture[0], // first entry of files array (e.g. fileadmin/pic1.jpg)\r
+                                       'tstamp' => filemtime($picture[0]), // timestamp of file\r
+                                       'filename' => $this->div->fileInfo($picture[0], 'filename'), // like pic\r
+                                       'dirname' => $this->div->fileInfo($picture[0], 'dirname'), // like fileadmin/pics\r
+                                       'basename' => $this->div->fileInfo($picture[0], 'basename'), // like pic.jpg\r
+                                       'extension' => $this->div->fileInfo($picture[0], 'extension'), // like jpg\r
+                                       'currentfolder' => $this->div->fileInfo($picture[0], 'currentfolder'), // like folder\r
+                                       'link_list' => $this->cObj->typolink('x', array('parameter' => $GLOBALS['TSFE']->id, 'additionalParams' => '&'.$this->prefixId.'[category]='.$this->div->fileInfo($picture[0], 'dirname', 1), 'useCacheHash' => 1, 'returnLast' => 'url') ) // , 'ATagParams' => 'target="_self"'\r
+                               );\r
+                               $this->cObj->start($row, 'tt_content'); // enable .field in typoscript for singleview\r
+                               \r
+                               $this->markerArray = $this->div->markersClassStyle($i, 'category', $this->conf); // fill ###CLASS### and ###STYLE###\r
+                               if (!empty($this->conf['category.']['width'])) $this->conf['category.']['image.']['file.']['width'] = $this->conf['category.']['width'];  // set width from config (e.g. flexform if not empty)\r
+                               if (!empty($this->conf['category.']['height'])) $this->conf['category.']['image.']['file.']['height'] = $this->conf['category.']['height'];  // set height from config (e.g. flexform if not empty)\r
+                               $this->markerArray['###IMAGE###'] = $this->cObj->cObjGetSingle($this->conf['category.']['image'], $this->conf['category.']['image.']); // values from ts\r
+                               foreach ($row as $key => $value) { // one loop for every row entry\r
+                                       $this->markerArray['###'.strtoupper($key).'###'] = $value; // fill marker with value of row\r
+                               }\r
+                               \r
+                               $metarow = $this->div->EXIForTXT($row['picture'], $this->conf['category.']['metainformation']); // get metainformation\r
+                               $metarow = array_merge((array) $metarow, array('link_list' => $this->cObj->typolink('x', array('parameter' => $GLOBALS['TSFE']->id, 'additionalParams' => '&'.$this->prefixId.'[category]='.$this->div->fileInfo($picture[0], 'dirname'), 'useCacheHash' => 1, 'returnLast' => 'url') ))); // add link to list\r
+                               $this->cObj->start($metarow, 'tt_content'); // enable .field in typoscript for singleview\r
+                               $this->markerArray['###TEXT###'] = $this->cObj->cObjGetSingle($this->conf['category.']['text'], $this->conf['category.']['text.']); // values from ts\r
+               \r
+                               $this->wrappedSubpartArray['###CATEGORYLINK###'] = $this->cObj->typolinkWrap( array('parameter' => $GLOBALS['TSFE']->id, 'additionalParams' => '&'.$this->prefixId.'[category]='.$this->div->fileInfo($picture[0], 'dirname', 1), 'useCacheHash' => 1) ); // Link to same page with current folder\r
+                               \r
+                               $content_item .= $this->div->rowWrapper($this->cObj->substituteMarkerArrayCached($this->tmpl['category']['item'], $this->markerArray, array(), $this->wrappedSubpartArray), $i, 'category', count($folders_current[$pointer]), $this->conf); // add inner html to variable\r
+                       } \r
+               }\r
+               $this->num = $i; // current pictures for pagebrowser\r
+               $subpartArray['###CONTENT###'] = $content_item; // work on subpart 3\r
+               \r
+               // fill outer markers\r
+               $this->outerMarkerArray['###PAGEBROWSER###'] = $this->pagebrowser->start($this->conf, $this->piVars, $this->cObj, array('overall' => $this->overall, 'overall_cur' => ($this->conf['category.']['rows'] * $this->conf['category.']['columns']), 'pointer' => $pointer, 'perPage' => ($this->conf['category.']['rows'] * $this->conf['category.']['columns']))); // include categorybrowser\r
+               \r
+               $this->content = $this->cObj->substituteMarkerArrayCached($this->tmpl['category']['all'], $this->outerMarkerArray, $subpartArray); // Get html template\r
+               $this->content = $this->dynamicMarkers->main($this->conf, $this->cObj, $this->content); // Fill dynamic locallang or typoscript markers\r
+               $this->content = preg_replace("|###.*?###|i", '', $this->content); // Finally clear not filled markers\r
+               if (!empty($this->content) && ($i > 0 || !empty($this->piVars['category']))) return $this->content; // return HTML if $content is not empty AND ( if there are pictures OR category was chosen )\r
+       }       \r
+       \r
+\r
+}\r
+       \r
+\r
+if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/pi1/class.tx_wtgallery_category.php'])     {\r
+       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/pi1/class.tx_wtgallery_category.php']);\r
+}\r
+\r
+?>
\ No newline at end of file
diff --git a/pi1/class.tx_wtgallery_cooliris.php b/pi1/class.tx_wtgallery_cooliris.php
new file mode 100644 (file)
index 0000000..4f88b66
--- /dev/null
@@ -0,0 +1,85 @@
+<?php\r
+/***************************************************************\r
+*  Copyright notice\r
+*\r
+*  (c) 2008 Alex Kellner <alexander.kellner@einpraegsam.net>\r
+*  All rights reserved\r
+*\r
+*  This script is part of the TYPO3 project. The TYPO3 project is\r
+*  free software; you can redistribute it and/or modify\r
+*  it under the terms of the GNU General Public License as published by\r
+*  the Free Software Foundation; either version 2 of the License, or\r
+*  (at your option) any later version.\r
+*\r
+*  The GNU General Public License can be found at\r
+*  http://www.gnu.org/copyleft/gpl.html.\r
+*\r
+*  This script is distributed in the hope that it will be useful,\r
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+*  GNU General Public License for more details.\r
+*\r
+*  This copyright notice MUST APPEAR in all copies of the script!\r
+***************************************************************/\r
+\r
+require_once(PATH_tslib.'class.tslib_pibase.php');\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'lib/class.tx_wtgallery_div.php'); // load div class\r
+\r
+class tx_wtgallery_cooliris extends tslib_pibase {\r
+       \r
+       var $prefixId = 'tx_wtgallery_pi1';             // Same as class name\r
+       var $scriptRelPath = 'pi1/class.tx_wtgallery_single.php';       // Path to any file in pi1 for locallang\r
+       var $extKey = 'wt_gallery';     // The extension key.\r
+       var $mode = 'cooliris'; // mode name\r
+       \r
+       function start($conf, $piVars, $cObj) {\r
+               // config\r
+               $this->conf = $conf;\r
+               $this->piVars = $piVars;\r
+               $this->cObj = $cObj;\r
+               $this->pi_loadLL();\r
+               $this->div = t3lib_div::makeInstance('tx_wtgallery_div'); // Create new instance for div class\r
+               $fullscreen = $this->conf[$this->mode.'.']['allow_fullscreen'] == 1 ? 'true' : 'false'; // Fullscreen button\r
+               $scriptaccess = $this->conf[$this->mode.'.']['allow_scriptaccess'] == 1 ? 'always' : 'false'; // Script access button\r
+               \r
+               // let's go\r
+               // check if there are pictures in current folder\r
+               $startpath = $this->div->validatePicturePath($this->piVars['category'] ? $this->div->hash2folder($this->piVars['category'], $this->conf['main.']['path']) : $this->conf['main.']['path']); // startpath from piVars or from ts\r
+               $pictures = $this->div->getFiles($this->conf, $startpath, $this->conf[$this->mode.'.']['order'], $this->conf[$this->mode.'.']['limit']); // get all pictures from current folder\r
+               \r
+               if (count($pictures) > 0) { // if there are pictures in current folder\r
+                       $rssurl = t3lib_div::getIndpEnv('TYPO3_SITE_URL').$this->cObj->typolink('x', array('parameter' => $GLOBALS['TSFE']->id, 'additionalParams' => '&type=3135'.($this->piVars['category'] ? '&'.$this->prefixId.'[category]='.$this->piVars['category'] : ''), 'useCacheHash' => 1, 'returnLast' => 'url') );\r
+                       \r
+                       // add html code for showing swf\r
+                       $this->content = '\r
+                               <object id=\'coolirisOuter\' classid=\'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\' width=\'' . $this->conf[$this->mode.'.']['window_width'] . '\' height=\'' . $this->conf[$this->mode.'.']['window_height'] . '\'>\r
+                                       <param name=\'movie\' value=\'' . t3lib_div::getIndpEnv('TYPO3_SITE_URL') . $GLOBALS['TSFE']->tmpl->getFileName($this->conf['cooliris.']['swf']) . '\' />\r
+                                       <param name=\'flashvars\' value=\'feed=' . $rssurl . '\' />\r
+                                       <param name=\'allowFullScreen\' value=\'' . $fullscreen . '\' />\r
+                                       <param name=\'allowScriptAccess\' value=\'' . $scriptaccess . '\' />\r
+                                       <!--[if !IE]>-->\r
+                                               <object id=\'coolirisInner\' type=\'application/x-shockwave-flash\' data=\'' . t3lib_div::getIndpEnv('TYPO3_SITE_URL') . $GLOBALS['TSFE']->tmpl->getFileName($this->conf['cooliris.']['swf']) . '\' width=\'' . $this->conf[$this->mode.'.']['window_width'] . '\' height=\'' . $this->conf[$this->mode.'.']['window_height'] . '\'>\r
+                                                       <param name=\'flashvars\' value=\'feed=' . $rssurl . '\' />\r
+                                                       <param name=\'allowFullScreen\' value=\'' . $fullscreen . '\' />\r
+                                                       <param name=\'allowScriptAccess\' value=\'' . $scriptaccess . '\' />\r
+                                       <!--<![endif]-->\r
+                                       <div class="wt_gallery_noflash">' . $this->conf[$this->mode.'.']['noflash_message'] . '</div>\r
+                                       <!--[if !IE]>-->\r
+                                               </object>\r
+                                       <!--<![endif]-->\r
+                               </object>\r
+                       ';\r
+               }\r
+               \r
+               if (!empty($this->content)) return $this->content; // return HTML if $content is not empty\r
+       }       \r
+       \r
+\r
+}\r
+       \r
+\r
+if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/pi1/class.tx_wtgallery_cooliris.php'])     {\r
+       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/pi1/class.tx_wtgallery_cooliris.php']);\r
+}\r
+\r
+?>
\ No newline at end of file
diff --git a/pi1/class.tx_wtgallery_list.php b/pi1/class.tx_wtgallery_list.php
new file mode 100644 (file)
index 0000000..04ff0d0
--- /dev/null
@@ -0,0 +1,110 @@
+<?php\r
+/***************************************************************\r
+*  Copyright notice\r
+*\r
+*  (c) 2008 Alex Kellner <alexander.kellner@einpraegsam.net>\r
+*  All rights reserved\r
+*\r
+*  This script is part of the TYPO3 project. The TYPO3 project is\r
+*  free software; you can redistribute it and/or modify\r
+*  it under the terms of the GNU General Public License as published by\r
+*  the Free Software Foundation; either version 2 of the License, or\r
+*  (at your option) any later version.\r
+*\r
+*  The GNU General Public License can be found at\r
+*  http://www.gnu.org/copyleft/gpl.html.\r
+*\r
+*  This script is distributed in the hope that it will be useful,\r
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+*  GNU General Public License for more details.\r
+*\r
+*  This copyright notice MUST APPEAR in all copies of the script!\r
+***************************************************************/\r
+\r
+require_once(PATH_tslib.'class.tslib_pibase.php');\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'lib/class.tx_wtgallery_div.php'); // load div class\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'lib/class.tx_wtgallery_dynamicmarkers.php'); // file for dynamicmarker functions\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'lib/class.tx_wtgallery_list_pagebrowser.php'); // file for dynamicmarker functions\r
+\r
+class tx_wtgallery_list extends tslib_pibase {\r
+       \r
+       var $prefixId = 'tx_wtgallery_pi1';             // Same as class name\r
+       var $scriptRelPath = 'pi1/class.tx_wtgallery_list.php'; // Path to any file in pi1 for locallang\r
+       var $extKey = 'wt_gallery';     // The extension key.\r
+       \r
+       function start($conf, $piVars, $cObj) {\r
+               // config\r
+               $this->conf = $conf;\r
+               $this->piVars = $piVars;\r
+               $this->cObj = $cObj;\r
+               $this->pi_loadLL();\r
+               $this->div = t3lib_div::makeInstance('tx_wtgallery_div'); // Create new instance for div class\r
+               $this->dynamicMarkers = t3lib_div::makeInstance('tx_wtgallery_dynamicmarkers'); // Create new instance for dynamicmarker function\r
+               $this->pagebrowser = t3lib_div::makeInstance('tx_wtgallery_list_pagebrowser'); // Create new instance for pagebrowser function\r
+               $this->tmpl = $this->markerArray = $this->outerMarkerArray = $subpartArray = array(); $content_item = ''; // init\r
+               $this->tmpl['list']['all'] = $this->cObj->getSubpart($this->cObj->fileResource($this->conf['template.']['list']), '###WTGALLERY_LIST###'); // Load HTML Template\r
+               $this->tmpl['list']['item'] = $this->cObj->getSubpart($this->tmpl['list']['all'],'###ITEM###'); // work on subpart 2\r
+               \r
+               // let's go\r
+               $startpath = $this->div->validatePicturePath($this->piVars['category'] ? $this->div->hash2folder($this->piVars['category'], $this->conf['main.']['path']) : $this->conf['main.']['path']); // startpath from piVars or from ts\r
+               $pictures = $this->div->getFiles($this->conf, $startpath, $this->conf['list.']['order'], $this->conf['list.']['limit']); // get all pictures from current folder\r
+               $pictures_current = array_chunk((array) $pictures, ($this->conf['list.']['rows'] * $this->conf['list.']['columns'])); // split array in parts for pagebrowser\r
+               $this->overall = count($pictures); // count all pictures\r
+               $pointer = ($this->piVars['listpointer'] > 0 ? $this->piVars['listpointer'] : 0); // pointer\r
+               \r
+               if (count($pictures_current[$pointer]) > 0) { // if there are pictures\r
+                       for ($i=0; $i<count($pictures_current[$pointer]); $i++) { // one loop for every picture in current folder\r
+                               // let's start\r
+                               $row = array ( // write $row for .field in ts AND for markers in html template\r
+                                       'picture' => $pictures_current[$pointer][$i], // first entry of files array (e.g. fileadmin/pic1.jpg)\r
+                                       'tstamp' => filemtime($pictures_current[$pointer][$i]), // timestamp of file\r
+                                       'filename' => $this->div->fileInfo($pictures_current[$pointer][$i], 'filename'), // like pic\r
+                                       'dirname' => $this->div->fileInfo($pictures_current[$pointer][$i], 'dirname'), // like fileadmin/pics\r
+                                       'basename' => $this->div->fileInfo($pictures_current[$pointer][$i], 'basename'), // like pic.jpg\r
+                                       'extension' => $this->div->fileInfo($pictures_current[$pointer][$i], 'extension'), // like jpg\r
+                                       'currentfolder' => $this->div->fileInfo($pictures_current[$pointer][$i], 'currentfolder'), // like folder\r
+                                       'picturehash' => $this->div->hashCode($pictures_current[$pointer][$i]), // like 12345678\r
+                                       'pid_single' => ($this->conf['single.']['pid_single'] > 0 ? $this->conf['single.']['pid_single'] : $GLOBALS['TSFE']->id), // PID of single view\r
+                                       'link_single' => tslib_pibase::pi_linkTP_keepPIvars_url(array('show' => $this->div->hashCode($pictures_current[$pointer][$i])), 1, 0, ($this->conf['single.']['pid_single'] > 0 ? $this->conf['single.']['pid_single'] : 0)) // link to single view\r
+                               );\r
+                               $this->cObj->start($row, 'tt_content'); // enable .field in typoscript for singleview\r
+                               $this->markerArray = $this->div->markersClassStyle($i, 'list', $this->conf); // fill ###CLASS###\r
+                               if (($this->piVars['show'] == $this->div->hashCode($pictures_current[$pointer][$i])) || (!isset($this->piVars['show']) && $i == 0)) $this->markerArray['###CLASS###'] .= ' wtgallery_list_current'; // add string to div if current picture\r
+                               if (!empty($this->conf['list.']['width'])) $this->conf['list.']['image.']['file.']['width'] = $this->conf['list.']['width'];  // set width from config (e.g. flexform if not empty)\r
+                               if (!empty($this->conf['list.']['height'])) $this->conf['list.']['image.']['file.']['height'] = $this->conf['list.']['height'];  // set height from config (e.g. flexform if not empty)\r
+                               $this->markerArray['###IMAGE###'] = $this->cObj->cObjGetSingle($this->conf['list.']['image'], $this->conf['list.']['image.']); // values from ts\r
+                               foreach ($row as $key => $value) { // one loop for every row entry\r
+                                       $this->markerArray['###'.strtoupper($key).'###'] = $value; // fill marker with value of row\r
+                               }\r
+                               \r
+                               $metarow = $this->div->EXIForTXT($row['picture'], $this->conf['list.']['metainformation']); // get metainformation\r
+                               $this->cObj->start($metarow, 'tt_content'); // enable .field in typoscript for singleview\r
+                               $this->markerArray['###TEXT###'] = $this->cObj->cObjGetSingle($this->conf['list.']['text'], $this->conf['list.']['text.']); // values from ts\r
+                               \r
+                               $this->wrappedSubpartArray['###SINGLELINK###'][0] = '<a href="'.tslib_pibase::pi_linkTP_keepPIvars_url(array('show' => $this->div->hashCode($row['picture'])), 1, 0, ($this->conf['single.']['pid_single'] > 0 ? $this->conf['single.']['pid_single'] : 0)).'">'; // Link with piVars "show"\r
+                               $this->wrappedSubpartArray['###SINGLELINK###'][1] = '</a>'; // postfix for linkwrap\r
+                               \r
+                               $content_item .= $this->div->rowWrapper($this->cObj->substituteMarkerArrayCached($this->tmpl['list']['item'], $this->markerArray, array(), $this->wrappedSubpartArray), $i, 'list', count($pictures_current[$pointer]), $this->conf); // add inner html to variable\r
+                       } \r
+               }\r
+               \r
+               $this->num = $i; // current pictures for pagebrowser\r
+               $subpartArray['###CONTENT###'] = $content_item; // work on subpart 3\r
+               $this->outerMarkerArray['###PAGEBROWSER###'] = $this->pagebrowser->start($this->conf, $this->piVars, $this->cObj, array('overall' => $this->overall, 'overall_cur' => ($this->conf['list.']['rows'] * $this->conf['list.']['columns']), 'pointer' => $pointer, 'perPage' => ($this->conf['list.']['rows'] * $this->conf['list.']['columns']))); // includes pagebrowser function\r
+               \r
+               $this->content = $this->cObj->substituteMarkerArrayCached($this->tmpl['list']['all'], $this->outerMarkerArray, $subpartArray); // Get html template\r
+               $this->content = $this->dynamicMarkers->main($this->conf, $this->cObj, $this->content); // Fill dynamic locallang or typoscript markers\r
+               $this->content = preg_replace("|###.*?###|i", "", $this->content); // Finally clear not filled markers\r
+               if (!empty($this->content) && $i > 0) return $this->content; // return HTML if $content is not empty and if there are pictures\r
+       }       \r
+       \r
+\r
+}\r
+       \r
+\r
+if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/pi1/class.tx_wtgallery_list.php']) {\r
+       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/pi1/class.tx_wtgallery_list.php']);\r
+}\r
+\r
+?>
\ No newline at end of file
diff --git a/pi1/class.tx_wtgallery_pi1.php b/pi1/class.tx_wtgallery_pi1.php
new file mode 100644 (file)
index 0000000..6330d55
--- /dev/null
@@ -0,0 +1,172 @@
+<?php\r
+/***************************************************************\r
+*  Copyright notice\r
+*\r
+*  (c) 2006 Alex Kellner <alexander.kellner@einpraegsam.net>\r
+*  All rights reserved\r
+*\r
+*  This script is part of the TYPO3 project. The TYPO3 project is\r
+*  free software; you can redistribute it and/or modify\r
+*  it under the terms of the GNU General Public License as published by\r
+*  the Free Software Foundation; either version 2 of the License, or\r
+*  (at your option) any later version.\r
+*\r
+*  The GNU General Public License can be found at\r
+*  http://www.gnu.org/copyleft/gpl.html.\r
+*\r
+*  This script is distributed in the hope that it will be useful,\r
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+*  GNU General Public License for more details.\r
+*\r
+*  This copyright notice MUST APPEAR in all copies of the script!\r
+***************************************************************/\r
+\r
+require_once(PATH_tslib.'class.tslib_pibase.php');\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'pi1/class.tx_wtgallery_single.php'); // load class for single view\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'pi1/class.tx_wtgallery_list.php'); // load class for list view\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'pi1/class.tx_wtgallery_category.php'); // load class for category view\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'pi1/class.tx_wtgallery_cooliris.php'); // load class for cooliris view\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'lib/class.tx_wtgallery_div.php'); // load div class\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'lib/class.tx_wtgallery_coolirisrss.php'); // load class for cooliris RSS\r
+if (t3lib_extMgm::isLoaded('wt_doorman', 0)) require_once(t3lib_extMgm::extPath('wt_doorman').'class.tx_wtdoorman_security.php'); // load security class\r
+\r
+/**\r
+ * Plugin 'WT Gallery' for the 'wt_gallery' extension.\r
+ *\r
+ * @author     Alex <alexander.kellner@einpraegsam.net>\r
+ * @package    TYPO3\r
+ * @subpackage tx_wtgallery\r
+ */\r
+class tx_wtgallery_pi1 extends tslib_pibase {\r
+       \r
+       var $prefixId = 'tx_wtgallery_pi1';             // Same as class name\r
+       var $scriptRelPath = 'pi1/class.tx_wtgallery_pi1.php';  // Path to this script relative to the extension dir.\r
+       var $extKey = 'wt_gallery';     // The extension key.\r
+       \r
+       \r
+       // Gallery main function\r
+       function main ($content, $conf) {\r
+               $this->conf = $conf;\r
+               $this->pi_setPiVarDefaults();\r
+               $this->pi_loadLL();\r
+               $this->pi_initPIflexForm();\r
+               $this->div = t3lib_div::makeInstance('tx_wtgallery_div'); // Create new instance for div class\r
+               $this->single = t3lib_div::makeInstance('tx_wtgallery_single'); // Create new instance for single class\r
+               $this->list = t3lib_div::makeInstance('tx_wtgallery_list'); // Create new instance for single class\r
+               $this->category = t3lib_div::makeInstance('tx_wtgallery_category'); // Create new instance for category class\r
+               $this->cooliris = t3lib_div::makeInstance('tx_wtgallery_cooliris'); // Create new instance for cooliris view\r
+               $this->coolirisRSS = t3lib_div::makeInstance('tx_wtgallery_coolirisrss'); // Create new instance for cooliris RSS\r
+               $this->content = '';\r
+               \r
+               // config\r
+               $this->secure(); // Clean piVars\r
+               $this->config(); // Enable flexform values in config\r
+               $this->check(); // Fast check if all is ok\r
+               $mode = t3lib_div::trimExplode(',', $this->conf['main.']['mode'], 1); // split mode\r
+               \r
+               // let's go\r
+               if ($this->conf['main.']['mode'] && $this->conf['main.']['path']) { // only if mode and path are set\r
+                       for ($i=0; $i < count($mode); $i++) { // One loop for every selected mode\r
+                               \r
+                               switch ($mode[$i]) { // mode\r
+                                       case 'single': // if single mode is selected\r
+                                               $this->content .= $this->single->start($this->conf, $this->piVars, $this->cObj); // get single view\r
+                                               break;\r
+                                               \r
+                                       case 'list': // if list mode is selected\r
+                                               $this->content .= $this->list->start($this->conf, $this->piVars, $this->cObj); // get list view\r
+                                               break;\r
+                                               \r
+                                       case 'category': // if category mode is selected\r
+                                               $this->content .= $this->category->start($this->conf, $this->piVars, $this->cObj); // get category view\r
+                                               break;\r
+                                               \r
+                                       case 'cooliris': // if cooliris mode is selected\r
+                                               $this->content .= $this->cooliris->start($this->conf, $this->piVars, $this->cObj); // get cooliris listview\r
+                                               break;\r
+                               }\r
+                               \r
+                       }\r
+               }\r
+               \r
+               if (t3lib_div::GPvar('type') == 3135) { // typenum is 3135 (rss feed for cooliris)\r
+                       return $this->coolirisRSS->start($this->conf, $this->piVars, $this->cObj); // RSS Feed\r
+               }\r
+               \r
+               return $this->pi_wrapInBaseClass($this->content);\r
+       }\r
+       \r
+       \r
+       // enables flexform values in $conf\r
+       function config() {\r
+               // 1. add flexform values to $this->conf\r
+               if (is_array($this->cObj->data['pi_flexform']['data'])) { // if there are flexform values\r
+                       foreach ($this->cObj->data['pi_flexform']['data'] as $key => $value) { // every flexform category\r
+                               if (count($this->cObj->data['pi_flexform']['data'][$key]['lDEF']) > 0) { // if there are flexform values\r
+                                       foreach ($this->cObj->data['pi_flexform']['data'][$key]['lDEF'] as $key2 => $value2) { // every flexform option\r
+                                               if ($this->pi_getFFvalue($this->cObj->data['pi_flexform'], $key2, $key)) { // if value exists in flexform\r
+                                                       $this->conf[$key.'.'][$key2] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], $key2, $key); // overwrite $this->conf\r
+                                               }\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+               \r
+               // 2. validate picture path\r
+               if ($this->conf['main.']['path']) { // if picture path exists \r
+                       if (substr($this->conf['main.']['path'], -1, 1) != '/') $this->conf['main.']['path'] .= '/'; // add slash at the end if this is missing\r
+                       if (substr($this->conf['main.']['path'], 0, 1) == '/') $this->conf['main.']['path'] = substr($this->conf['main.']['path'], 1); // remove first slash if exits\r
+                       if (!t3lib_div::validPathStr($this->conf['main.']['path'])) { // picture path is not valid\r
+                               die ($this->extKey . ': Picture path not valid - please correct it!'); // stop script\r
+                       }\r
+               }\r
+               \r
+               // 3. set value for columns and rows if no value is set\r
+               if (empty($this->conf['list.']['rows'])) $this->conf['list.']['rows'] = 1000; // set 1000 for default lines\r
+               if (empty($this->conf['list.']['columns'])) $this->conf['list.']['columns'] = 1; // set 1 for default columns\r
+               if (empty($this->conf['category.']['rows'])) $this->conf['category.']['rows'] = 1000; // set 1000 for default lines\r
+               if (empty($this->conf['category.']['columns'])) $this->conf['category.']['columns'] = 1; // set 1 for default columns\r
+               \r
+               // 4. add hook for conf manipulation\r
+               if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extKey]['setup'])) { // Adds hook for processing\r
+                       foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extKey]['setup'] as $_classRef) {\r
+                               $_procObj = & t3lib_div::getUserObj($_classRef);\r
+                               $_procObj->setup($this->conf, $this->piVars, $this); // Enable setup manipulation\r
+                       }\r
+               }\r
+       }\r
+       \r
+       \r
+       // Function secure() uses wt_doorman to clear piVars\r
+       function secure() {\r
+               if (class_exists('tx_wtdoorman_security')) { // if doorman class exits\r
+                       $this->sec = t3lib_div::makeInstance('tx_wtdoorman_security'); // Create new instance for security class\r
+                       $this->sec->secParams = array ( // Allowed piVars type (int, text, alphanum, "value")\r
+                               'show' => 'int', // should be integer\r
+                               //'category' => 'alphanum ++ \/\._@-', // alphanum for folders extended with '/', '.' and '_'\r
+                               'category' => 'int', // category has to be an integer\r
+                               'listpointer' => 'int', // pointer for pagebrowser in listview should be integer\r
+                               'categorypointer' => 'int' // pointer for pagebrowser in categoryview should be integer\r
+                       );\r
+                       $this->piVars = $this->sec->sec($this->piVars); // overwrite piVars with piVars from doorman class\r
+               } else die ($this->extKey . ': Extension wt_doorman not found, please install first!'); // stop script\r
+       }\r
+       \r
+       \r
+       // Function check() makes a fast check if all is ok\r
+       function check() {\r
+               $this->div->init($this->conf); // init function\r
+               if (t3lib_div::GPvar('type') != 3135) $this->content .= $this->div->check4errors($this->conf['main.']['path'], 'Picture path not set - set in flexform or in constants'); // check for picture path\r
+               if (t3lib_div::GPvar('type') != 3135) $this->content .= $this->div->check4errors($this->conf['main.']['mode'], 'Mode not set - set mode in flexform or in constants'); // check for mode\r
+               if (t3lib_div::GPvar('type') != 3135) $this->content .= $this->div->check4errors($this->piVars['category'], 'No valid picture path', 2, 1); // check for correct path\r
+       }\r
+\r
+}\r
+       \r
+\r
+if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/pi1/class.tx_wtgallery_pi1.php'])  {\r
+       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/pi1/class.tx_wtgallery_pi1.php']);\r
+}\r
+\r
+?>
\ No newline at end of file
diff --git a/pi1/class.tx_wtgallery_pi1_wizicon.php b/pi1/class.tx_wtgallery_pi1_wizicon.php
new file mode 100644 (file)
index 0000000..9d822f7
--- /dev/null
@@ -0,0 +1,77 @@
+<?php\r
+/***************************************************************\r
+*  Copyright notice\r
+*\r
+*  (c) 2006 Alex <alex@wunschtacho.de>\r
+*  All rights reserved\r
+*\r
+*  This script is part of the TYPO3 project. The TYPO3 project is\r
+*  free software; you can redistribute it and/or modify\r
+*  it under the terms of the GNU General Public License as published by\r
+*  the Free Software Foundation; either version 2 of the License, or\r
+*  (at your option) any later version.\r
+*\r
+*  The GNU General Public License can be found at\r
+*  http://www.gnu.org/copyleft/gpl.html.\r
+*\r
+*  This script is distributed in the hope that it will be useful,\r
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+*  GNU General Public License for more details.\r
+*\r
+*  This copyright notice MUST APPEAR in all copies of the script!\r
+***************************************************************/\r
+\r
+\r
+\r
+\r
+/**\r
+ * Class that adds the wizard icon.\r
+ *\r
+ * @author     Alex <alex@wunschtacho.de>\r
+ * @package    TYPO3\r
+ * @subpackage tx_wtgallery\r
+ */\r
+class tx_wtgallery_pi1_wizicon {\r
+\r
+                                       /**\r
+                                        * Processing the wizard items array\r
+                                        *\r
+                                        * @param       array           $wizardItems: The wizard items\r
+                                        * @return      Modified array with wizard items\r
+                                        */\r
+                                       function proc($wizardItems)     {\r
+                                               global $LANG;\r
+\r
+                                               $LL = $this->includeLocalLang();\r
+\r
+                                               $wizardItems['plugins_tx_wtgallery_pi1'] = array(\r
+                                                       'icon'=>t3lib_extMgm::extRelPath('wt_gallery').'pi1/ce_wiz.gif',\r
+                                                       'title'=>$LANG->getLLL('pi1_title',$LL),\r
+                                                       'description'=>$LANG->getLLL('pi1_plus_wiz_description',$LL),\r
+                                                       'params'=>'&defVals[tt_content][CType]=list&defVals[tt_content][list_type]=wt_gallery_pi1'\r
+                                               );\r
+\r
+                                               return $wizardItems;\r
+                                       }\r
+\r
+                                       /**\r
+                                        * Reads the [extDir]/locallang.xml and returns the \$LOCAL_LANG array found in that file.\r
+                                        *\r
+                                        * @return      The array with language labels\r
+                                        */\r
+                                       function includeLocalLang()     {\r
+                                               $llFile = t3lib_extMgm::extPath(wt_gallery).'locallang.xml';\r
+                                               $LOCAL_LANG = t3lib_div::readLLXMLfile($llFile, $GLOBALS['LANG']->lang);\r
+                                               \r
+                                               return $LOCAL_LANG;\r
+                                       }\r
+                               }\r
+\r
+\r
+\r
+if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/pi1/class.tx_wtgallery_pi1_wizicon.php'])  {\r
+       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/pi1/class.tx_wtgallery_pi1_wizicon.php']);\r
+}\r
+\r
+?>
\ No newline at end of file
diff --git a/pi1/class.tx_wtgallery_single.php b/pi1/class.tx_wtgallery_single.php
new file mode 100644 (file)
index 0000000..24d8d66
--- /dev/null
@@ -0,0 +1,120 @@
+<?php\r
+/***************************************************************\r
+*  Copyright notice\r
+*\r
+*  (c) 2008 Alex Kellner <alexander.kellner@einpraegsam.net>\r
+*  All rights reserved\r
+*\r
+*  This script is part of the TYPO3 project. The TYPO3 project is\r
+*  free software; you can redistribute it and/or modify\r
+*  it under the terms of the GNU General Public License as published by\r
+*  the Free Software Foundation; either version 2 of the License, or\r
+*  (at your option) any later version.\r
+*\r
+*  The GNU General Public License can be found at\r
+*  http://www.gnu.org/copyleft/gpl.html.\r
+*\r
+*  This script is distributed in the hope that it will be useful,\r
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+*  GNU General Public License for more details.\r
+*\r
+*  This copyright notice MUST APPEAR in all copies of the script!\r
+***************************************************************/\r
+\r
+require_once(PATH_tslib.'class.tslib_pibase.php');\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'lib/class.tx_wtgallery_div.php'); // load div class\r
+require_once(t3lib_extMgm::extPath('wt_gallery').'lib/class.tx_wtgallery_dynamicmarkers.php'); // file for dynamicmarker functions\r
+\r
+class tx_wtgallery_single extends tslib_pibase {\r
+       \r
+       var $prefixId = 'tx_wtgallery_pi1';             // Same as class name\r
+       var $scriptRelPath = 'pi1/class.tx_wtgallery_single.php';       // Path to any file in pi1 for locallang\r
+       var $extKey = 'wt_gallery';     // The extension key.\r
+       var $mode = 'single'; // kind of mode\r
+       \r
+       function start($conf, $piVars, $cObj) {\r
+               // config\r
+               $this->conf = $conf;\r
+               $this->piVars = $piVars;\r
+               $this->cObj = $cObj;\r
+               $this->pi_loadLL();\r
+               $this->div = t3lib_div::makeInstance('tx_wtgallery_div'); // Create new instance for div class\r
+               $this->dynamicMarkers = t3lib_div::makeInstance('tx_wtgallery_dynamicmarkers'); // Create new instance for dynamicmarker function\r
+               $this->tmpl = $this->markerArray = $this->hash = array(); // init\r
+               $this->tmpl[$this->mode] = $this->cObj->getSubpart($this->cObj->fileResource($this->conf['template.'][$this->mode]), '###WTGALLERY_'.strtoupper($this->mode).'###'); // Load HTML Template\r
+               \r
+               // let's go\r
+               $this->startpath = $this->div->validatePicturePath($this->piVars['category'] ? $this->div->hash2folder($this->piVars['category'], $this->conf['main.']['path']) : $this->conf['main.']['path']); // startpath from piVars or from ts\r
+               if (!isset($this->piVars['show'])) { // GET param show is not set\r
+                       $files = $this->div->getFiles($this->conf, $this->startpath, $this->conf[$this->mode.'.']['order'], 1); // get pictures (limit 1)\r
+               } else { // GET param show was set\r
+                       $files = $this->div->getFiles($this->conf, $this->startpath, $this->conf[$this->mode.'.']['order'], $this->piVars['show']); // get pictures (limit 1)\r
+               }\r
+               \r
+               $this->browser();\r
+               \r
+               $row = array ( // write $row for .field in ts\r
+                       'picture' => $files[0], // first entry of files array (e.g. fileadmin/pic1.jpg)\r
+                       'tstamp' => filemtime($files[0]), // timestamp of file\r
+                       'filename' => $this->div->fileInfo($files[0], 'filename'), // like pic\r
+                       'dirname' => $this->div->fileInfo($files[0], 'dirname'), // like fileadmin/pics\r
+                       'basename' => $this->div->fileInfo($files[0], 'basename'), // like pic.jpg\r
+                       'extension' => $this->div->fileInfo($files[0], 'extension'), // like jpg\r
+                       'listview_link' => tslib_pibase::pi_linkTP_keepPIvars_url(array('show' => ''), 0, 0, $this->conf['list.']['pid_list']) // link to list view\r
+               );\r
+               $this->cObj->start($row, 'tt_content'); // enable .field in typoscript for singleview\r
+               \r
+               if (!empty($this->conf[$this->mode.'.']['width'])) $this->conf[$this->mode.'.']['image.']['file.']['width'] = $this->conf[$this->mode.'.']['width'];  // set width from config (e.g. flexform if not empty)\r
+               if (!empty($this->conf[$this->mode.'.']['height'])) $this->conf[$this->mode.'.']['image.']['file.']['height'] = $this->conf[$this->mode.'.']['height'];  // set width from config (e.g. flexform if not empty)\r
+               $this->markerArray['###IMAGE###'] = $this->cObj->cObjGetSingle($this->conf[$this->mode.'.']['image'], $this->conf[$this->mode.'.']['image.']); // values from ts\r
+               \r
+               $metarow = $this->div->EXIForTXT($row['picture'], $this->conf[$this->mode.'.']['metainformation']); // get metainformation\r
+               $this->cObj->start($metarow, 'tt_content'); // enable .field in typoscript for singleview\r
+               $this->markerArray['###TEXT###'] = $this->cObj->cObjGetSingle($this->conf[$this->mode.'.']['text'], $this->conf[$this->mode.'.']['text.']); // values from ts\r
+               \r
+               // ###LISTVIEWLINK###\r
+               $row = array ( // write $row for .field in ts\r
+                       'listview_link' => tslib_pibase::pi_linkTP_keepPIvars_url(array('show' => ''), 0, 0, $this->conf['list.']['pid_list'])\r
+               );\r
+               if ($this->conf[$this->mode.'.']['pid_single'] == $this->conf['list.']['pid_list']) $row = array(); // clear if listview and singleview in the same page\r
+               $this->cObj->start($row, 'tt_content'); // enable .field in typoscript for singleview\r
+               if ($this->conf[$this->mode.'.']['pid_single'] == $this->conf['list.']['pid_list']) $this->markerArray['###LISTVIEWLINK###'] = $this->cObj->cObjGetSingle($this->conf[$this->mode.'.']['listviewlink'], $this->conf[$this->mode.'.']['listviewlink.']); // values from ts\r
+               \r
+               \r
+               $this->content = $this->cObj->substituteMarkerArrayCached($this->tmpl[$this->mode], $this->markerArray, array(), $this->wrappedSubpartArray); // substitute Marker in Template\r
+               $this->content = $this->dynamicMarkers->main($this->conf, $this->cObj, $this->content); // Fill dynamic locallang or typoscript markers\r
+               $this->content = preg_replace('|###.*?###|i', '', $this->content); // Finally clear not filled markers\r
+               \r
+               if (!empty($this->content) && $this->markerArray['###IMAGE###']) return $this->content; // return HTML if $content is not empty and if there is a picture\r
+       }       \r
+       \r
+       \r
+       // adds next and previous button (wrappedSubpartArray)\r
+       function browser() {\r
+               $this->filearray = $this->div->getFiles($this->conf, $this->startpath, $this->conf[$this->mode.'.']['order'], $this->conf['list.']['limit'], 1); // get picture array with hash code\r
+               if (is_array($this->filearray)) { // if is array\r
+                       $this->curPicNo = (!isset($this->piVars['show']) ? 0 : array_search($this->piVars['show'], $this->filearray)); // Number of current picture (key in array)\r
+               \r
+                       if (array_key_exists(($this->curPicNo + 1), $this->filearray)) { // if next exists in array\r
+                               $this->hash['next'] = $this->filearray[($this->curPicNo + 1)]; // hash of next pic in array\r
+                               $this->wrappedSubpartArray['###NEXT###'][0] = '<a href="'.tslib_pibase::pi_linkTP_keepPIvars_url(array('show' => $this->hash['next']), 1, 0, 0).'">'; // Link with new "show" vars\r
+                               $this->wrappedSubpartArray['###NEXT###'][1] = '</a>'; // postfix for linkwrap\r
+                       }\r
+                       if (array_key_exists(($this->curPicNo - 1), $this->filearray)) { // if previous exists in array\r
+                               $this->hash['previous'] = $this->filearray[($this->curPicNo - 1)]; // hash of previous pic in array\r
+                               $this->wrappedSubpartArray['###PREVIOUS###'][0] = '<a href="'.tslib_pibase::pi_linkTP_keepPIvars_url(array('show' => $this->hash['previous']), 1, 0, 0).'">'; // Link with new "show" vars\r
+                               $this->wrappedSubpartArray['###PREVIOUS###'][1] = '</a>'; // postfix for linkwrap\r
+                       }\r
+               }\r
+       }\r
+       \r
+\r
+}\r
+       \r
+\r
+if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/pi1/class.tx_wtgallery_single.php'])       {\r
+       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/wt_gallery/pi1/class.tx_wtgallery_single.php']);\r
+}\r
+\r
+?>
\ No newline at end of file
diff --git a/pi1/clear.gif b/pi1/clear.gif
new file mode 100644 (file)
index 0000000..9ed1269
Binary files /dev/null and b/pi1/clear.gif differ
diff --git a/pi1/locallang.xml b/pi1/locallang.xml
new file mode 100644 (file)
index 0000000..a33d2df
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r
+<T3locallang>\r
+       <meta type="array">\r
+               <type>module</type>\r
+               <description>Language labels for plugin 'tx_wtgallery_pi1'</description>\r
+       </meta>\r
+       <data type="array">\r
+               <languageKey index="default" type="array">\r
+                       <label index="wtgallery_ll_title_category">Categories of Gallery</label>\r
+                       <label index="wtgallery_ll_title_list">Gallery list view</label>\r
+                       <label index="wtgallery_ll_title_single">Gallery single view</label>\r
+                       <label index="wtgallery_ll_startcategorylink">Back to first category</label>\r
+                       <label index="wtgallery_ll_listviewlink">Back to listview</label>\r
+                       <label index="wtgallery_ll_pagebrowser_upto">up to</label>\r
+                       <label index="wtgallery_ll_pagebrowser_within">within</label>\r
+                       <label index="wtgallery_ll_pagebrowser_page">Page %s</label>\r
+                       <label index="wtgallery_ll_coolirisError">Error in generating cooliris RSS on current page, because there are no pictures in the listview!</label>\r
+                       <label index="wtgallery_ll_coolirisErrorNoPath">Please set the startpath via typoscript and not only in the plugin - this is needed for cooliris!</label>\r
+                       <label index="wtgallery_ll_next">Next Picture</label>\r
+                       <label index="wtgallery_ll_previous">Previous Picture</label>\r
+               </languageKey>\r
+               <languageKey index="de" type="array">\r
+                       <label index="wtgallery_ll_title_category">Galeriekategorien</label>\r
+                       <label index="wtgallery_ll_title_list">Listenansicht</label>\r
+                       <label index="wtgallery_ll_title_single">Einzelansicht</label>\r
+                       <label index="wtgallery_ll_startcategorylink">Zurück zur ersten Kategorie</label>\r
+                       <label index="wtgallery_ll_listviewlink">Zurück zur Listenansicht</label>\r
+                       <label index="wtgallery_ll_pagebrowser_upto">bis</label>\r
+                       <label index="wtgallery_ll_pagebrowser_within">von insgesamt</label>\r
+                       <label index="wtgallery_ll_pagebrowser_page">Seite %s</label>\r
+                       <label index="wtgallery_ll_coolirisError">Auf der aktuellen Seite befinden sich keine Bilder in der Listenansicht, somit kann kein cooliris RSS erzeugt werden!</label>\r
+                       <label index="wtgallery_ll_coolirisErrorNoPath">Bitte den Ausgangspfad über Typoscript setzen und nicht nur über das Plugin, sonst kann das RSS für cooliris nicht erzeugt werden!</label>\r
+                       <label index="wtgallery_ll_next">Nächstes Bild</label>\r
+                       <label index="wtgallery_ll_previous">Vorheriges Bild</label>\r
+               </languageKey>\r
+               <languageKey index="it" type="array">\r
+                       <label index="wtgallery_ll_title_category">Lista delle categorie</label>\r
+                       <label index="wtgallery_ll_title_list">Lista</label>\r
+                       <label index="wtgallery_ll_title_single">Particolare</label>\r
+                       <label index="wtgallery_ll_startcategorylink">Vai alla lista delle start categorie</label>\r
+                       <label index="wtgallery_ll_listviewlink">Vai alla lista</label>\r
+                       <label index="wtgallery_ll_pagebrowser_upto">fino a</label>\r
+                       <label index="wtgallery_ll_pagebrowser_within">in tutto</label>\r
+                       <label index="wtgallery_ll_pagebrowser_page">Pagina %s</label>\r
+               </languageKey>\r
+       </data>\r
+</T3locallang>\r
diff --git a/templates/category.html b/templates/category.html
new file mode 100644 (file)
index 0000000..c518b14
--- /dev/null
@@ -0,0 +1,64 @@
+wt_gallery HTML Template for category view\r
+\r
+       --- Markers within loop ---\r
+       Imagetag (e.g. <img src="typo3temp/pic.jpg">):                  ###IMAGE###\r
+       Imagepath (e.g. typo3temp/pic.jpg):                                             ###PICTURE###\r
+       Picture filename (e.g. pic.jpg):                                                ###BASENAME###\r
+    Filename without extension (e.g. pic):                                     ###FILENAME###\r
+    Extension (e.g. jpg):                                                                      ###EXTENSION###\r
+    Relative path to this folder (e.g. fileadmin/folder/):     ###DIRNAME###\r
+    Timestamp of current picture:                                                      ###TSTAMP###\r
+       Name of folder:                                                                                 ###CURRENTFOLDER###\r
+    Image text (from EXIF or txt file):                                                ###TEXT###\r
+    Dynamic class (firstofrow, centerofrow, lastofrow):                ###CLASS###\r
+    Subpart link to list view:                                                         <!-- ###CATEGORYLINK### -->\r
+       \r
+       --- Markers out of the loop ---\r
+       Insert category browser                                                                 ###PAGEBROWSER###\r
+    \r
+\r
+       GLOBAL MARKERS:\r
+       Displaying any value from pi1/locallang.xml:                    ###WTGALLERY_LL_YOURFIELD### (Could be filled via locallang.xml or typoscript - see manual for details)\r
+       Displaying any value from typoscript:                                   ###WTGALLERY_TS_YOURFIELD### (Could be filled via typoscript - see manual for details)\r
+       \r
+       \r
+       \r
+<!-- ###WTGALLERY_CATEGORY### begin --> \r
+<div class="wtgallery_category_area">\r
+       <h2 class="wtgallery_category">###WTGALLERY_LL_TITLE_CATEGORY###</h2>\r
+       <!-- ###CONTENT### --><!-- ###ITEM### -->\r
+               <div class="wtgallery_categories ###CLASS###">\r
+                       <div class="wtgallery_category_pic">###IMAGE###</div>\r
+                       <div class="wtgallery_category_folder"><!-- ###CATEGORYLINK### -->###CURRENTFOLDER###<!-- ###CATEGORYLINK### --></div>\r
+               </div>\r
+       <!-- ###ITEM### --><!-- ###CONTENT### -->\r
+       <div class="clear"></div>\r
+       ###PAGEBROWSER###\r
+</div>\r
+<!-- ###WTGALLERY_CATEGORY### end -->\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+wt_directory HTML Template for category_browser view\r
+\r
+       Current page - from X to...:                                                    ###CURRENT_MIN###\r
+    Current page - to X pictures:                                                      ###CURRENT_MAX###\r
+    Overall pictures on all pages:                                                     ###OVERALL###\r
+    Insert HMENU (define via TS):                                                      ###PAGELINKS###\r
+    Insert link to start category (define via TS):                     ###STARTCATEGORYLINK###\r
+    \r
+       GLOBAL MARKERS:\r
+       Displaying any value from pi1/locallang.xml:                    ###WTGALLERY_LL_YOURFIELD### (Could be filled via locallang.xml or typoscript - see manual for details)\r
+       Displaying any value from typoscript:                                   ###WTGALLERY_TS_YOURFIELD### (Could be filled via typoscript - see manual for details)\r
+\r
+<!-- ###WTGALLERY_CATEGORY_PAGEBROWSER### begin --> \r
+       <div class="wtgallery_category_pagebrowser_area">   \r
+        <p>###CURRENT_MIN### ###WTGALLERY_LL_PAGEBROWSER_UPTO### ###CURRENT_MAX### ###WTGALLERY_LL_PAGEBROWSER_WITHIN### ###OVERALL###</p>\r
+        <p>###PAGELINKS###</p>\r
+        ###STARTCATEGORYLINK###\r
+       </div>\r
+<!-- ###WTGALLERY_CATEGORY_PAGEBROWSER### end --> 
\ No newline at end of file
diff --git a/templates/cooliris.html b/templates/cooliris.html
new file mode 100644 (file)
index 0000000..28ca2ba
--- /dev/null
@@ -0,0 +1,43 @@
+wt_gallery HTML Template for cooliris rss\r
+\r
+       --- Markers within loop ---\r
+       Picture resource (like typo3temp/picture.jpg)                   ###IMAGE###\r
+       Picture filename (e.g. pic.jpg):                                                ###BASENAME###\r
+    Filename without extension (e.g. pic):                                     ###FILENAME###\r
+    Extension (e.g. jpg):                                                                      ###EXTENSION###\r
+    Relative path to this folder (e.g. fileadmin/folder/):     ###DIRNAME###\r
+    Timestamp of current picture:                                                      ###TSTAMP###\r
+       Name of folder:                                                                                 ###CURRENTFOLDER###\r
+    \r
+    --- Markers out of loop ---\r
+    ###TITLE###\r
+    ###URL###\r
+    ###DESCRIPTION###\r
+    \r
+\r
+       GLOBAL MARKERS:\r
+       Displaying any value from pi1/locallang.xml:                    ###WTGALLERY_LL_YOURFIELD### (Could be filled via locallang.xml or typoscript - see manual for details)\r
+       Displaying any value from typoscript:                                   ###WTGALLERY_TS_YOURFIELD### (Could be filled via typoscript - see manual for details)\r
+    \r
+    \r
+<!-- ###WTGALLERY_COOLIRIS_RSS### begin --> \r
+    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r
+    <rss version="2.0" xmlns:media="http://search.yahoo.com/mrss" xmlns:atom="http://www.w3.org/2005/Atom">\r
+        <channel>\r
+                <title>wt_gallery</title>\r
+                <link>http://testumgebung.einpraegsam.net/</link>\r
+                <description>Description</description>\r
+                \r
+                <!-- ###CONTENT### --><!-- ###ITEM### -->\r
+                    <item>\r
+                                               <title>###FILENAME###</title>\r
+                               <link>###IMAGE###</link>\r
+                        <guid>###FILENAME###</guid>\r
+                        <media:thumbnail url="###IMAGE###" />\r
+                        <media:content url="###IMAGE###" type="image/jpeg" />\r
+                    </item>\r
+                <!-- ###ITEM### --><!-- ###CONTENT### -->\r
+        \r
+        </channel>\r
+    </rss>\r
+<!-- ###WTGALLERY_COOLIRIS_RSS### end --> 
\ No newline at end of file
diff --git a/templates/list.html b/templates/list.html
new file mode 100644 (file)
index 0000000..2fc12b9
--- /dev/null
@@ -0,0 +1,61 @@
+wt_gallery HTML Template for list view\r
+\r
+       --- Markers within loop ---\r
+       Imagetag (e.g. <img src="typo3temp/pic.jpg">):                  ###IMAGE###\r
+       Imagepath (e.g. typo3temp/pic.jpg):                                             ###PICTURE###\r
+       Picture filename (e.g. pic.jpg):                                                ###BASENAME###\r
+    Filename without extension (e.g. pic):                                     ###FILENAME###\r
+    Extension (e.g. jpg):                                                                      ###EXTENSION###\r
+    Relative path to this folder (e.g. fileadmin/folder/):     ###DIRNAME###\r
+    Timestamp of current picture:                                                      ###TSTAMP###\r
+       Name of folder:                                                                                 ###CURRENTFOLDER###\r
+    Image text (from EXIF or txt file):                                                ###TEXT###\r
+    Dynamic class (firstofrow, centerofrow, lastofrow):                ###CLASS###\r
+    Subpart for Single view link:                                                      <!-- ###SINGLELINK### -->Image<!-- ###SINGLELINK### -->\r
+    \r
+    --- Markers out of the loop ---\r
+    Inserts pagebrowser to Marker                                                      ###PAGEBROWSER###\r
+    \r
+\r
+       GLOBAL MARKERS:\r
+       Displaying any value from pi1/locallang.xml:                    ###WTGALLERY_LL_YOURFIELD### (Could be filled via locallang.xml or typoscript - see manual for details)\r
+       Displaying any value from typoscript:                                   ###WTGALLERY_TS_YOURFIELD### (Could be filled via typoscript - see manual for details)\r
+       \r
+       \r
+       \r
+<!-- ###WTGALLERY_LIST### begin --> \r
+    <div class="wtgallery_list_area">\r
+        <h2 class="wtgallery_list">###WTGALLERY_LL_TITLE_LIST###</h2>\r
+        <!-- ###CONTENT### --><!-- ###ITEM### -->\r
+            <div class="wtgallery_list ###CLASS###">\r
+                ###IMAGE###\r
+            </div>\r
+        <!-- ###ITEM### --><!-- ###CONTENT### -->\r
+        <div class="clear"></div>\r
+        ###PAGEBROWSER###\r
+    </div>\r
+<!-- ###WTGALLERY_LIST### end -->\r
+\r
+\r
+\r
+\r
+\r
+wt_gallery HTML Template for pagebrowser in listview\r
+\r
+       Current page - from X to...:                                            ###CURRENT_MIN###\r
+    Current page - to X pictures:                                              ###CURRENT_MAX###\r
+    Overall pictures on all pages:                                             ###OVERALL###\r
+    Insert HMENU:                                                                              ###PAGELINKS###\r
+\r
+       GLOBAL MARKERS:\r
+       Displaying any value from pi1/locallang.xml:            ###WTGALLERY_LL_YOURFIELD### (Could be filled via locallang.xml or typoscript - see manual for details)\r
+       Displaying any value from typoscript:                           ###WTGALLERY_TS_YOURFIELD### (Could be filled via typoscript - see manual for details)\r
+       \r
+       \r
+       \r
+<!-- ###WTGALLERY_LIST_PAGEBROWSER### begin --> \r
+    <div class="wtgallery_list_pagebrowser_area">\r
+        <p>###CURRENT_MIN### ###WTGALLERY_LL_PAGEBROWSER_UPTO### ###CURRENT_MAX### ###WTGALLERY_LL_PAGEBROWSER_WITHIN### ###OVERALL###</p>\r
+        <p>###PAGELINKS###</p>\r
+    </div>\r
+<!-- ###WTGALLERY_LIST_PAGEBROWSER### end -->
\ No newline at end of file
diff --git a/templates/single.html b/templates/single.html
new file mode 100644 (file)
index 0000000..d9bd828
--- /dev/null
@@ -0,0 +1,37 @@
+wt_directory HTML Template for single view\r
+\r
+       Imagetag (e.g. <img src="typo3temp/pic.jpg">):          ###IMAGE###\r
+    Image text (from EXIF or txt file):                                        ###TEXT###\r
+    Picture (e.g. fileadmin/pics/pic.jpg):                             ###PICTURE###\r
+    Filename (e.g. pic):                                                               ###FILENAME###\r
+    Dirname (e.g. fileadmin/pics):                                             ###DIRNAME###\r
+    Basename (e.g. pic.jpg):                                                   ###BASENAME###\r
+    Extension (e.g. jpg):                                                              ###EXTENSION###\r
+    Timestamp of changedate:                                                   ###TSTAMP###\r
+    Insert link to listview (define via TS):                   ###LISTVIEWLINK###\r
+    Subpart for next link:                                                             <!-- ###NEXT### -->Next<!-- ###NEXT### -->\r
+    Subpart for previous link:                                                 <!-- ###PREVIOUS### -->Previous<!-- ###PREVIOUS### -->\r
+    \r
+\r
+       GLOBAL MARKERS:\r
+       Displaying any value from pi1/locallang.xml:            ###WTGALLERY_LL_YOURFIELD### (Could be filled via locallang.xml or typoscript - see manual for details)\r
+       Displaying any value from typoscript:                           ###WTGALLERY_TS_YOURFIELD### (Could be filled via typoscript - see manual for details)\r
+\r
+\r
+\r
+<!-- ###WTGALLERY_SINGLE### begin -->\r
+       <div class="wtgallery wtgallery_single wt_gallery_single_###FILENAME###">\r
+               <h2 class="wtgallery_single">###WTGALLERY_LL_TITLE_SINGLE###</h2>\r
+        ###IMAGE###\r
+        <div class="wtgallery_single_browser">\r
+               <div class="wtgallery_single_browser_previous">\r
+               <!-- ###PREVIOUS### -->###WTGALLERY_LL_PREVIOUS###<!-- ###PREVIOUS### -->\r
+            </div>\r
+            <div class="wtgallery_single_browser_next">\r
+               <!-- ###NEXT### -->###WTGALLERY_LL_NEXT###<!-- ###NEXT### -->\r
+            </div>\r
+        </div>\r
+        ###TEXT###\r
+        ###LISTVIEWLINK###\r
+    </div>\r
+<!-- ###WTGALLERY_SINGLE### end -->
\ No newline at end of file