PageRenderTime 33ms CodeModel.GetById 6ms RepoModel.GetById 0ms app.codeStats 1ms

/wordpress/wp-content/plugins/podpress/podpress_admin_class.php

https://github.com/bill742/verbalbrew
PHP | 1894 lines | 1716 code | 119 blank | 59 comment | 554 complexity | 810b719e166281858d41ab21b423f9da MD5 | raw file
Possible License(s): BSD-3-Clause, GPL-3.0, AGPL-1.0, LGPL-2.1, GPL-2.0
  1. <?php
  2. /*
  3. License:
  4. ==============================================================================
  5. Copyright 2006 Dan Kuykendall (email : dan@kuykendall.org)
  6. This program is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2 of the License, or
  9. (at your option) any later version.
  10. This program is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. GNU General Public License for more details.
  14. You should have received a copy of the GNU General Public License
  15. along with this program; if not, write to the Free Software
  16. Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-107 USA
  17. */
  18. class podPressAdmin_class extends podPress_class
  19. {
  20. function podPressAdmin_class() {
  21. parent::cleanup_itunes_keywords();
  22. $this->podPress_class();
  23. return;
  24. }
  25. /*************************************************************/
  26. /* Functions for editing and saving posts */
  27. /*************************************************************/
  28. function page_form() {
  29. return $this->post_form('page');
  30. }
  31. function post_form($entryType = 'post') {
  32. if(!is_object($GLOBALS['post']) && isset($GLOBALS['post_cache'][$GLOBALS['post']])) {
  33. $post = $GLOBALS['post_cache'][$GLOBALS['post']];
  34. } else {
  35. $post = $GLOBALS['post'];
  36. }
  37. $post = $this->addPostData($post, true);
  38. if(($_GET['action'] == 'edit')) {
  39. $post_id = $_GET['post'];
  40. if(!is_array($post->podPressMedia)) {
  41. $post->podPressMedia = array();
  42. }
  43. }
  44. $files = array();
  45. $mediaFilePath = stripslashes($this->settings['mediaFilePath']);
  46. if(@is_dir($mediaFilePath)) {
  47. $dh = opendir($mediaFilePath);
  48. while (false !== ($filename = readdir($dh))) {
  49. if($filename != '.' && $filename != '..' && !is_dir($mediaFilePath.'/'.$filename) && !in_array(podPress_getFileExt($filename), array('php', 'html'))) {
  50. $files[] = $filename;
  51. }
  52. }
  53. natcasesort($files);
  54. }
  55. if($this->settings['enablePodangoIntegration']) {
  56. if(!empty($post->podPressPostSpecific['PodangoEpisodeID'])) {
  57. if(empty($post->podPressPostSpecific['PodangoMediaFileID'])) {
  58. $x = $this->podangoapi->GetEpisode($post->podPressPostSpecific['PodangoEpisodeID']);
  59. $post->podPressPostSpecific['PodangoMediaFileID'] = $x['MediaFileId'];
  60. unset($x);
  61. }
  62. $podangoMediaFiles = $this->podangoapi->GetMediaFile($post->podPressPostSpecific['PodangoMediaFileID']);
  63. } else {
  64. $podangoMediaFiles = $this->podangoapi->GetMediaFiles();
  65. }
  66. }
  67. //echo '<script type="text/javascript" src="'.podPress_url().'js/podpress_admin_postedit.js"></script>'."\n";
  68. echo '<script type="text/javascript">'."\n";
  69. echo "var podPressMaxMediaFiles = ".$this->settings['maxMediaFiles'].";\n";
  70. $newMediaDefaults = array();
  71. echo "var newMediaDefaults = new Array();\n";
  72. $newMediaDefaults['URI'] = '';
  73. echo "newMediaDefaults['URI'] = '".$newMediaDefaults['URI']."';\n";
  74. $newMediaDefaults['title'] = '';
  75. echo "newMediaDefaults['title'] = '".$newMediaDefaults['title']."';\n";
  76. $newMediaDefaults['type'] = 'audio_mp3';
  77. echo "newMediaDefaults['type'] = '".$newMediaDefaults['type']."';\n";
  78. $newMediaDefaults['size'] = '';
  79. echo "newMediaDefaults['size'] = '".$newMediaDefaults['size']."';\n";
  80. $newMediaDefaults['duration'] = '';
  81. echo "newMediaDefaults['duration'] = '".$newMediaDefaults['duration']."';\n";
  82. $newMediaDefaults['dimensionW'] = '320';
  83. echo "newMediaDefaults['dimensionW'] = '".$newMediaDefaults['dimensionW']."';\n";
  84. $newMediaDefaults['dimensionH'] = '240';
  85. echo "newMediaDefaults['dimensionH'] = '".$newMediaDefaults['dimensionH']."';\n";
  86. $newMediaDefaults['previewImage'] = podPress_url().'images/vpreview_center.png';
  87. echo "newMediaDefaults['previewImage'] = '".$newMediaDefaults['previewImage']."';\n";
  88. $newMediaDefaults['rss'] = 'false';
  89. echo "newMediaDefaults['rss'] = ".$newMediaDefaults['rss'].";\n";
  90. $newMediaDefaults['atom'] = 'true';
  91. echo "newMediaDefaults['atom'] = ".$newMediaDefaults['atom'].";\n";
  92. $newMediaDefaults['feedonly'] = 'true';
  93. echo "newMediaDefaults['feedonly'] = ".$newMediaDefaults['feedonly'].";\n";
  94. $newMediaDefaults['disablePlayer'] = 'false';
  95. echo "newMediaDefaults['disablePlayer'] = ".$newMediaDefaults['disablePlayer'].";\n";
  96. $newMediaDefaults['disablePreview'] = 'false';
  97. echo "newMediaDefaults['disablePreview'] = ".$newMediaDefaults['disablePreview'].";\n";
  98. $newMediaDefaults['content_level'] = 'free';
  99. echo "newMediaDefaults['content_level'] = '".$newMediaDefaults['content_level']."';\n";
  100. $newMediaDefaults['showme'] = 'false';
  101. echo "newMediaDefaults['showme'] = ".$newMediaDefaults['showme'].";\n";
  102. if(empty($post->podPressMedia)) {
  103. $num = 0;
  104. } else {
  105. $num = count($post->podPressMedia);
  106. }
  107. while ($num < $this->settings['maxMediaFiles']) {
  108. $post->podPressMedia[$num] = $newMediaDefaults;
  109. $num++;
  110. }
  111. $num = 0;
  112. while ($num < $this->settings['maxMediaFiles']) {
  113. if(!isset($post->podPressMedia[$num]['showme'])) {
  114. $post->podPressMedia[$num]['showme'] = 'true';
  115. }
  116. if($post->podPressMedia[$num]['showme'] == 'false') {
  117. $num++;
  118. continue;
  119. }
  120. if($this->settings['enablePodangoIntegration']) {
  121. if($podangoMediaFiles[$post->podPressPostSpecific['PodangoMediaFileID']]['Filename'] == basename($post->podPressMedia[$num]['URI'])) {
  122. $post->podPressMedia[$num]['URI'] = 'Podango:'.$podangoMediaFiles[$post->podPressPostSpecific['PodangoMediaFileID']]['Podcast'].':'.$podangoMediaFiles[$post->podPressPostSpecific['PodangoMediaFileID']]['ID'].':'.$podangoMediaFiles[$post->podPressPostSpecific['PodangoMediaFileID']]['EpisodeID'].':'.$podangoMediaFiles[$post->podPressPostSpecific['PodangoMediaFileID']]['Filename'];
  123. }
  124. }
  125. if($post->podPressMedia[$num]['rss'] == 'on') {
  126. $post->podPressMedia[$num]['rss'] = 'true';
  127. } else {
  128. $post->podPressMedia[$num]['rss'] = 'false';
  129. }
  130. if($post->podPressMedia[$num]['atom'] == 'on') {
  131. $post->podPressMedia[$num]['atom'] = 'true';
  132. } else {
  133. $post->podPressMedia[$num]['atom'] = 'false';
  134. }
  135. if($post->podPressMedia[$num]['feedonly'] == 'on') {
  136. $post->podPressMedia[$num]['feedonly'] = 'true';
  137. } else {
  138. $post->podPressMedia[$num]['feedonly'] = 'false';
  139. }
  140. if(!isset($post->podPressMedia[$num]['disablePlayer']) || $post->podPressMedia[$num]['disablePlayer'] == false || $post->podPressMedia[$num]['disablePlayer'] == 'false') {
  141. $post->podPressMedia[$num]['disablePlayer'] = 'false';
  142. } else {
  143. $post->podPressMedia[$num]['disablePlayer'] = 'true';
  144. }
  145. if(!isset($post->podPressMedia[$num]['disablePreview']) || $post->podPressMedia[$num]['disablePreview'] == false || $post->podPressMedia[$num]['disablePreview'] == 'false') {
  146. $post->podPressMedia[$num]['disablePreview'] = 'false';
  147. } else {
  148. $post->podPressMedia[$num]['disablePreview'] = 'true';
  149. }
  150. if($post->podPressMedia[$num]['premium_only'] == 'on' || $post->podPressMedia[$num]['premium_only'] == true) {
  151. $post->podPressMedia[$num]['content_level'] = 'premium_content';
  152. }
  153. if(!isset($post->podPressMedia[$num]['content_level'])) {
  154. $post->podPressMedia[$num]['content_level'] = 'free';
  155. }
  156. echo "\n";
  157. echo "podPressAddMediaFile(".$post->podPressMedia[$num]['showme'].", '".js_escape($post->podPressMedia[$num]['URI'])."', '".js_escape($post->podPressMedia[$num]['URI_torrent'])."', '".js_escape($post->podPressMedia[$num]['title'])."', '".$post->podPressMedia[$num]['type']."', '".$post->podPressMedia[$num]['size']."', '".$post->podPressMedia[$num]['duration']."', '".$post->podPressMedia[$num]['dimensionW']."', '".$post->podPressMedia[$num]['dimensionH']."', '".$post->podPressMedia[$num]['previewImage']."', ".$post->podPressMedia[$num]['rss'].", ".$post->podPressMedia[$num]['atom'].", ".$post->podPressMedia[$num]['feedonly'].", ".$post->podPressMedia[$num]['disablePlayer'].", '".$post->podPressMedia[$num]['content_level']."');\n";
  158. $num++;
  159. }
  160. echo '</script>'."\n";
  161. echo '<input type="hidden" id="podPressMedia_defaultpreviewImage" value="'.PODPRESS_URL.'/images/vpreview_center.png" />'."\n";
  162. // NONCE_KEY has been introduced in WP 2.7 the first time
  163. echo '<input type="hidden" id="podPress_AJAX_sec" value="' . wp_create_nonce('Af|F07*wC7g-+OX$;|Z5;R@Pi]ZgoU|Zex8=`?mO-Mdvu+WC6l=6<O^2d~+~U3MM') . '" />'."\n";
  164. echo '<div id="podPressstuff" class="dbx-group">'."\n";
  165. echo ' <fieldset id="podpresscontent" class="dbx-box">'."\n";
  166. if ( 'page' == $entryType ) {
  167. echo ' <h3 class="dbx-handle">'.__('podPress - podcasting settings of this page', 'podpress').'</h3> '."\n";
  168. } else {
  169. echo ' <h3 class="dbx-handle">'.__('podPress - podcasting settings of this post', 'podpress').'</h3> '."\n";
  170. }
  171. echo ' <div class="dbx-content" id="podPress_mediaFileList">'."\n";
  172. echo ' <strong>'.__('Podcasting Files:', 'podpress').'</strong><br/>'."\n";
  173. // debug start
  174. $num = 0;
  175. while ($num < $this->settings['maxMediaFiles']) {
  176. if(!isset($post->podPressMedia[$num])) {
  177. $num++;
  178. continue;
  179. }
  180. $thisMedia = $post->podPressMedia[$num];
  181. if($thisMedia['showme'] == 'true') {
  182. $display_text = 'block';
  183. } else {
  184. $display_text = 'none';
  185. }
  186. echo ' <div id="podPressMediaFileContainer_'.$num.'" class="wrap" style="visibility: visible; display: '.$display_text.';">'."\n";
  187. echo ' <table border="0" style="width: 100%;"><tr><td style="border-right-style: none; text-align: left;"><label><strong>'.__('Media File:', 'podpress').'</strong> </label></td>';
  188. echo ' <td style="border-left-style: none; text-align: right;">';
  189. echo ' <input type="button" value="'.__('Move Up', 'podpress').'" onclick="podPressMoveFile('.$num.', \'up\'); podPressDisplayMediaFiles();"/>'."\n";
  190. echo ' <input type="button" value="'.__('Move Down', 'podpress').'" onclick="podPressMoveFile('.$num.', \'down\'); podPressDisplayMediaFiles();"/>'."\n";
  191. echo ' <input type="button" name="podPressAddAnother" value="'.__('Remove File', 'podpress').'" onclick="podPressRemoveFile('.$num.'); podPressDisplayMediaFiles();"/>';
  192. echo ' </td></tr></table>'."\n";
  193. echo ' <table border="0">'."\n";
  194. echo ' <tr>'."\n";
  195. echo ' <td>'."\n";
  196. echo ' <label for="podPressMedia_'.$num.'_URI">'.__('Location', 'podpress').': </label>'."\n";
  197. echo ' </td>'."\n";
  198. echo ' <td>'."\n";
  199. if(!empty($files) || $this->settings['enablePodangoIntegration']) {
  200. $fileOptionList = '';
  201. echo ' <select name="podPressMedia['.$num.'][URI]" id="podPressMedia_'.$num.'_URI" width="35" onchange="javascript: if(this.value==\'!\') { podPress_customSelectVal(this, \'Specifiy URL.\'); } podPressMediaFiles['.$num.'][\'URI\'] = this.value; podPressDetectType('.$num.');">'."\n";
  202. echo ' <option value="!">'.__('Specify URL ...', 'podpress').'</option>'."\n";
  203. $fileSelected = false;
  204. if($this->settings['enablePodangoIntegration']) {
  205. $podangoOptGroup = '';
  206. $podangoFirstOptGroup = true;
  207. foreach($podangoMediaFiles as $podangoMediaFile) {
  208. if(!empty($podangoMediaFile['EpisodeID']) && $podangoMediaFile['EpisodeID'] != $post->podPressPostSpecific['PodangoEpisodeID'] && $post->post_title != $podangoMediaFile['EpisodeTitle']) {
  209. continue;
  210. }
  211. if($podangoOptGroup != $podangoMediaFile['Podcast']) {
  212. $podangoOptGroup = $podangoMediaFile['Podcast'];
  213. if(!$podangoFirstOptGroup) {
  214. echo " </optgroup>\n";
  215. }
  216. $x = $this->podangoapi->GetPodcast($podangoMediaFile['Podcast'], true);
  217. echo ' <optgroup name="PodangoOptGroup'.$podangoMediaFile['Podcast'].'" label="Podango Podcast: '.$x['Title'].'">'."\n";
  218. unset($x);
  219. }
  220. $key = 'Podango:'.$podangoMediaFile['Podcast'].':'.$podangoMediaFile['ID'].':'.$podangoMediaFile['EpisodeID'].':'.$podangoMediaFile['Filename'];
  221. if($key == $thisMedia['URI']) {
  222. $xSelected = ' selected="selected"';
  223. $fileSelected = true;
  224. } else {
  225. $xSelected = '';
  226. }
  227. echo ' <option value="'.$key.'"'.$xSelected.'>'.$podangoMediaFile['Filename'].'</option>'."\n";
  228. }
  229. echo " </optgroup>\n";
  230. echo ' <optgroup name="LocallyHosted" label="Locally Hosted">'."\n";
  231. }
  232. foreach ($files as $key=>$val) {
  233. if(is_numeric($key)) {
  234. $key = $val;
  235. }
  236. if($key == $thisMedia['URI']) {
  237. $xSelected = ' selected="selected"';
  238. $fileSelected = true;
  239. } else {
  240. $xSelected = '';
  241. }
  242. if ( TRUE == version_compare(PHP_VERSION, '5.0', '<') ) { // html_entity_decode can not handle the charset UTF-8 in most of the PHP 4 version
  243. $fileOptionList .= ' <option value="'.attribute_escape(htmlentities($key)).'"'.$xSelected.'>'.htmlentities(podPress_stringLimiter($val, 100, true)).'</option>'."\n";
  244. } else {
  245. if ( FALSE === stristr(PHP_OS, 'WIN') ) {
  246. $fileOptionList .= ' <option value="'.attribute_escape(htmlentities($key, ENT_COMPAT, $blog_charset)).'"'.$xSelected.'>'.htmlentities(podPress_stringLimiter($val, 100, true), ENT_COMPAT, $blog_charset).'</option>'."\n";
  247. } else {
  248. $fileOptionList .= ' <option value="'.attribute_escape(htmlentities($key)).'"'.$xSelected.'>'.htmlentities(podPress_stringLimiter($val, 100, true)).'</option>'."\n";
  249. }
  250. }
  251. }
  252. if ( !$fileSelected ) {
  253. if ( TRUE == version_compare(PHP_VERSION, '5.0', '<') ) { // html_entity_decode can not handle the charset UTF-8 in most of the PHP 4 version
  254. echo ' <option value="'.attribute_escape(htmlentities($thisMedia['URI'])).'" selected="selected">'.htmlentities(podPress_stringLimiter($thisMedia['URI'], 100, true)).'</option>'."\n";
  255. } else {
  256. if ( FALSE === stristr(PHP_OS, 'WIN') ) {
  257. echo ' <option value="'.attribute_escape(htmlentities($thisMedia['URI']), ENT_COMPAT, $blog_charset).'" selected="selected">'.htmlentities(podPress_stringLimiter($thisMedia['URI'], 100, true), ENT_COMPAT, $blog_charset).'</option>'."\n";
  258. } else {
  259. echo ' <option value="'.attribute_escape($thisMedia['URI']).'" selected="selected">'.htmlentities(podPress_stringLimiter($thisMedia['URI'], 100, true), ENT_COMPAT, $blog_charset).'</option>'."\n";
  260. }
  261. }
  262. }
  263. echo $fileOptionList;
  264. unset($fileOptionList);
  265. if($this->settings['enablePodangoIntegration']) {
  266. echo " </optgroup>\n";
  267. }
  268. echo ' </select>'."\n";
  269. echo ' <input type="hidden" id="podPressMedia_'.$num.'_cleanURI" value="no" />'."\n";
  270. } else {
  271. echo ' <input type="text" id="podPressMedia_'.$num.'_URI" name="podPressMedia['.$num.'][URI]" size="40" value="'.attribute_escape($thisMedia['URI']).'" onchange="javascript: podPressMediaFiles['.$num.'][\'URI\'] = this.value; podPressDetectType('.$num.');" />'."\n";
  272. echo ' <span id="podPressMedia_'.$num.'_URI_chrWarning" class="podpress_notice podPressMedia_URI_chrWarning"> '.sprintf(__('<strong>Notice:</strong> It is not recommended to use other than these characters: %1$s or whitespaces in file and folder names.', 'podpress'), 'abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 .:/_-\ ').'</span>'."\n";
  273. echo ' <input type="hidden" id="podPressMedia_'.$num.'_cleanURI" value="yes" />'."\n";
  274. }
  275. echo ' </td>'."\n";
  276. echo ' </tr>'."\n";
  277. if($this->settings['enableTorrentCasting']) {
  278. echo ' <tr>'."\n";
  279. echo ' <td>'."\n";
  280. echo ' <label for="podPressMedia_'.$num.'_URItorrent">'.__('.torrent Location', 'podpress').'</label>: '."\n";
  281. echo ' </td>'."\n";
  282. echo ' <td>'."\n";
  283. echo ' <input type="text" id="podPressMedia_'.$num.'_URItorrent" name="podPressMedia['.$num.'][URI_torrent]" size="40" value="'.attribute_escape($thisMedia['URI_torrent']).'" onchange="javascript: podPressMediaFiles['.$num.'][\'URI_torrent\'] = this.value;" />'."\n";
  284. echo ' </td>'."\n";
  285. echo ' </tr>'."\n";
  286. }
  287. echo ' <tr>'."\n";
  288. echo ' <td>'."\n";
  289. echo ' <label for="podPressMedia_'.$num.'_title">'.__('Title', 'podpress').'</label>: '."\n";
  290. echo ' </td>'."\n";
  291. echo ' <td>'."\n";
  292. echo ' <input type="text" id="podPressMedia_'.$num.'_title" name="podPressMedia['.$num.'][title]" size="40" value="'.attribute_escape($thisMedia['title']).'" onchange="javascript: podPressMediaFiles['.$num.'][\'title\'] = this.value;" />'."\n";
  293. echo ' </td>'."\n";
  294. echo ' </tr>'."\n";
  295. echo ' <tr>'."\n";
  296. echo ' <td>'."\n";
  297. echo ' <label for="podPressMedia_'.$num.'_type">'.__('Type', 'podpress').'</label>: '."\n";
  298. echo ' </td>'."\n";
  299. echo ' <td>'."\n";
  300. echo ' <select id="podPressMedia_'.$num.'_type" name="podPressMedia['.$num.'][type]" onchange="javascript: podPressMediaFiles['.$num.'][\'type\'] = this.value; podPressAdjustMediaFieldsBasedOnType('.$num.');" >'."\n"; podPress_mediaOptions(); echo '</select>'."\n";
  301. echo ' </td>'."\n";
  302. echo ' </tr>'."\n";
  303. echo ' <tr id="podPressMediaSizeWrapper_'.$num.'" >'."\n";
  304. echo ' <td>'."\n";
  305. echo ' <label for="podPressMedia_'.$num.'_size">'.__('File Size', 'podpress').'</label>: '."\n";
  306. echo ' </td>'."\n";
  307. echo ' <td>'."\n";
  308. echo ' <input type="text" id="podPressMedia_'.$num.'_size" name="podPressMedia['.$num.'][size]" size="10" value="'.$thisMedia['size'].'" onchange="javascript: podPressMediaFiles['.$num.'][\'size\'] = this.value;"/> '.__('[in byte]', 'podpress').' <img src="'.PODPRESS_URL.'/images/ajax-loader.gif" id="podPressMedia_'.$num.'_size_loadimg" class="podpress_ajax_loader_img" /><input type="button" id="podPressMedia_'.$num.'_size_detectbutton" value="'.__('Auto Detect', 'podpress').'" onclick="podPress_getfileinfo(\'size\', '.$num.');"/>'."\n";
  309. echo ' </td>'."\n";
  310. echo ' </tr>'."\n";
  311. echo ' <tr id="podPressMediaDurationWrapper_'.$num.'" style="display: none;">'."\n";
  312. echo ' <td>'."\n";
  313. echo ' <label for="podPressMedia_'.$num.'_duration">'.__('Duration', 'podpress').'</label>: '."\n";
  314. echo ' </td>'."\n";
  315. echo ' <td>'."\n";
  316. echo ' <input type="text" id="podPressMedia_'.$num.'_duration" name="podPressMedia['.$num.'][duration]" size="10" value="'.$thisMedia['duration'].'" onchange="javascript: podPressMediaFiles['.$num.'][\'duration\'] = this.value;"/> <span class="podpress_abbr" title="'.__('hours:minutes:seconds - for example: 2:45:10 or 34:01 or 1:36 or 120:47 or 0:10', 'podpress').'">'.__('[hh:mm:ss]', 'podpress').'</span> <img src="'.PODPRESS_URL.'/images/ajax-loader.gif" id="podPressMedia_'.$num.'_duration_loadimg" class="podpress_ajax_loader_img" /><input type="button" id="podPressMedia_'.$num.'_duration_detectbutton" value="'.__('Auto Detect', 'podpress').'" onclick="podPress_getfileinfo(\'duration\', '.$num.');"/> ('.sprintf(__('This may take some time for remote files. %1$s', 'podpress'), '<span class="podpress_abbr" title="'.__('If the file is not on the same server as your blog then podPress will attempt to download the file in order to get this information with the help of getID3() which is only able to retrieve ID3 tags from local files. podPress removes the temporary download file at the end of this process. It is likely that this feature works only for relative small files because the download is probably limited by execution time and memory limits on the server of your blog.', 'podpress').'">'.__('Because ...', 'podpress').'</span>').')'."\n";
  317. echo ' </td>'."\n";
  318. echo ' </tr>'."\n";
  319. if(empty($thisMedia['previewImage'])) {
  320. $thisMedia['previewImage'] = podPress_url().'images/vpreview_center.png';
  321. }
  322. echo ' <tr id="podPressMediaPreviewImageWrapper_'.$num.'" style="display: none;">'."\n";
  323. echo ' <td>'."\n";
  324. echo ' <label for="podPressMedia_'.$num.'_previewImage">'.__('Preview Image URL', 'podpress').'</label>: '."\n";
  325. echo ' </td>'."\n";
  326. echo ' <td>'."\n";
  327. echo ' <input type="text" id="podPressMedia_'.$num.'_previewImage" name="podPressMedia['.$num.'][previewImage]" size="40" value="'.attribute_escape($thisMedia['previewImage']).'" onchange="javascript: podPressPreviewImageOnChange('.$num.', this.value);" />'."\n";
  328. echo ' </td>'."\n";
  329. echo ' </tr>'."\n";
  330. echo ' <tr id="podPressMediaPreviewImageDisplayWrapper_'.$num.'" style="display: none;">'."\n";
  331. echo ' <td>'."\n";
  332. echo ' '.__('Preview Image', 'podpress').': '."\n";
  333. echo ' </td>'."\n";
  334. echo ' <td>'."\n";
  335. echo ' <div id="podPressPlayerSpace_'.$num.'"></div>'."\n";
  336. echo '<script type="text/javascript"><!--'."\n";
  337. echo " document.getElementById('podPressPlayerSpace_".$num."').innerHTML = podPressGenerateVideoPreview (".$num.", '', ".$thisMedia['dimensionW'].", ".$thisMedia['dimensionH'].", document.getElementById('podPressMedia_".$num."_previewImage').value, true);\n";
  338. echo "--></script>\n";
  339. echo ' </td>'."\n";
  340. echo ' </tr>'."\n";
  341. echo ' <tr id="podPressMediaDimensionWrapper_'.$num.'">'."\n";
  342. echo ' <td>'."\n";
  343. echo ' '.__('Dimensions', 'podpress').' (WxH): '."\n";
  344. echo ' </td>'."\n";
  345. echo ' <td>'."\n";
  346. echo ' <input type="text" id="podPressMedia_'.$num.'_dimensionW" name="podPressMedia['.$num.'][dimensionW]" size="5" value="'.$thisMedia['dimensionW'].'" onchange="javascript: podPressMediaFiles['.$num.'][\'dimensionW\'] = this.value; podPressUpdateDimensionList(\''.$num.'\');" />x<input type="text" id="podPressMedia_'.$num.'_dimensionH" name="podPressMedia['.$num.'][dimensionH]" size="5" value="'.$thisMedia['dimensionH'].'" onchange="javascript: podPressMediaFiles['.$num.'][\'dimensionH\'] = this.value; podPressUpdateDimensionList(\''.$num.'\')" /> '."\n";
  347. echo ' <select id="podPressMedia_'.$num.'_dimensionList" onchange="javascript: podPressUpdateDimensions(\''.$num.'\', this.value);">'."\n"; podPress_videoDimensionOptions($thisMedia['dimensionW'].':'.$thisMedia['dimensionH']); echo '</select>'."\n";
  348. echo ' </td>'."\n";
  349. echo ' </tr>'."\n";
  350. if($post->post_status == 'static') {
  351. echo ' <tr style="display: none;">'."\n";
  352. } else {
  353. echo ' <tr>'."\n";
  354. }
  355. echo ' <td nowrap="nowrap">'."\n";
  356. echo ' '.__('Included in', 'podpress').': '."\n";
  357. echo ' </td>'."\n";
  358. echo ' <td>'."\n";
  359. echo ' &nbsp;<label for="podPressMedia_'.$num.'_rss">'.__('RSS2', 'podpress').'</label> <input type="checkbox" id="podPressMedia_'.$num.'_rss" name="podPressMedia['.$num.'][rss]" onchange="javascript: podPressMediaFiles['.$num.'][\'rss\'] = this.checked; podPressSetSingleRSS('.$num.');" />'."\n";
  360. echo ' &nbsp;<label for="podPressMedia_'.$num.'_atom">'.__('ATOM', 'podpress').'</label> <input type="checkbox" id="podPressMedia_'.$num.'_atom" name="podPressMedia['.$num.'][atom]" onchange="javascript: podPressMediaFiles['.$num.'][\'atom\'] = this.checked;" />'."\n";
  361. echo ' &nbsp;<label for="podPressMedia_'.$num.'_feedonly">'.__('Feed Only', 'podpress').'</label> <input type="checkbox" id="podPressMedia_'.$num.'_feedonly" name="podPressMedia['.$num.'][feedonly]" onchange="javascript: podPressMediaFiles['.$num.'][\'feedonly\'] = this.checked;" />'."\n";
  362. echo ' </td>'."\n";
  363. echo ' </tr>'."\n";
  364. if($this->settings['enablePremiumContent']) {
  365. echo ' <tr>'."\n";
  366. echo ' <td nowrap="nowrap">'."\n";
  367. echo ' <label for="podPressMedia_'.$num.'_content_level">'.__('Subscription', 'podpress').'</label>:';
  368. echo ' </td>'."\n";
  369. echo ' <td>'."\n";
  370. echo ' <select id="podPressMedia_'.$num.'_content_level" name="podPressMedia['.$num.'][content_level]" onchange="javascript: podPressMediaFiles['.$num.'][\'content_level\'] = this.value;">'."\n";
  371. echo ' <option value="free" '; if(empty($thisMedia['content_level']) || $thisMedia['content_level'] == 'free') { echo 'selected="selected"'; } echo '>'.__('Free', 'podpress').'</option>'."\n";
  372. foreach (podPress_getCapList(true) as $cap) {
  373. if(substr($cap, -8, 8) == '_content') {
  374. echo ' <option value="'.$cap.'" '; if($thisMedia['content_level'] == $cap) { echo 'selected="selected"'; } echo '>'.__(podPress_getCapName($cap), 'podpress').'</option>'."\n";
  375. }
  376. }
  377. echo ' </select>'."\n";
  378. echo ' </td>'."\n";
  379. echo ' </tr>'."\n";
  380. }
  381. echo ' <tr>'."\n";
  382. echo ' <td nowrap="nowrap">'."\n";
  383. echo ' <label for="podPressMedia_'.$num.'_disablePlayer">'.__('Disable Player', 'podpress').'</label>:'."\n";
  384. echo ' </td>'."\n";
  385. echo ' <td>'."\n";
  386. echo ' <input type="checkbox" id="podPressMedia_'.$num.'_disablePlayer" name="podPressMedia['.$num.'][disablePlayer]"'; if($thisMedia['disablePlayer'] != 'false') { echo 'checked="checked" '; } echo ' onchange="javascript: podPressMediaFiles['.$num.'][\'disablePlayer\'] = this.checked;" />'."\n";
  387. echo ' &nbsp;&nbsp; '.__('(Use if this media file is not compatible with one of the included players.)', 'podpress')."\n";
  388. echo ' </td>'."\n";
  389. echo ' </tr>'."\n";
  390. echo ' <tr>'."\n";
  391. echo ' <td nowrap="nowrap">'."\n";
  392. echo ' <label for="podPressMedia_'.$num.'_disablePreview">'.__('Disable Preview Player', 'podpress').'</label>:'."\n";
  393. echo ' </td>'."\n";
  394. echo ' <td>'."\n";
  395. echo ' <input type="checkbox" id="podPressMedia_'.$num.'_disablePreview" name="podPressMedia['.$num.'][disablePreview]"'; if($thisMedia['disablePreview'] != 'false') { echo 'checked="checked" '; } echo ' onchange="javascript: podPressMediaFiles['.$num.'][\'disablePreview\'] = this.checked;" />'."\n";
  396. echo ' &nbsp;&nbsp; '.__('(Use this to disable the "Click to Play" preview player.)', 'podpress')."\n";
  397. echo ' </td>'."\n";
  398. echo ' </tr>'."\n";
  399. $actionMedia = $thisMedia;
  400. $actionMedia['num'] = $num;
  401. do_action('podPress_customMediaData', array($actionMedia));
  402. echo ' <tr id="podPressMedia_'.$num.'_id3tags_details_row">'."\n";
  403. echo ' <td style="vertical-align: top;" nowrap="nowrap">'."\n";
  404. echo ' '.__('Tag (ID3) Info', 'podpress').":\n";
  405. echo ' </td>'."\n";
  406. echo ' <td>'."\n";
  407. echo ' <img src="'.PODPRESS_URL.'/images/ajax-loader.gif" id="podPressMedia_'.$num.'_id3tags_loadimg" class="podpress_ajax_loader_img" /><input type="button" id="podPressMedia_'.$num.'_id3tags_detectbutton" value="'.__('Show','podpress').'" onclick="javascript: podPressShowHideID3Tags('.$num.');" /> ('.sprintf(__('This may take some time for remote files. %1$s', 'podpress'), '<span class="podpress_abbr" title="'.__('If the file is not on the same server as your blog then podPress will attempt to download the file in order to get this information with the help of getID3() which is only able to retrieve ID3 tags from local files. podPress removes the temporary download file at the end of this process. It is likely that this feature works only for relative small files because the download is probably limited by execution time and memory limits on the server of your blog.', 'podpress').'">'.__('Because ...', 'podpress').'</span>').')'."\n";
  408. echo ' </td>'."\n";
  409. echo ' </tr>'."\n";
  410. echo ' <tr>'."\n";
  411. echo ' <td colspan="2">'."\n";
  412. echo ' <div id="podPressMedia_'.$num.'_id3tags" style="display: none; vertical-align: top;">'."\n";
  413. echo ' </div>'."\n";
  414. echo ' </td>'."\n";
  415. echo ' </tr>'."\n";
  416. echo ' </table>'."\n";
  417. echo ' </div>'."\n";
  418. $num++;
  419. }
  420. echo ' <h3>'.sprintf(__('To control player location in your post, you may put %1$s where you want it to appear. You can choose the default postion on the general settings page of podPress.', 'podpress'), $this->podcasttag).'</h3> '."\n";
  421. echo ' <input type="button" name="podPressAddAnother" value="'.__('Add Media File','podpress').'" onclick="javascript: podPressAddMediaFile(true, \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'new\', true, false, false, \'free\'); podPressDisplayMediaFiles();"/>'."\n";
  422. if($entryType != 'page') {
  423. echo ' <br/>'."\n";
  424. echo ' <strong>'.__('Post specific settings for iTunes', 'podpress').': </strong>'."\n";
  425. echo ' <input type="button" name="iTunesSpecificSettings_button" id="iTunesSpecificSettings_button" value="Show" onclick="javascript: podPressShowHideDiv(\'iTunesSpecificSettings\');"/>'."\n";
  426. echo ' <div class="wrap" id="iTunesSpecificSettings" style="display: none;">'."\n";
  427. echo ' <table border="0">'."\n";
  428. echo ' <tr>'."\n";
  429. echo ' <td width="1%" nowrap="nowrap">'."\n";
  430. echo ' <label for="iTunesSubtitleChoice">'.__('iTunes:Subtitle', 'podpress').'</label> <a href="javascript:void(null);" onclick="javascript: podPressShowHideRow(\'iTunesSubtitleHelp\');">(?)</a>:'."\n";
  431. echo ' </td>'."\n";
  432. echo ' <td>'."\n";
  433. echo ' <select id="iTunesSubtitleChoice" name="iTunesSubtitleChoice" onchange="javascript: if(this.value == \'Custom\') { document.getElementById(\'iTunesSubtitleWrapper\').style.display=\'\'; } else { document.getElementById(\'iTunesSubtitleWrapper\').style.display=\'none\'; }">'."\n";
  434. echo ' <option value="PostExcerpt" '; if($post->podPressPostSpecific['itunes:subtitle'] == '##PostExcerpt##') { echo 'selected="selected"'; } echo '>'.__('Use the excerpt', 'podpress').'</option>'."\n";
  435. echo ' <option value="Custom" '; if($post->podPressPostSpecific['itunes:subtitle'] != '##PostExcerpt##') { echo 'selected="selected"'; } echo '>'.__('Insert custom value', 'podpress').'</option>'."\n";
  436. echo ' </select>'."\n";
  437. echo ' </td>'."\n";
  438. echo ' </tr>'."\n";
  439. echo ' <tr id="iTunesSubtitleHelp" style="display: none;">'."\n";
  440. echo ' <td colspan="2">'.sprintf(__('"%1$s" (default) podPress takes the first 255 characters from the excerpt of the excerpt and if there is none from the blog Post text.', 'podpress'),__('Use the excerpt', 'podpress')).'</td>'."\n";
  441. echo ' </tr>'."\n";
  442. if($post->podPressPostSpecific['itunes:subtitle'] == '##PostExcerpt##') { $tempShowMe = 'style="display: none;"';$post->podPressPostSpecific['itunes:subtitle'] = ''; } else { $tempShowMe = ''; }
  443. echo ' <tr id="iTunesSubtitleWrapper" '.$tempShowMe.'>'."\n";
  444. echo ' <td width="1%" nowrap="nowrap">&nbsp;</td>'."\n";
  445. echo ' <td>'."\n";
  446. echo ' <textarea name="iTunesSubtitle" rows="4" cols="40">'.stripslashes($post->podPressPostSpecific['itunes:subtitle']).'</textarea>'."\n";
  447. echo ' </td>'."\n";
  448. echo ' </tr>'."\n";
  449. echo ' <tr>'."\n";
  450. echo ' <td width="1%" nowrap="nowrap">'."\n";
  451. echo ' <label for="iTunesSummaryChoice">'.__('iTunes:Summary', 'podpress').'</label> <a href="javascript:void(null);" onclick="javascript: podPressShowHideRow(\'iTunesSummaryHelp\');">(?)</a>:'."\n";
  452. echo ' </td>'."\n";
  453. echo ' <td>'."\n";
  454. echo ' <select id="iTunesSummaryChoice" name="iTunesSummaryChoice" onchange="javascript: if(this.value == \'Custom\') { document.getElementById(\'iTunesSummaryWrapper\').style.display=\'\'; } else { document.getElementById(\'iTunesSummaryWrapper\').style.display=\'none\'; }">'."\n";
  455. echo ' <option value="PostExcerpt" '; if($post->podPressPostSpecific['itunes:summary'] == '##PostExcerpt##') { echo 'selected="selected"'; } echo '>'.__('Use the excerpt', 'podpress').'</option>'."\n";
  456. echo ' <option value="PostContentShortened" '; if($post->podPressPostSpecific['itunes:summary'] == '##PostContentShortened##') { echo 'selected="selected"'; } echo '>'.__('autom. excerpt of the post content', 'podpress').'</option>'."\n";
  457. echo ' <option value="Global" '; if($post->podPressPostSpecific['itunes:summary'] == '##Global##') { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').'</option>'."\n";
  458. echo ' <option value="Custom" '; if($post->podPressPostSpecific['itunes:summary'] != '##Global##' && $post->podPressPostSpecific['itunes:summary'] != '##PostExcerpt##' && $post->podPressPostSpecific['itunes:summary'] != '##PostContentShortened##') { echo 'selected="selected"'; } echo '>'.__('Insert custom value', 'podpress').'</option>'."\n";
  459. echo ' </select>'."\n";
  460. echo ' </td>'."\n";
  461. echo ' </tr>'."\n";
  462. echo ' <tr id="iTunesSummaryHelp" style="display: none;">'."\n";
  463. echo ' <td colspan="2">'.sprintf(__('"%1$s" (default) podPress takes the excerpt. If you have not written an excerpt then it takes a part from the blog Post text.', 'podpress'),__('Use the excerpt', 'podpress')).'</td>'."\n";
  464. echo ' </tr>'."\n";
  465. if($post->podPressPostSpecific['itunes:summary'] == '##Global##' || $post->podPressPostSpecific['itunes:summary'] == '##PostExcerpt##' || $post->podPressPostSpecific['itunes:summary'] == '##PostContentShortened##') { $tempShowMe = 'style="display: none;"'; $post->podPressPostSpecific['itunes:summary'] = ''; } else { $tempShowMe = ''; }
  466. echo ' <tr id="iTunesSummaryWrapper" '.$tempShowMe.'>'."\n";
  467. echo ' <td width="1%" nowrap="nowrap">&nbsp;</td>'."\n";
  468. echo ' <td>'."\n";
  469. echo ' <textarea name="iTunesSummary" rows="4" cols="40">'.stripslashes($post->podPressPostSpecific['itunes:summary']).'</textarea>'."\n";
  470. echo ' </td>'."\n";
  471. echo ' </tr>'."\n";
  472. echo ' <tr>'."\n";
  473. echo ' <td width="1%" nowrap="nowrap">'."\n";
  474. echo ' <label for="iTunesKeywordsChoice">'.__('iTunes:Keywords', 'podpress').'</label> <a href="javascript:void(null);" onclick="javascript: podPressShowHideRow(\'iTunesKeywordsHelp\');">(?)</a>:'."\n";
  475. echo ' </td>'."\n";
  476. echo ' <td>'."\n";
  477. echo ' <select id="iTunesKeywordsChoice" name="iTunesKeywordsChoice" onchange="javascript: if(this.value == \'Custom\') { document.getElementById(\'iTunesKeywordsWrapper\').style.display=\'\'; } else { document.getElementById(\'iTunesKeywordsWrapper\').style.display=\'none\'; }">'."\n";
  478. echo ' <option value="WordPressCats" '; if($post->podPressPostSpecific['itunes:keywords'] == '##WordPressCats##') { echo 'selected="selected"'; } echo '>'.__('Use WordPress Categories', 'podpress').'</option>'."\n";
  479. echo ' <option value="post_tags" '; if($post->podPressPostSpecific['itunes:keywords'] == '##post_tags##') { echo 'selected="selected"'; } echo '>'.__('Use the tags of the post', 'podpress').'</option>'."\n";
  480. echo ' <option value="Global" '; if($post->podPressPostSpecific['itunes:keywords'] == '##Global##') { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').' ('.podPress_stringLimiter(stripslashes($this->settings['iTunes']['keywords']), 40) .')</option>'."\n";
  481. echo ' <option value="Custom" '; if($post->podPressPostSpecific['itunes:keywords'] != '##Global##' && $post->podPressPostSpecific['itunes:keywords'] != '##WordPressCats##' && $post->podPressPostSpecific['itunes:keywords'] != '##post_tags##') { echo 'selected="selected"'; } echo '>'.__('Insert custom value', 'podpress').'</option>'."\n";
  482. echo ' </select>'."\n";
  483. echo ' </td>'."\n";
  484. echo ' </tr>'."\n";
  485. echo ' <tr id="iTunesKeywordsHelp" style="display: none;">'."\n";
  486. echo ' <td colspan="2">'.__('Not visible in iTunes, but used for searches.', 'podpress').'</td>'."\n";
  487. echo ' </tr>'."\n";
  488. if($post->podPressPostSpecific['itunes:keywords'] == '##Global##' || $post->podPressPostSpecific['itunes:keywords'] == '##WordPressCats##' || $post->podPressPostSpecific['itunes:keywords'] == '##post_tags##') { $tempShowMe = 'style="display: none;"'; $post->podPressPostSpecific['itunes:keywords'] = ''; } else { $tempShowMe = ''; }
  489. echo ' <tr id="iTunesKeywordsWrapper" '.$tempShowMe.'>'."\n";
  490. echo ' <td width="1%" nowrap="nowrap">&nbsp;</td>'."\n";
  491. echo ' <td>'."\n";
  492. echo ' '.__('a list of max. 12 comma separated words', 'podpress').'<br/><textarea name="iTunesKeywords" rows="4" cols="40">'.stripslashes($post->podPressPostSpecific['itunes:keywords']).'</textarea>'."\n";
  493. echo ' </td>'."\n";
  494. echo ' </tr>'."\n";
  495. echo ' <tr>'."\n";
  496. echo ' <td width="1%" nowrap="nowrap">'."\n";
  497. echo ' <label for="iTunesAuthorChoice">'.__('iTunes:Author', 'podpress').'</label> <a href="javascript:void(null);" onclick="javascript: podPressShowHideRow(\'iTunesAuthorHelp\');">(?)</a>:'."\n";
  498. echo ' </td>'."\n";
  499. echo ' <td>'."\n";
  500. echo ' <select id="iTunesAuthorChoice" name="iTunesAuthorChoice" onchange="javascript: if(this.value == \'Custom\') { document.getElementById(\'iTunesAuthorWrapper\').style.display=\'\'; } else { document.getElementById(\'iTunesAuthorWrapper\').style.display=\'none\'; }">'."\n";
  501. echo ' <option value="Global" '; if($post->podPressPostSpecific['itunes:author'] == '##Global##') { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').' ('.podPress_stringLimiter(ucfirst(stripslashes($this->settings['iTunes']['author'])), 40).')</option>'."\n";
  502. echo ' <option value="Custom" '; if($post->podPressPostSpecific['itunes:author'] != '##Global##') { echo 'selected="selected"'; } echo '>'.__('Insert custom value', 'podpress').'</option>'."\n";
  503. echo ' </select>'."\n";
  504. echo ' </td>'."\n";
  505. echo ' </tr>'."\n";
  506. echo ' <tr id="iTunesAuthorHelp" style="display: none;">'."\n";
  507. echo ' <td colspan="2">'.__('Used if this Author is different than the feeds author.', 'podpress').'</td>'."\n";
  508. echo ' </tr>'."\n";
  509. if($post->podPressPostSpecific['itunes:author'] == '##Global##') { $tempShowMe = 'style="display: none;"'; $post->podPressPostSpecific['itunes:author'] = ''; } else { $tempShowMe = ''; }
  510. echo ' <tr id="iTunesAuthorWrapper" '.$tempShowMe.'>'."\n";
  511. echo ' <td width="1%" nowrap="nowrap">&nbsp;</td>'."\n";
  512. echo ' <td><input type="text" name="iTunesAuthor" size="40" value="'.attribute_escape($post->podPressPostSpecific['itunes:author']).'" /></td>'."\n";
  513. echo ' </tr>'."\n";
  514. echo ' <tr>'."\n";
  515. echo ' <td width="1%" nowrap="nowrap">'."\n";
  516. echo ' <label for="iTunesExplicit">'.__('iTunes:Explicit', 'podpress').'</label> <a href="javascript:void(null);" onclick="javascript: podPressShowHideRow(\'iTunesExplicitHelp\');">(?)</a>:'."\n";
  517. echo ' </td>'."\n";
  518. echo ' <td>'."\n";
  519. echo ' <select id="iTunesExplicit" name="iTunesExplicit">'."\n";
  520. echo ' <option value="Default" '; if($post->podPressPostSpecific['itunes:explicit'] == 'Default') { echo 'selected="selected"'; } echo '>'.__('Use Default', 'podpress').' ('.$this->settings['iTunes']['explicit'].')</option>'."\n";
  521. echo ' <option value="No" '; if($post->podPressPostSpecific['itunes:explicit'] == 'No') { echo 'selected="selected"'; } echo '>'.__('No', 'podpress').'</option>'."\n";
  522. echo ' <option value="Yes" '; if($post->podPressPostSpecific['itunes:explicit'] == 'Yes') { echo 'selected="selected"'; } echo '>'.__('Yes', 'podpress').'</option>'."\n";
  523. echo ' <option value="Clean" '; if($post->podPressPostSpecific['itunes:explicit'] == 'Clean') { echo 'selected="selected"'; } echo '>'.__('Clean', 'podpress').'</option>'."\n";
  524. echo ' </select>'."\n";
  525. echo ' </td>'."\n";
  526. echo ' </tr>'."\n";
  527. echo ' <tr id="iTunesExplicitHelp" style="display: none;">'."\n";
  528. echo ' <td colspan="2">'.__('Does your podcast contain explicit language or content which is not suitable for non-adult persons? (If you choose "Yes" or "Clean" then a corresponding notice will show up in iTunes (Explicit resp. Clean). If you choose "No" then there will be special notice.)', 'podpress').'</td>'."\n";
  529. echo ' </tr>'."\n";
  530. echo ' <tr>'."\n";
  531. echo ' <td width="1%" nowrap="nowrap">'."\n";
  532. echo ' <label for="iTunesBlock">'.__('iTunes:Block', 'podpress').'</label> <a href="javascript:void(null);" onclick="javascript: podPressShowHideRow(\'itunesBlockHelp\');">(?)</a>:'."\n";
  533. echo ' </td>'."\n";
  534. echo ' <td>'."\n";
  535. echo ' <select id="iTunesBlock" name="iTunesBlock">'."\n";
  536. echo ' <option value="Default" '; if($post->podPressPostSpecific['itunes:block'] == 'Default') { echo 'selected="selected"'; } echo '>'.__('Use Default', 'podpress').' ('.$this->settings['iTunes']['block'].')</option>'."\n";
  537. echo ' <option value="No" '; if($post->podPressPostSpecific['itunes:block'] == 'No') { echo 'selected="selected"'; } echo '>'.__('No', 'podpress').'</option>'."\n";
  538. echo ' <option value="Yes" '; if($post->podPressPostSpecific['itunes:block'] == 'Yes') { echo 'selected="selected"'; } echo '>'.__('Yes', 'podpress').'</option>'."\n";
  539. echo ' </select>'."\n";
  540. echo ' </td>'."\n";
  541. echo ' </tr>'."\n";
  542. echo ' <tr id="itunesBlockHelp" style="display: none;">'."\n";
  543. echo ' <td colspan="2">'.__('Prevent this episode or podcast from appearing in iTunes.', 'podpress').'</td>'."\n";
  544. echo ' </tr>'."\n";
  545. echo ' </table>'."\n";
  546. echo ' </div>'."\n";
  547. }
  548. if($this->settings['enablePodangoIntegration']) {
  549. echo " <br/>\n";
  550. echo ' <strong>Podango File Uploader</strong>';
  551. if($this->settings['podangoDefaultPodcast'] == '##ALL##') {
  552. $podangoPodcastList = $this->podangoapi->GetPodcasts(true);
  553. echo ' <strong>for: </strong><select name="podPressPodangoPodcastID" id="podPressPodangoPodcastID" onChange="javascript: document.getElementById(\'podangoUploadFrame\').src=\''.$this->podangoapi->fileUploader.'?podcastId=\'+this.value">'."\n";
  554. foreach ($podangoPodcastList as $k=>$v) {
  555. if(!isset($podangoPodcastID)) {
  556. $podangoPodcastID = $k;
  557. }
  558. echo ' <option value="'.$k.'">'.$v['Title'].'</option>'."\n";
  559. }
  560. echo ' </select>'."\n";
  561. } else {
  562. $podangoPodcastID = $this->settings['podangoDefaultPodcast'];
  563. }
  564. echo '<br/>'."\n";
  565. echo ' <iframe src="'.$this->podangoapi->fileUploader.'?podcastId='.$podangoPodcastID.'" id="podangoUploadFrame" title="Podango Upload" border="0" width="560" height="110"> </iframe>'."\n";
  566. }
  567. echo ' </div>'."\n";
  568. echo ' <h3>'.__('End of podPress. File Uploading support is not part of podPress', 'podpress').'</h3> '."\n";
  569. echo ' </fieldset>'."\n";
  570. echo '</div><br/>'."\n";
  571. echo '<script type="text/javascript">podPressDisplayMediaFiles(); </script>'."\n";
  572. }
  573. // ################################################################
  574. // ### for modern WP versions:
  575. // ################################################################
  576. function post_form_wp25plus($entryType = 'post') {
  577. $blog_charset = get_bloginfo('charset');
  578. if(!is_object($GLOBALS['post']) && isset($GLOBALS['post_cache'][$GLOBALS['post']])) {
  579. $post = $GLOBALS['post_cache'][$GLOBALS['post']];
  580. } else {
  581. $post = $GLOBALS['post'];
  582. }
  583. $post = $this->addPostData($post, true);
  584. if(($_GET['action'] == 'edit')) {
  585. $post_id = $_GET['post'];
  586. if(!is_array($post->podPressMedia)) {
  587. $post->podPressMedia = array();
  588. }
  589. }
  590. $files = array();
  591. $mediaFilePath = stripslashes($this->settings['mediaFilePath']);
  592. if(@is_dir($mediaFilePath)) {
  593. $dh = opendir($mediaFilePath);
  594. while (false !== ($filename = readdir($dh))) {
  595. if($filename != '.' && $filename != '..' && !is_dir($mediaFilePath.'/'.$filename) && !in_array(podPress_getFileExt($filename), array('php', 'html'))) {
  596. $files[] = $filename;
  597. }
  598. }
  599. natcasesort($files);
  600. }
  601. if($this->settings['enablePodangoIntegration']) {
  602. if(!empty($post->podPressPostSpecific['PodangoEpisodeID'])) {
  603. if(empty($post->podPressPostSpecific['PodangoMediaFileID'])) {
  604. $x = $this->podangoapi->GetEpisode($post->podPressPostSpecific['PodangoEpisodeID']);
  605. $post->podPressPostSpecific['PodangoMediaFileID'] = $x['MediaFileId'];
  606. unset($x);
  607. }
  608. $podangoMediaFiles = $this->podangoapi->GetMediaFile($post->podPressPostSpecific['PodangoMediaFileID']);
  609. } else {
  610. $podangoMediaFiles = $this->podangoapi->GetMediaFiles();
  611. }
  612. }
  613. echo '<script type="text/javascript">'."\n";
  614. echo "var podPressMaxMediaFiles = ".$this->settings['maxMediaFiles'].";\n";
  615. $newMediaDefaults = array();
  616. echo "var newMediaDefaults = new Array();\n";
  617. $newMediaDefaults['URI'] = '';
  618. echo "newMediaDefaults['URI'] = '".$newMediaDefaults['URI']."';\n";
  619. $newMediaDefaults['title'] = '';
  620. echo "newMediaDefaults['title'] = '".$newMediaDefaults['title']."';\n";
  621. $newMediaDefaults['type'] = 'audio_mp3';
  622. echo "newMediaDefaults['type'] = '".$newMediaDefaults['type']."';\n";
  623. $newMediaDefaults['size'] = '';
  624. echo "newMediaDefaults['size'] = '".$newMediaDefaults['size']."';\n";
  625. $newMediaDefaults['duration'] = '';
  626. echo "newMediaDefaults['duration'] = '".$newMediaDefaults['duration']."';\n";
  627. $newMediaDefaults['dimensionW'] = '320';
  628. echo "newMediaDefaults['dimensionW'] = '".$newMediaDefaults['dimensionW']."';\n";
  629. $newMediaDefaults['dimensionH'] = '240';
  630. echo "newMediaDefaults['dimensionH'] = '".$newMediaDefaults['dimensionH']."';\n";
  631. $newMediaDefaults['previewImage'] = podPress_url().'images/vpreview_center.png';
  632. echo "newMediaDefaults['previewImage'] = '".$newMediaDefaults['previewImage']."';\n";
  633. $newMediaDefaults['rss'] = 'false';
  634. echo "newMediaDefaults['rss'] = ".$newMediaDefaults['rss'].";\n";
  635. $newMediaDefaults['atom'] = 'true';
  636. echo "newMediaDefaults['atom'] = ".$newMediaDefaults['atom'].";\n";
  637. $newMediaDefaults['feedonly'] = 'true';
  638. echo "newMediaDefaults['feedonly'] = ".$newMediaDefaults['feedonly'].";\n";
  639. $newMediaDefaults['disablePlayer'] = 'false';
  640. echo "newMediaDefaults['disablePlayer'] = ".$newMediaDefaults['disablePlayer'].";\n";
  641. $newMediaDefaults['disablePreview'] = 'false';
  642. echo "newMediaDefaults['disablePreview'] = ".$newMediaDefaults['disablePreview'].";\n";
  643. $newMediaDefaults['content_level'] = 'free';
  644. echo "newMediaDefaults['content_level'] = '".$newMediaDefaults['content_level']."';\n";
  645. $newMediaDefaults['showme'] = 'false';
  646. echo "newMediaDefaults['showme'] = ".$newMediaDefaults['showme'].";\n";
  647. if ( FALSE !== empty($post->podPressMedia) ) {
  648. $num = 0;
  649. } else {
  650. $num = count($post->podPressMedia);
  651. $num = intval($num);
  652. if ($num > $this->settings['maxMediaFiles'] ) {
  653. $num = $this->settings['maxMediaFiles'];
  654. }
  655. }
  656. while ($num < $this->settings['maxMediaFiles']) {
  657. $post->podPressMedia[$num] = $newMediaDefaults;
  658. $num++;
  659. }
  660. $num = 0;
  661. while ($num < $this->settings['maxMediaFiles']) {
  662. if(!isset($post->podPressMedia[$num]['showme'])) {
  663. $post->podPressMedia[$num]['showme'] = 'true';
  664. }
  665. if($post->podPressMedia[$num]['showme'] == 'false') {
  666. $num++;
  667. continue;
  668. }
  669. if($this->settings['enablePodangoIntegration']) {
  670. if($podangoMediaFiles[$post->podPressPostSpecific['PodangoMediaFileID']]['Filename'] == basename($post->podPressMedia[$num]['URI'])) {
  671. $post->podPressMedia[$num]['URI'] = 'Podango:'.$podangoMediaFiles[$post->podPressPostSpecific['PodangoMediaFileID']]['Podcast'].':'.$podangoMediaFiles[$post->podPressPostSpecific['PodangoMediaFileID']]['ID'].':'.$podangoMediaFiles[$post->podPressPostSpecific['PodangoMediaFileID']]['EpisodeID'].':'.$podangoMediaFiles[$post->podPressPostSpecific['PodangoMediaFileID']]['Filename'];
  672. }
  673. }
  674. if($post->podPressMedia[$num]['rss'] == 'on') {
  675. $post->podPressMedia[$num]['rss'] = 'true';
  676. } else {
  677. $post->podPressMedia[$num]['rss'] = 'false';
  678. }
  679. if($post->podPressMedia[$num]['atom'] == 'on') {
  680. $post->podPressMedia[$num]['atom'] = 'true';
  681. } else {
  682. $post->podPressMedia[$num]['atom'] = 'false';
  683. }
  684. if($post->podPressMedia[$num]['feedonly'] == 'on') {
  685. $post->podPressMedia[$num]['feedonly'] = 'true';
  686. } else {
  687. $post->podPressMedia[$num]['feedonly'] = 'false';
  688. }
  689. if(!isset($post->podPressMedia[$num]['disablePlayer']) || $post->podPressMedia[$num]['disablePlayer'] == false || $post->podPressMedia[$num]['disablePlayer'] == 'false') {
  690. $post->podPressMedia[$num]['disablePlayer'] = 'false';
  691. } else {
  692. $post->podPressMedia[$num]['disablePlayer'] = 'true';
  693. }
  694. if(!isset($post->podPressMedia[$num]['disablePreview']) || $post->podPressMedia[$num]['disablePreview'] == false || $post->podPressMedia[$num]['disablePreview'] == 'false') {
  695. $post->podPressMedia[$num]['disablePreview'] = 'false';
  696. } else {
  697. $post->podPressMedia[$num]['disablePreview'] = 'true';
  698. }
  699. if($post->podPressMedia[$num]['premium_only'] == 'on' || $post->podPressMedia[$num]['premium_only'] == true) {
  700. $post->podPressMedia[$num]['content_level'] = 'premium_content';
  701. }
  702. if(!isset($post->podPressMedia[$num]['content_level'])) {
  703. $post->podPressMedia[$num]['content_level'] = 'free';
  704. }
  705. echo "\n";
  706. echo "podPressAddMediaFile(".$post->podPressMedia[$num]['showme'].", '".js_escape($post->podPressMedia[$num]['URI'])."', '".js_escape($post->podPressMedia[$num]['URI_torrent'])."', '".js_escape($post->podPressMedia[$num]['title'])."', '".$post->podPressMedia[$num]['type']."', '".$post->podPressMedia[$num]['size']."', '".$post->podPressMedia[$num]['duration']."', '".$post->podPressMedia[$num]['dimensionW']."', '".$post->podPressMedia[$num]['dimensionH']."', '".$post->podPressMedia[$num]['previewImage']."', ".$post->podPressMedia[$num]['rss'].", ".$post->podPressMedia[$num]['atom'].", ".$post->podPressMedia[$num]['feedonly'].", ".$post->podPressMedia[$num]['disablePlayer'].", '".$post->podPressMedia[$num]['content_level']."');\n";
  707. $num++;
  708. }
  709. echo '</script>'."\n";
  710. echo '<input type="hidden" id="podPressMedia_defaultpreviewImage" value="'.PODPRESS_URL.'/images/vpreview_center.png" />'."\n";
  711. if ( defined('NONCE_KEY') AND is_string(constant('NONCE_KEY')) AND '' != trim(constant('NONCE_KEY')) ) {
  712. echo '<input type="hidden" id="podPress_AJAX_sec" value="' . wp_create_nonce(NONCE_KEY) . '" />'."\n";
  713. } else {
  714. echo '<input type="hidden" id="podPress_AJAX_sec" value="' . wp_create_nonce('Af|F07*wC7g-+OX$;|Z5;R@Pi]ZgoU|Zex8=`?mO-Mdvu+WC6l=6<O^2d~+~U3MM') . '" />'."\n";
  715. }
  716. echo '<p style="padding-bottom:1em;">'.sprintf(__('To control player location in your post, you may put %1$s where you want it to appear. You can choose the default postion on the general settings page of podPress.', 'podpress'), $this->podcasttag).'<br />'.__('File Uploading support is not part of podPress.', 'podpress').'</p>'."\n";
  717. echo '<h4>'.__('Podcasting Files:', 'podpress').'</h4>'."\n";
  718. $num = 0;
  719. while ($num < $this->settings['maxMediaFiles']) {
  720. if(!isset($post->podPressMedia[$num])) {
  721. $num++;
  722. continue;
  723. }
  724. $thisMedia = $post->podPressMedia[$num];
  725. if ( $thisMedia['showme'] == 'true' ) {
  726. $display_text = 'block';
  727. } else {
  728. $display_text = 'none';
  729. }
  730. echo ' <div id="podPressMediaFileContainer_'.$num.'" class="wrap" style="visibility: visible; display: '.$display_text.';">'."\n";
  731. echo ' <table class="podpress_editor_table">'."\n";
  732. echo ' <tr>'."\n";
  733. echo ' <th id="podpress_media_file_header"><em>'.__('Media File:', 'podpress').'</em></th>';
  734. echo ' <td id="podpress_media_file_buttons">';
  735. echo ' <input type="button" value="'.__('Move Up', 'podpress').'" onclick="podPressMoveFile('.$num.', \'up\'); podPressDisplayMediaFiles();"/>'."\n";
  736. echo ' <input type="button" value="'.__('Move Down', 'podpress').'" onclick="podPressMoveFile('.$num.', \'down\'); podPressDisplayMediaFiles();"/>'."\n";
  737. echo ' <input type="button" name="podPressAddAnother" value="'.__('Remove File', 'podpress').'" onclick="podPressRemoveFile('.$num.'); podPressDisplayMediaFiles();"/>';
  738. echo ' </td>';
  739. echo ' </tr>'."\n";
  740. echo ' <tr>'."\n";
  741. echo ' <th>'."\n";
  742. echo ' <label for="podPressMedia_'.$num.'_URI">'.__('Location', 'podpress').'</label>: '."\n";
  743. echo ' </th>'."\n";
  744. echo ' <td>'."\n";
  745. if(!empty($files) || $this->settings['enablePodangoIntegration']) {
  746. $fileOptionList = '';
  747. echo ' <select name="podPressMedia['.$num.'][URI]" id="podPressMedia_'.$num.'_URI" width="35" onchange="javascript: if(this.value==\'!\') { podPress_customSelectVal(this, \'Specifiy URL.\'); } podPressMediaFiles['.$num.'][\'URI\'] = this.value; podPressDetectType('.$num.');">'."\n";
  748. echo ' <option value="!">'.__('Specify URL ...', 'podpress').'</option>'."\n";
  749. $fileSelected = false;
  750. if($this->settings['enablePodangoIntegration']) {
  751. $podangoOptGroup = '';
  752. $podangoFirstOptGroup = true;
  753. foreach($podangoMediaFiles as $podangoMediaFile) {
  754. if(!empty($podangoMediaFile['EpisodeID']) && $podangoMediaFile['EpisodeID'] != $post->podPressPostSpecific['PodangoEpisodeID'] && $post->post_title != $podangoMediaFile['EpisodeTitle']) {
  755. continue;
  756. }
  757. if($podangoOptGroup != $podangoMediaFile['Podcast']) {
  758. $podangoOptGroup = $podangoMediaFile['Podcast'];
  759. if(!$podangoFirstOptGroup) {
  760. echo " </optgroup>\n";
  761. }
  762. $x = $this->podangoapi->GetPodcast($podangoMediaFile['Podcast'], true);
  763. echo ' <optgroup name="PodangoOptGroup'.$podangoMediaFile['Podcast'].'" label="Podango Podcast: '.$x['Title'].'">'."\n";
  764. unset($x);
  765. }
  766. $key = 'Podango:'.$podangoMediaFile['Podcast'].':'.$podangoMediaFile['ID'].':'.$podangoMediaFile['EpisodeID'].':'.$podangoMediaFile['Filename'];
  767. if($key == $thisMedia['URI']) {
  768. $xSelected = ' selected="selected"';
  769. $fileSelected = true;
  770. } else {
  771. $xSelected = '';
  772. }
  773. echo ' <option value="'.$key.'"'.$xSelected.'>'.$podangoMediaFile['Filename'].'</option>'."\n";
  774. }
  775. echo " </optgroup>\n";
  776. echo ' <optgroup name="LocallyHosted" label="Locally Hosted">'."\n";
  777. }
  778. foreach ($files as $key=>$val) {
  779. if(is_numeric($key)) {
  780. $key = $val;
  781. }
  782. if($key == $thisMedia['URI']) {
  783. $xSelected = ' selected="selected"';
  784. $fileSelected = true;
  785. } else {
  786. $xSelected = '';
  787. }
  788. if ( TRUE == version_compare(PHP_VERSION, '5.0', '<') ) { // html_entity_decode can not handle the charset UTF-8 in most of the PHP 4 version
  789. $fileOptionList .= ' <option value="'.attribute_escape(htmlentities($key)).'"'.$xSelected.'>'.htmlentities(podPress_stringLimiter($val, 100, true)).'</option>'."\n";
  790. } else {
  791. if ( FALSE === stristr(PHP_OS, 'WIN') ) {
  792. $fileOptionList .= ' <option value="'.attribute_escape(htmlentities($key, ENT_COMPAT, $blog_charset)).'"'.$xSelected.'>'.htmlentities(podPress_stringLimiter($val, 100, true), ENT_COMPAT, $blog_charset).'</option>'."\n";
  793. } else {
  794. $fileOptionList .= ' <option value="'.attribute_escape(htmlentities($key)).'"'.$xSelected.'>'.htmlentities(podPress_stringLimiter($val, 100, true)).'</option>'."\n";
  795. }
  796. }
  797. }
  798. if ( !$fileSelected ) {
  799. if ( TRUE == version_compare(PHP_VERSION, '5.0', '<') ) { // html_entity_decode can not handle the charset UTF-8 in most of the PHP 4 version
  800. echo ' <option value="'.attribute_escape(htmlentities($thisMedia['URI'])).'" selected="selected">'.htmlentities(podPress_stringLimiter($thisMedia['URI'], 100, true)).'</option>'."\n";
  801. } else {
  802. if ( FALSE === stristr(PHP_OS, 'WIN') ) {
  803. echo ' <option value="'.attribute_escape(htmlentities($thisMedia['URI']), ENT_COMPAT, $blog_charset).'" selected="selected">'.htmlentities(podPress_stringLimiter($thisMedia['URI'], 100, true), ENT_COMPAT, $blog_charset).'</option>'."\n";
  804. } else {
  805. echo ' <option value="'.attribute_escape($thisMedia['URI']).'" selected="selected">'.htmlentities(podPress_stringLimiter($thisMedia['URI'], 100, true), ENT_COMPAT, $blog_charset).'</option>'."\n";
  806. }
  807. }
  808. }
  809. echo $fileOptionList;
  810. unset($fileOptionList);
  811. if ( $this->settings['enablePodangoIntegration'] ) {
  812. echo " </optgroup>\n";
  813. }
  814. echo ' </select>'."\n";
  815. echo ' <input type="hidden" id="podPressMedia_'.$num.'_cleanURI" value="no" />'."\n";
  816. } else {
  817. echo ' <input type="text" id="podPressMedia_'.$num.'_URI" name="podPressMedia['.$num.'][URI]" class="podpress_wide_text_field" size="40" value="'.attribute_escape($thisMedia['URI']).'" onchange="javascript: podPressMediaFiles['.$num.'][\'URI\'] = this.value; podPressDetectType('.$num.'); podPressCheckForNotSafeFilenameChr( '.$num.', this.value );" />'."\n";
  818. echo ' <span id="podPressMedia_'.$num.'_URI_chrWarning" class="podpress_notice podPressMedia_URI_chrWarning">'.sprintf(__('<strong>Notice:</strong> It is not recommended to use other than these characters: %1$s or whitespaces in file and folder names.', 'podpress'), 'abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 .:/_-\ ').'</span>'."\n";
  819. echo ' <input type="hidden" id="podPressMedia_'.$num.'_cleanURI" value="yes" />'."\n";
  820. }
  821. echo ' </td>'."\n";
  822. echo ' </tr>'."\n";
  823. if($this->settings['enableTorrentCasting']) {
  824. echo ' <tr>'."\n";
  825. echo ' <th>'."\n";
  826. echo ' <label for="podPressMedia_'.$num.'_URItorrent">'.__('.torrent Location', 'podpress').'</label>: '."\n";
  827. echo ' </th>'."\n";
  828. echo ' <td>'."\n";
  829. echo ' <input type="text" id="podPressMedia_'.$num.'_URItorrent" name="podPressMedia['.$num.'][URI_torrent]" size="40" value="'.attribute_escape($thisMedia['URI_torrent']).'" onchange="javascript: podPressMediaFiles['.$num.'][\'URI_torrent\'] = this.value;" />'."\n";
  830. echo ' </td>'."\n";
  831. echo ' </tr>'."\n";
  832. }
  833. echo ' <tr>'."\n";
  834. echo ' <th>'."\n";
  835. echo ' <label for="podPressMedia_'.$num.'_title">'.__('Title', 'podpress').'</label>: '."\n";
  836. echo ' </th>'."\n";
  837. echo ' <td>'."\n";
  838. echo ' <input type="text" id="podPressMedia_'.$num.'_title" name="podPressMedia['.$num.'][title]" class="podpress_wide_text_field" size="40" value="'.attribute_escape($thisMedia['title']).'" onchange="javascript: podPressMediaFiles['.$num.'][\'title\'] = this.value;" />'."\n";
  839. echo ' </td>'."\n";
  840. echo ' </tr>'."\n";
  841. echo ' <tr>'."\n";
  842. echo ' <th>'."\n";
  843. echo ' <label for="podPressMedia_'.$num.'_type">'.__('Type', 'podpress').'</label>: '."\n";
  844. echo ' </th>'."\n";
  845. echo ' <td>'."\n";
  846. echo ' <select id="podPressMedia_'.$num.'_type" name="podPressMedia['.$num.'][type]" onchange="javascript: podPressMediaFiles['.$num.'][\'type\'] = this.value; podPressAdjustMediaFieldsBasedOnType('.$num.');" >'."\n"; podPress_mediaOptions(); echo '</select>'."\n";
  847. echo ' </td>'."\n";
  848. echo ' </tr>'."\n";
  849. echo ' <tr id="podPressMediaSizeWrapper_'.$num.'" >'."\n";
  850. echo ' <th>'."\n";
  851. echo ' <label for="podPressMedia_'.$num.'_size">'.__('File Size', 'podpress').'</label>: '."\n";
  852. echo ' </th>'."\n";
  853. echo ' <td>'."\n";
  854. echo ' <input type="text" id="podPressMedia_'.$num.'_size" name="podPressMedia['.$num.'][size]" size="10" value="'.$thisMedia['size'].'" onchange="javascript: podPressMediaFiles['.$num.'][\'size\'] = this.value;"/> '.__('[in byte]', 'podpress').' <img src="'.PODPRESS_URL.'/images/ajax-loader.gif" id="podPressMedia_'.$num.'_size_loadimg" class="podpress_ajax_loader_img" /><input type="button" id="podPressMedia_'.$num.'_size_detectbutton" value="'.__('Auto Detect', 'podpress').'" onclick="podPress_getfileinfo(\'size\', '.$num.');" />'."\n";
  855. echo ' </td>'."\n";
  856. echo ' </tr>'."\n";
  857. echo ' <tr id="podPressMediaDurationWrapper_'.$num.'" style="display: none;">'."\n";
  858. echo ' <th>'."\n";
  859. echo ' <label for="podPressMedia_'.$num.'_duration">'.__('Duration', 'podpress').'</label>: '."\n";
  860. echo ' </th>'."\n";
  861. echo ' <td>'."\n";
  862. echo ' <input type="text" id="podPressMedia_'.$num.'_duration" name="podPressMedia['.$num.'][duration]" size="10" value="'.$thisMedia['duration'].'" onchange="javascript: podPressMediaFiles['.$num.'][\'duration\'] = this.value;"/> <span class="podpress_abbr" title="'.__('hours:minutes:seconds - for example: 2:45:10 or 34:01 or 1:36 or 120:47 or 0:10', 'podpress').'">'.__('[hh:mm:ss]', 'podpress').'</span> <img src="'.PODPRESS_URL.'/images/ajax-loader.gif" id="podPressMedia_'.$num.'_duration_loadimg" class="podpress_ajax_loader_img" /><input type="button" id="podPressMedia_'.$num.'_duration_detectbutton" value="'.__('Auto Detect', 'podpress').'" onclick="podPress_getfileinfo(\'duration\', '.$num.');" /> ('.sprintf(__('This may take some time for remote files. %1$s', 'podpress'), '<span class="podpress_abbr" title="'.__('If the file is not on the same server as your blog then podPress will attempt to download the file in order to get this information with the help of getID3() which is only able to retrieve ID3 tags from local files. podPress removes the temporary download file at the end of this process. It is likely that this feature works only for relative small files because the download is probably limited by execution time and memory limits on the server of your blog.', 'podpress').'">'.__('Because ...', 'podpress').'</span>').')'."\n";
  863. echo ' </td>'."\n";
  864. echo ' </tr>'."\n";
  865. if(empty($thisMedia['previewImage'])) {
  866. $thisMedia['previewImage'] = podPress_url().'images/vpreview_center.png';
  867. }
  868. echo ' <tr id="podPressMediaPreviewImageWrapper_'.$num.'" style="display: none;">'."\n";
  869. echo ' <th>'."\n";
  870. echo ' <label for="podPressMedia_'.$num.'_previewImage">'.__('Preview Image URL', 'podpress').'</label>: '."\n";
  871. echo ' </th>'."\n";
  872. echo ' <td>'."\n";
  873. echo ' <input type="text" id="podPressMedia_'.$num.'_previewImage" name="podPressMedia['.$num.'][previewImage]" class="podpress_wide_text_field" size="40" value="'.attribute_escape($thisMedia['previewImage']).'" onchange="javascript: podPressPreviewImageOnChange('.$num.', this.value);" />'."\n";
  874. echo ' </td>'."\n";
  875. echo ' </tr>'."\n";
  876. echo ' <tr id="podPressMediaPreviewImageDisplayWrapper_'.$num.'" style="display: none;">'."\n";
  877. echo ' <th>'."\n";
  878. echo ' '.__('Preview Image', 'podpress').': '."\n";
  879. echo ' </th>'."\n";
  880. echo ' <td>'."\n";
  881. echo ' <div id="podPressPlayerSpace_'.$num.'"></div>'."\n";
  882. echo '<script type="text/javascript"><!--'."\n";
  883. //echo " document.getElementById('podPressPlayerSpace_".$num."').innerHTML = podPressGenerateVideoPreview (".$num.", '', , , document.getElementById('podPressMedia_".$num."_previewImage').value, true);\n";
  884. echo " document.getElementById('podPressPlayerSpace_".$num."').innerHTML = podPressGenerateVideoPreview (".$num.", '', ".$thisMedia['dimensionW'].", ".$thisMedia['dimensionH'].", document.getElementById('podPressMedia_".$num."_previewImage').value, true);\n";
  885. //echo " document.getElementById('podPressPlayerSpace_".$num."').innerHTML = podPressGenerateVideoPreview (".$num.", '', ".intval($thisMedia['dimensionW']).", ".intval($thisMedia['dimensionH']).", document.getElementById('podPressMedia_".$num."_previewImage').value, true);\n";
  886. echo "--></script>\n";
  887. echo ' </td>'."\n";
  888. echo ' </tr>'."\n";
  889. echo ' <tr id="podPressMediaDimensionWrapper_'.$num.'">'."\n";
  890. echo ' <th>'."\n";
  891. echo ' '.__('Dimensions', 'podpress').' (WxH): '."\n";
  892. echo ' </th>'."\n";
  893. echo ' <td>'."\n";
  894. echo ' <input type="text" id="podPressMedia_'.$num.'_dimensionW" name="podPressMedia['.$num.'][dimensionW]" size="5" value="'.$thisMedia['dimensionW'].'" onchange="javascript: podPressMediaFiles['.$num.'][\'dimensionW\'] = this.value; podPressUpdateDimensionList(\''.$num.'\');" />x<input type="text" id="podPressMedia_'.$num.'_dimensionH" name="podPressMedia['.$num.'][dimensionH]" size="5" value="'.$thisMedia['dimensionH'].'" onchange="javascript: podPressMediaFiles['.$num.'][\'dimensionH\'] = this.value; podPressUpdateDimensionList(\''.$num.'\')" /> '."\n";
  895. echo ' <select id="podPressMedia_'.$num.'_dimensionList" onchange="javascript: podPressUpdateDimensions(\''.$num.'\', this.value);">'."\n"; podPress_videoDimensionOptions($thisMedia['dimensionW'].':'.$thisMedia['dimensionH']); echo '</select>'."\n";
  896. echo ' </td>'."\n";
  897. echo ' </tr>'."\n";
  898. if($post->post_status == 'static') {
  899. echo ' <tr style="display: none;">'."\n";
  900. } else {
  901. echo ' <tr>'."\n";
  902. }
  903. echo ' <th>'."\n";
  904. echo ' '.__('Included in', 'podpress').': '."\n";
  905. echo ' </th>'."\n";
  906. echo ' <td>'."\n";
  907. echo ' &nbsp;<label for="podPressMedia_'.$num.'_rss">'.__('RSS2', 'podpress').'</label> <input type="checkbox" id="podPressMedia_'.$num.'_rss" name="podPressMedia['.$num.'][rss]" onchange="javascript: podPressMediaFiles['.$num.'][\'rss\'] = this.checked; podPressSetSingleRSS('.$num.');" />'."\n";
  908. echo ' &nbsp;<label for="podPressMedia_'.$num.'_atom">'.__('ATOM', 'podpress').'</label> <input type="checkbox" id="podPressMedia_'.$num.'_atom" name="podPressMedia['.$num.'][atom]" onchange="javascript: podPressMediaFiles['.$num.'][\'atom\'] = this.checked;" />'."\n";
  909. echo ' &nbsp;<label for="podPressMedia_'.$num.'_feedonly">'.__('Feed Only', 'podpress').'</label> <input type="checkbox" id="podPressMedia_'.$num.'_feedonly" name="podPressMedia['.$num.'][feedonly]" onchange="javascript: podPressMediaFiles['.$num.'][\'feedonly\'] = this.checked;" />'."\n";
  910. echo ' </td>'."\n";
  911. echo ' </tr>'."\n";
  912. if($this->settings['enablePremiumContent']) {
  913. echo ' <tr>'."\n";
  914. echo ' <th>'."\n";
  915. echo ' <label for="podPressMedia_'.$num.'_content_level">'.__('Subscription', 'podpress').'</label>:';
  916. echo ' </th>'."\n";
  917. echo ' <td>'."\n";
  918. echo ' <select id="podPressMedia_'.$num.'_content_level" name="podPressMedia['.$num.'][content_level]" onchange="javascript: podPressMediaFiles['.$num.'][\'content_level\'] = this.value;">'."\n";
  919. echo ' <option value="free" '; if(empty($thisMedia['content_level']) || $thisMedia['content_level'] == 'free') { echo 'selected="selected"'; } echo '>'.__('Free', 'podpress').'</option>'."\n";
  920. foreach (podPress_getCapList(true) as $cap) {
  921. if(substr($cap, -8, 8) == '_content') {
  922. echo ' <option value="'.$cap.'" '; if($thisMedia['content_level'] == $cap) { echo 'selected="selected"'; } echo '>'.__(podPress_getCapName($cap), 'podpress').'</option>'."\n";
  923. }
  924. }
  925. echo ' </select>'."\n";
  926. echo ' </td>'."\n";
  927. echo ' </tr>'."\n";
  928. }
  929. echo ' <tr>'."\n";
  930. echo ' <th>'."\n";
  931. echo ' <label for="podPressMedia_'.$num.'_disablePlayer">'.__('Disable Player', 'podpress').'</label>:'."\n";
  932. echo ' </th>'."\n";
  933. echo ' <td>'."\n";
  934. echo ' <input type="checkbox" id="podPressMedia_'.$num.'_disablePlayer" name="podPressMedia['.$num.'][disablePlayer]"'; if($thisMedia['disablePlayer'] != 'false') { echo 'checked="checked" '; } echo ' onchange="javascript: podPressMediaFiles['.$num.'][\'disablePlayer\'] = this.checked;" />'."\n";
  935. echo ' &nbsp;&nbsp; '.__('(Use if this media file is not compatible with one of the included players.)', 'podpress')."\n";
  936. echo ' </td>'."\n";
  937. echo ' </tr>'."\n";
  938. echo ' <tr>'."\n";
  939. echo ' <th>'."\n";
  940. echo ' <label for="podPressMedia_'.$num.'_disablePreview">'.__('Disable Preview Player', 'podpress').'</label>:'."\n";
  941. echo ' </th>'."\n";
  942. echo ' <td>'."\n";
  943. echo ' <input type="checkbox" id="podPressMedia_'.$num.'_disablePreview" name="podPressMedia['.$num.'][disablePreview]"'; if($thisMedia['disablePreview'] != 'false') { echo 'checked="checked" '; } echo ' onchange="javascript: podPressMediaFiles['.$num.'][\'disablePreview\'] = this.checked;" />'."\n";
  944. echo ' &nbsp;&nbsp; '.__('(Use this to disable the "Click to Play" preview player.)', 'podpress')."\n";
  945. echo ' </td>'."\n";
  946. echo ' </tr>'."\n";
  947. $actionMedia = $thisMedia;
  948. $actionMedia['num'] = $num;
  949. do_action('podPress_customMediaData', array($actionMedia));
  950. echo ' <tr id="podPressMedia_'.$num.'_id3tags_details_row">'."\n";
  951. echo ' <th>'."\n";
  952. echo ' '.__('ID3 Tag Info', 'podpress').":\n";
  953. echo ' </th>'."\n";
  954. echo ' <td>'."\n";
  955. echo ' <img src="'.PODPRESS_URL.'/images/ajax-loader.gif" id="podPressMedia_'.$num.'_id3tags_loadimg" class="podpress_ajax_loader_img" /><input type="button" id="podPressMedia_'.$num.'_id3tags_detectbutton" value="'.__('Show','podpress').'" onclick="javascript: podPressShowHideID3Tags('.$num.');" /> ('.sprintf(__('This may take some time for remote files. %1$s', 'podpress'), '<span class="podpress_abbr" title="'.__('If the file is not on the same server as your blog then podPress will attempt to download the file in order to get this information with the help of getID3() which is only able to retrieve ID3 tags from local files. podPress removes the temporary download file at the end of this process. It is likely that this feature works only for relative small files because the download is probably limited by execution time and memory limits on the server of your blog.', 'podpress').'">'.__('Because ...', 'podpress').'</span>').')'."\n";
  956. echo ' </td>'."\n";
  957. echo ' </tr>'."\n";
  958. echo ' <tr>'."\n";
  959. echo ' <td colspan="2">'."\n";
  960. echo ' <div id="podPressMedia_'.$num.'_id3tags" style="display: none; vertical-align: top;">'."\n";
  961. echo ' </div>'."\n";
  962. echo ' </td>'."\n";
  963. echo ' </tr>'."\n";
  964. echo ' </table>'."\n";
  965. echo ' </div> <!-- end: podPressMediaFileContainer_'.$num.' -->'."\n";
  966. $num++;
  967. }
  968. echo ' <input type="button" name="podPressAddAnother" value="'.__('Add Media File', 'podpress').'" onclick="javascript: podPressAddMediaFile(true, \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'new\', true, false, false, \'free\'); podPressDisplayMediaFiles();"/>'."\n";
  969. if($entryType != 'page') {
  970. echo ' <br/>'."\n";
  971. echo ' <h4>'.__('Post specific settings for iTunes:', 'podpress').'</h4>'."\n";
  972. //echo ' <input type="button" name="iTunesSpecificSettings_button" id="iTunesSpecificSettings_button" value="Show" onclick="javascript: podPressShowHideDiv(\'iTunesSpecificSettings\');"/>'."\n";
  973. echo ' <div class="wrap" id="iTunesSpecificSettings">'."\n";
  974. echo ' <table class="podpress_editor_table">'."\n";
  975. echo ' <tr>'."\n";
  976. echo ' <th>'."\n";
  977. echo ' <label for="iTunesSubtitleChoice">'.__('iTunes:Subtitle', 'podpress').'</label> <a href="javascript:void(null);" onclick="javascript: podPressShowHideRow(\'iTunesSubtitleHelp\');">(?)</a>:'."\n";
  978. echo ' </th>'."\n";
  979. echo ' <td>'."\n";
  980. echo ' <select id="iTunesSubtitleChoice" name="iTunesSubtitleChoice" onchange="javascript: if(this.value == \'Custom\') { document.getElementById(\'iTunesSubtitleWrapper\').style.display=\'\'; } else { document.getElementById(\'iTunesSubtitleWrapper\').style.display=\'none\'; }">'."\n";
  981. echo ' <option value="PostExcerpt" '; if($post->podPressPostSpecific['itunes:subtitle'] == '##PostExcerpt##') { echo 'selected="selected"'; } echo '>'.__('Use the excerpt', 'podpress').'</option>'."\n";
  982. echo ' <option value="Custom" '; if($post->podPressPostSpecific['itunes:subtitle'] != '##PostExcerpt##') { echo 'selected="selected"'; } echo '>'.__('Insert custom value', 'podpress').'</option>'."\n";
  983. echo ' </select>'."\n";
  984. echo ' </td>'."\n";
  985. echo ' </tr>'."\n";
  986. echo ' <tr id="iTunesSubtitleHelp" style="display: none;">'."\n";
  987. echo ' <th>&nbsp;</th>'."\n";
  988. echo ' <td>'.sprintf(__('"%1$s" (default) podPress takes the first 255 characters from the excerpt of the excerpt and if there is none from the blog Post text.', 'podpress'),__('Use the excerpt', 'podpress')).'</td>'."\n";
  989. echo ' </tr>'."\n";
  990. if($post->podPressPostSpecific['itunes:subtitle'] == '##PostExcerpt##') { $tempShowMe = 'style="display: none;"';$post->podPressPostSpecific['itunes:subtitle'] = ''; } else { $tempShowMe = ''; }
  991. echo ' <tr id="iTunesSubtitleWrapper" '.$tempShowMe.'>'."\n";
  992. echo ' <th>&nbsp;</th>'."\n";
  993. echo ' <td>'."\n";
  994. echo ' <textarea name="iTunesSubtitle" class="podpress_wide_text_field" rows="4" cols="40">'.stripslashes($post->podPressPostSpecific['itunes:subtitle']).'</textarea>'."\n";
  995. echo ' </td>'."\n";
  996. echo ' </tr>'."\n";
  997. echo ' <tr>'."\n";
  998. echo ' <th>'."\n";
  999. echo ' <label for="iTunesSummaryChoice">'.__('iTunes:Summary', 'podpress').'</label> <a href="javascript:void(null);" onclick="javascript: podPressShowHideRow(\'iTunesSummaryHelp\');">(?)</a>:'."\n";
  1000. echo ' </th>'."\n";
  1001. echo ' <td>'."\n";
  1002. echo ' <select id="iTunesSummaryChoice" name="iTunesSummaryChoice" onchange="javascript: if(this.value == \'Custom\') { document.getElementById(\'iTunesSummaryWrapper\').style.display=\'\'; } else { document.getElementById(\'iTunesSummaryWrapper\').style.display=\'none\'; }">'."\n";
  1003. echo ' <option value="PostExcerpt" '; if($post->podPressPostSpecific['itunes:summary'] == '##PostExcerpt##') { echo 'selected="selected"'; } echo '>'.__('Use the excerpt', 'podpress').'</option>'."\n";
  1004. echo ' <option value="PostContentShortened" '; if($post->podPressPostSpecific['itunes:summary'] == '##PostContentShortened##') { echo 'selected="selected"'; } echo '>'.__('autom. excerpt of the post content', 'podpress').'</option>'."\n";
  1005. echo ' <option value="Global" '; if($post->podPressPostSpecific['itunes:summary'] == '##Global##') { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').'</option>'."\n";
  1006. echo ' <option value="Custom" '; if($post->podPressPostSpecific['itunes:summary'] != '##Global##' && $post->podPressPostSpecific['itunes:summary'] != '##PostExcerpt##' && $post->podPressPostSpecific['itunes:summary'] != '##PostContentShortened##') { echo 'selected="selected"'; } echo '>'.__('Insert custom value', 'podpress').'</option>'."\n";
  1007. echo ' </select>'."\n";
  1008. echo ' </td>'."\n";
  1009. echo ' </tr>'."\n";
  1010. echo ' <tr id="iTunesSummaryHelp" style="display: none;">'."\n";
  1011. echo ' <th>&nbsp;</th>'."\n";
  1012. echo ' <td>'.sprintf(__('"%1$s" (default) podPress takes the excerpt. If you have not written an excerpt then it takes a part from the blog Post text.', 'podpress'),__('Use the excerpt', 'podpress')).'</td>'."\n";
  1013. echo ' </tr>'."\n";
  1014. if($post->podPressPostSpecific['itunes:summary'] == '##Global##' || $post->podPressPostSpecific['itunes:summary'] == '##PostExcerpt##' || $post->podPressPostSpecific['itunes:summary'] == '##PostContentShortened##') { $tempShowMe = 'style="display: none;"'; $post->podPressPostSpecific['itunes:summary'] = ''; } else { $tempShowMe = ''; }
  1015. echo ' <tr id="iTunesSummaryWrapper" '.$tempShowMe.'>'."\n";
  1016. echo ' <th>&nbsp;</th>'."\n";
  1017. echo ' <td>'."\n";
  1018. echo ' <textarea name="iTunesSummary" class="podpress_wide_text_field" rows="4" cols="40">'.stripslashes($post->podPressPostSpecific['itunes:summary']).'</textarea>'."\n";
  1019. echo ' </td>'."\n";
  1020. echo ' </tr>'."\n";
  1021. echo ' <tr>'."\n";
  1022. echo ' <th>'."\n";
  1023. echo ' <label for="iTunesKeywordsChoice">'.__('iTunes:Keywords', 'podpress').'</label> <a href="javascript:void(null);" onclick="javascript: podPressShowHideRow(\'iTunesKeywordsHelp\');">(?)</a>:'."\n";
  1024. echo ' </th>'."\n";
  1025. echo ' <td>'."\n";
  1026. echo ' <select id="iTunesKeywordsChoice" name="iTunesKeywordsChoice" onchange="javascript: if(this.value == \'Custom\') { document.getElementById(\'iTunesKeywordsWrapper\').style.display=\'\'; } else { document.getElementById(\'iTunesKeywordsWrapper\').style.display=\'none\'; }">'."\n";
  1027. echo ' <option value="WordPressCats" '; if($post->podPressPostSpecific['itunes:keywords'] == '##WordPressCats##') { echo 'selected="selected"'; } echo '>'.__('Use WordPress Categories', 'podpress').'</option>'."\n";
  1028. echo ' <option value="post_tags" '; if($post->podPressPostSpecific['itunes:keywords'] == '##post_tags##') { echo 'selected="selected"'; } echo '>'.__('Use the tags of the post', 'podpress').'</option>'."\n";
  1029. echo ' <option value="Global" '; if($post->podPressPostSpecific['itunes:keywords'] == '##Global##') { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').' ('.podPress_stringLimiter(stripslashes($this->settings['iTunes']['keywords']), 40) .')</option>'."\n";
  1030. echo ' <option value="Custom" '; if($post->podPressPostSpecific['itunes:keywords'] != '##Global##' AND $post->podPressPostSpecific['itunes:keywords'] != '##WordPressCats##' AND $post->podPressPostSpecific['itunes:keywords'] != '##post_tags##') { echo 'selected="selected"'; } echo '>'.__('Insert custom value', 'podpress').'</option>'."\n";
  1031. echo ' </select>'."\n";
  1032. echo ' </td>'."\n";
  1033. echo ' </tr>'."\n";
  1034. echo ' <tr id="iTunesKeywordsHelp" style="display: none;">'."\n";
  1035. echo ' <th>&nbsp;</th>'."\n";
  1036. echo ' <td>'.__('Not visible in iTunes, but used for searches.', 'podpress').'</td>'."\n";
  1037. echo ' </tr>'."\n";
  1038. if ( $post->podPressPostSpecific['itunes:keywords'] == '##Global##' OR $post->podPressPostSpecific['itunes:keywords'] == '##WordPressCats##' OR $post->podPressPostSpecific['itunes:keywords'] == '##post_tags##' ) { $tempShowMe = 'style="display: none;"'; $post->podPressPostSpecific['itunes:keywords'] = ''; } else { $tempShowMe = ''; }
  1039. echo ' <tr id="iTunesKeywordsWrapper" '.$tempShowMe.'>'."\n";
  1040. echo ' <th>&nbsp;</th>'."\n";
  1041. echo ' <td>'."\n";
  1042. echo ' '.__('a list of max. 12 comma separated words', 'podpress').'<br/><textarea name="iTunesKeywords" class="podpress_wide_text_field" rows="4" cols="40">'.stripslashes($post->podPressPostSpecific['itunes:keywords']).'</textarea>'."\n";
  1043. echo ' </td>'."\n";
  1044. echo ' </tr>'."\n";
  1045. echo ' <tr>'."\n";
  1046. echo ' <th>'."\n";
  1047. echo ' <label for="iTunesAuthorChoice">'.__('iTunes:Author', 'podpress').'</label> <a href="javascript:void(null);" onclick="javascript: podPressShowHideRow(\'iTunesAuthorHelp\');">(?)</a>:'."\n";
  1048. echo ' </th>'."\n";
  1049. echo ' <td>'."\n";
  1050. echo ' <select id="iTunesAuthorChoice" name="iTunesAuthorChoice" onchange="javascript: if(this.value == \'Custom\') { document.getElementById(\'iTunesAuthorWrapper\').style.display=\'\'; } else { document.getElementById(\'iTunesAuthorWrapper\').style.display=\'none\'; }">'."\n";
  1051. echo ' <option value="Global" '; if($post->podPressPostSpecific['itunes:author'] == '##Global##') { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').' ('.podPress_stringLimiter(ucfirst(stripslashes($this->settings['iTunes']['author'])), 40).')</option>'."\n";
  1052. echo ' <option value="Custom" '; if($post->podPressPostSpecific['itunes:author'] != '##Global##') { echo 'selected="selected"'; } echo '>'.__('Insert custom value', 'podpress').'</option>'."\n";
  1053. echo ' </select>'."\n";
  1054. echo ' </td>'."\n";
  1055. echo ' </tr>'."\n";
  1056. echo ' <tr id="iTunesAuthorHelp" style="display: none;">'."\n";
  1057. echo ' <th>&nbsp;</th>'."\n";
  1058. echo ' <td>'.__('Used if this Author is different than the feeds author.', 'podpress').'</td>'."\n";
  1059. echo ' </tr>'."\n";
  1060. if($post->podPressPostSpecific['itunes:author'] == '##Global##') { $tempShowMe = 'style="display: none;"'; $post->podPressPostSpecific['itunes:author'] = ''; } else { $tempShowMe = ''; }
  1061. echo ' <tr id="iTunesAuthorWrapper" '.$tempShowMe.'>'."\n";
  1062. echo ' <th>&nbsp;</th>'."\n";
  1063. echo ' <td><input type="text" name="iTunesAuthor" class="podpress_wide_text_field" size="40" value="'.attribute_escape($post->podPressPostSpecific['itunes:author']).'" /></td>'."\n";
  1064. echo ' </tr>'."\n";
  1065. echo ' <tr>'."\n";
  1066. echo ' <th>'."\n";
  1067. echo ' <label for="iTunesExplicit">'.__('iTunes:Explicit', 'podpress').'</label> <a href="javascript:void(null);" onclick="javascript: podPressShowHideRow(\'iTunesExplicitHelp\');">(?)</a>:'."\n";
  1068. echo ' </th>'."\n";
  1069. echo ' <td>'."\n";
  1070. echo ' <select id="iTunesExplicit" name="iTunesExplicit">'."\n";
  1071. echo ' <option value="Default" '; if($post->podPressPostSpecific['itunes:explicit'] == 'Default') { echo 'selected="selected"'; } echo '>'.__('Use Default', 'podpress').' ('.$this->settings['iTunes']['explicit'].')</option>'."\n";
  1072. echo ' <option value="No" '; if($post->podPressPostSpecific['itunes:explicit'] == 'No') { echo 'selected="selected"'; } echo '>'.__('No', 'podpress').'</option>'."\n";
  1073. echo ' <option value="Yes" '; if($post->podPressPostSpecific['itunes:explicit'] == 'Yes') { echo 'selected="selected"'; } echo '>'.__('Yes', 'podpress').'</option>'."\n";
  1074. echo ' <option value="Clean" '; if($post->podPressPostSpecific['itunes:explicit'] == 'Clean') { echo 'selected="selected"'; } echo '>'.__('Clean', 'podpress').'</option>'."\n";
  1075. echo ' </select>'."\n";
  1076. echo ' </td>'."\n";
  1077. echo ' </tr>'."\n";
  1078. echo ' <tr id="iTunesExplicitHelp" style="display: none;">'."\n";
  1079. echo ' <th>&nbsp;</th>'."\n";
  1080. echo ' <td>'.__('Does your podcast contain explicit language or adult content? (If you choose "Yes" or "Clean" then a corresponding notice will show up in iTunes (Explicit resp. Clean). If you choose "No" then there will be special notice.)', 'podpress').'</td>'."\n";
  1081. echo ' </tr>'."\n";
  1082. echo ' <tr>'."\n";
  1083. echo ' <th>'."\n";
  1084. echo ' <label for="iTunesBlock">'.__('iTunes:Block', 'podpress').'</label> <a href="javascript:void(null);" onclick="javascript: podPressShowHideRow(\'itunesBlockHelp\');">(?)</a>:'."\n";
  1085. echo ' </th>'."\n";
  1086. echo ' <td>'."\n";
  1087. echo ' <select id="iTunesBlock" name="iTunesBlock">'."\n";
  1088. echo ' <option value="Default" '; if($post->podPressPostSpecific['itunes:block'] == 'Default') { echo 'selected="selected"'; } echo '>'.__('Use Default', 'podpress').' ('.$this->settings['iTunes']['block'].')</option>'."\n";
  1089. echo ' <option value="No" '; if($post->podPressPostSpecific['itunes:block'] == 'No') { echo 'selected="selected"'; } echo '>'.__('No', 'podpress').'</option>'."\n";
  1090. echo ' <option value="Yes" '; if($post->podPressPostSpecific['itunes:block'] == 'Yes') { echo 'selected="selected"'; } echo '>'.__('Yes', 'podpress').'</option>'."\n";
  1091. echo ' </select>'."\n";
  1092. echo ' </td>'."\n";
  1093. echo ' </tr>'."\n";
  1094. echo ' <tr id="itunesBlockHelp" style="display: none;">'."\n";
  1095. echo ' <th>&nbsp;</th>'."\n";
  1096. echo ' <td>'.__('Prevent this episode or podcast from appearing in iTunes.', 'podpress').'</td>'."\n";
  1097. echo ' </tr>'."\n";
  1098. echo ' </table>'."\n";
  1099. echo ' </div> <!-- end: iTunesSpecificSettings -->'."\n";
  1100. }
  1101. if($this->settings['enablePodangoIntegration']) {
  1102. echo " <br/>\n";
  1103. echo ' <strong>Podango File Uploader</strong>';
  1104. if($this->settings['podangoDefaultPodcast'] == '##ALL##') {
  1105. $podangoPodcastList = $this->podangoapi->GetPodcasts(true);
  1106. echo ' <strong>for: </strong><select name="podPressPodangoPodcastID" id="podPressPodangoPodcastID" onChange="javascript: document.getElementById(\'podangoUploadFrame\').src=\''.$this->podangoapi->fileUploader.'?podcastId=\'+this.value">'."\n";
  1107. foreach ($podangoPodcastList as $k=>$v) {
  1108. if(!isset($podangoPodcastID)) {
  1109. $podangoPodcastID = $k;
  1110. }
  1111. echo ' <option value="'.$k.'">'.$v['Title'].'</option>'."\n";
  1112. }
  1113. echo ' </select>'."\n";
  1114. } else {
  1115. $podangoPodcastID = $this->settings['podangoDefaultPodcast'];
  1116. }
  1117. echo '<br/>'."\n";
  1118. echo ' <iframe src="'.$this->podangoapi->fileUploader.'?podcastId='.$podangoPodcastID.'" id="podangoUploadFrame" title="Podango Upload" border="0" width="560" height="110"> </iframe>'."\n";
  1119. }
  1120. echo '<script type="text/javascript">podPressDisplayMediaFiles(); </script>'."\n";
  1121. }
  1122. function post_edit($post_id) {
  1123. GLOBAL $post, $pagenow;
  1124. if ($this->justposted) {
  1125. return;
  1126. }
  1127. $blog_charset = get_bloginfo('charset');
  1128. // this condition make sure that the podpress settings of a post or page will be saved only via this admin pages and not "quick edit"
  1129. if ( "post.php" === $pagenow OR "page.php" === $pagenow OR "post-new.php" === $pagenow OR "page-new.php" === $pagenow ) {
  1130. // patch for compat with post revisions (WP 2.6+)
  1131. if ( isset($_POST['post_ID']) && (int) $_POST['post_ID'] )
  1132. $post_id = (int) $_POST['post_ID'];
  1133. $this->justposted = true;
  1134. if($this->checkWritableTempFileDir()) {
  1135. if(!empty($this->tempfilesystempath)) {
  1136. $dh = opendir($this->tempfilesystempath);
  1137. while (false !== ($filename = readdir($dh))) {
  1138. if(substr($filename, 0, 10) == 'feedcache_' && is_file($this->tempfilesystempath.'/'.$filename)) {
  1139. unlink($this->tempfilesystempath.'/'.$filename);
  1140. }
  1141. }
  1142. }
  1143. }
  1144. if(isset($_POST['podPressMedia'])) {
  1145. $i=0;
  1146. foreach ($_POST['podPressMedia'] as $mediafiledata) {
  1147. if ( !empty($mediafiledata['URI']) ) {
  1148. foreach ($mediafiledata as $key => $value) {
  1149. switch ($key) {
  1150. case 'URI' :
  1151. if ( isset($mediafiledata['podPressMedia_'.$i.'_cleanURI']) AND 'yes' === $mediafiledata['podPressMedia_'.$i.'_cleanURI']) {
  1152. $verifiedMedia[$i][$key] = clean_url($value, array('http', 'https'), 'db');
  1153. } else {
  1154. $verifiedMedia[$i][$key] = trim($value);
  1155. }
  1156. break;
  1157. case 'title' :
  1158. $verifiedMedia[$i][$key] = htmlspecialchars(strip_tags(trim($value)), ENT_QUOTES, $blog_charset);
  1159. break;
  1160. case 'size' :
  1161. case 'dimensionW' :
  1162. case 'dimensionH' :
  1163. $value = strip_tags(trim($value));
  1164. $verifiedMedia[$i][$key] = intval(preg_replace('/[^0-9]/', '', $value));
  1165. break;
  1166. case 'duration':
  1167. $value = strip_tags(trim($value));
  1168. $result = preg_match('/(^([0-9]{1,3})(:([0-5][0-9])){0,1}(:([0-5][0-9])$))/', $value, $b);
  1169. if (!empty($b) AND 0 < $result) {
  1170. $verifiedMedia[$i][$key] = $value;
  1171. } else {
  1172. $verifiedMedia[$i][$key] = '';
  1173. }
  1174. break;
  1175. default :
  1176. $verifiedMedia[$i][$key] = $value;
  1177. break;
  1178. }
  1179. }
  1180. }
  1181. $i++;
  1182. }
  1183. delete_post_meta($post_id, '_podPressMedia');
  1184. if(!empty($verifiedMedia)) {
  1185. if($this->settings['enablePodangoIntegration']) {
  1186. foreach ($verifiedMedia as $key=>$val) {
  1187. if(substr($val['URI'], 0, strlen('Podango:')) == 'Podango:') {
  1188. $fileNameParts = explode(':', $val['URI']);
  1189. $podPressPostSpecific['PodangoPodcastID'] = $fileNameParts[1];
  1190. $podPressPostSpecific['PodangoMediaFileID'] = $fileNameParts[2];
  1191. $podPressPostSpecific['PodangoEpisodeID'] = $fileNameParts[3];
  1192. if(empty($podPressPostSpecific['PodangoMediaFileID'])) {
  1193. // need to add the mediafileID lookup
  1194. }
  1195. if(empty($podPressPostSpecific['PodangoEpisodeID'])) {
  1196. if($this->settings['podangoDefaultPodcast'] == '##ALL##') {
  1197. $podangoPodcastID = (int)$_POST['podPressPodangoPodcastID'];
  1198. } else {
  1199. $podangoPodcastID = $this->settings['podangoDefaultPodcast'];
  1200. }
  1201. $podPressPostSpecific['PodangoEpisodeID'] = $this->podangoapi->CreateEpisode($podangoPodcastID, $_POST['post_title'], $_POST['content'], '', $podPressPostSpecific['PodangoMediaFileID']);
  1202. } else {
  1203. $this->podangoapi->UpdateEpisode($podPressPostSpecific['PodangoEpisodeID'], $_POST['post_title'], $_POST['content'], '', $podPressPostSpecific['PodangoMediaFileID']);
  1204. }
  1205. $val['URI'] = $this->podangoapi->mediaTrackerURL.'555/'.$podPressPostSpecific['PodangoEpisodeID'].'/'.$fileNameParts[4];
  1206. $verifiedMedia[$key] = $val;
  1207. unset($fileNameParts);
  1208. }
  1209. }
  1210. }
  1211. podPress_add_post_meta($post_id, '_podPressMedia', $verifiedMedia, true) ;
  1212. }
  1213. }
  1214. if(isset($_POST['iTunesSubtitleChoice']) AND $_POST['iTunesSummaryChoice'] AND $_POST['iTunesKeywordsChoice'] AND $_POST['iTunesAuthorChoice'] AND $_POST['iTunesExplicit'] AND $_POST['iTunesBlock']) {
  1215. if($_POST['iTunesSubtitleChoice'] == 'Custom' && !empty($_POST['iTunesSubtitle'])) {
  1216. $podPressPostSpecific['itunes:subtitle'] = htmlspecialchars(strip_tags(trim($_POST['iTunesSubtitle'])), ENT_QUOTES, $blog_charset);
  1217. } else {
  1218. $podPressPostSpecific['itunes:subtitle'] = '##PostExcerpt##';
  1219. }
  1220. if ($_POST['iTunesSummaryChoice'] == 'Custom' && !empty($_POST['iTunesSummary'])) {
  1221. $podPressPostSpecific['itunes:summary'] = htmlspecialchars(strip_tags(trim($_POST['iTunesSummary'])), ENT_QUOTES, $blog_charset);
  1222. } elseif ($_POST['iTunesSummaryChoice'] == 'Global') {
  1223. $podPressPostSpecific['itunes:summary'] = '##Global##';
  1224. } elseif ($_POST['iTunesSummaryChoice'] == 'PostContentShortened') {
  1225. $podPressPostSpecific['itunes:summary'] = '##PostContentShortened##';
  1226. } else {
  1227. $podPressPostSpecific['itunes:summary'] = '##PostExcerpt##';
  1228. }
  1229. if($_POST['iTunesKeywordsChoice'] == 'Custom' && !empty($_POST['iTunesKeywords'])) {
  1230. $podPressPostSpecific['itunes:keywords'] = $this->cleanup_itunes_keywords($_POST['iTunesKeywords']);
  1231. } elseif ($_POST['iTunesKeywordsChoice'] == 'Global') {
  1232. $podPressPostSpecific['itunes:keywords'] = '##Global##';
  1233. } elseif ($_POST['iTunesKeywordsChoice'] == 'post_tags') {
  1234. $podPressPostSpecific['itunes:keywords'] = '##post_tags##';
  1235. } else {
  1236. $podPressPostSpecific['itunes:keywords'] = '##WordPressCats##';
  1237. }
  1238. if($_POST['iTunesAuthorChoice'] == 'Custom' && !empty($_POST['iTunesAuthor'])) {
  1239. $podPressPostSpecific['itunes:author'] = htmlspecialchars(strip_tags(trim($_POST['iTunesAuthor'])), ENT_QUOTES, $blog_charset);
  1240. } else {
  1241. $podPressPostSpecific['itunes:author'] = '##Global##';
  1242. }
  1243. if($_POST['iTunesExplicit']) {
  1244. $podPressPostSpecific['itunes:explicit'] = $_POST['iTunesExplicit'];
  1245. } else {
  1246. $podPressPostSpecific['itunes:explicit'] = 'No';
  1247. }
  1248. if($_POST['iTunesBlock']) {
  1249. $podPressPostSpecific['itunes:block'] = $_POST['iTunesBlock'];
  1250. } else {
  1251. $podPressPostSpecific['itunes:block'] = 'No';
  1252. }
  1253. delete_post_meta($post_id, '_podPressPostSpecific');
  1254. podPress_add_post_meta($post_id, '_podPressPostSpecific', $podPressPostSpecific, true);
  1255. }
  1256. $post->podPressPostSpecific = $podPressPostSpecific;
  1257. /*
  1258. if(class_exists(snoopy)) {
  1259. if(!empty($this->settings['iTunes']['FeedID'])) {
  1260. $client = new Snoopy();
  1261. $client->_fp_timeout = 10;
  1262. $x = $client->fetch('https://phobos.apple.com/WebObjects/MZFinance.woa/wa/pingPodcast?id='.$this->settings['iTunes']['FeedID']);
  1263. } elseif(!empty($this->settings['iTunes']['feedURL'])) {
  1264. $client = new Snoopy();
  1265. $client->_fp_timeout = 10;
  1266. $x = $client->fetch('https://phobos.apple.com/WebObjects/MZFinance.woa/wa/pingPodcast?feedURL='.$this->settings['iTunes']['feedURL']);
  1267. }
  1268. }
  1269. */
  1270. } else {
  1271. return;
  1272. }
  1273. }
  1274. function edit_category_form($input) {
  1275. global $wp_version, $action;
  1276. if ( ('edit' == $_GET['action'] AND TRUE == version_compare($wp_version, '2.7', '<')) OR 'edit' == $action ) { // show the following form only when an existing category is going to be edited.
  1277. if (TRUE == version_compare($wp_version, '2.9.3','>') ) { // since WP 3.0 the cat_ID isreplaced by tag_ID
  1278. $data = podPress_get_option('podPress_category_'.$_GET['tag_ID']);
  1279. } else {
  1280. $data = podPress_get_option('podPress_category_'.$input->cat_ID);
  1281. }
  1282. $blog_charset = get_bloginfo('charset');
  1283. if (empty($data['podcastFeedURL'])) {
  1284. if (TRUE == version_compare($wp_version, '2.9.3','>') ) { // since WP 3.0 the cat_ID isreplaced by tag_ID
  1285. $data['podcastFeedURL'] = get_term_feed_link($_GET['tag_ID']);
  1286. } elseif ( TRUE == version_compare($wp_version, '2.9.3','<=') AND TRUE == version_compare($wp_version, '2.4','>') ) {
  1287. $data['podcastFeedURL'] = get_category_feed_link($_GET['cat_ID']);
  1288. } else {
  1289. $data['podcastFeedURL'] = get_option('siteurl').'/?feed=rss2&cat='.$input->cat_ID;
  1290. }
  1291. } else {
  1292. $url_parts = parse_url($data['podcastFeedURL']);
  1293. if (isset($url_parts['query'])) {
  1294. $output='';
  1295. parse_str($url_parts['query'], $output);
  1296. if ( TRUE === isset($output['cat']) AND FALSE !== empty($output['cat']) ) {
  1297. if (TRUE == version_compare($wp_version, '2.9.3','>') ) { // since WP 3.0 the cat_ID isreplaced by tag_ID
  1298. $data['podcastFeedURL'] = get_term_feed_link($_GET['tag_ID']);
  1299. } elseif ( TRUE == version_compare($wp_version, '2.9.3','<=') AND TRUE == version_compare($wp_version, '2.4','>') ) {
  1300. $data['podcastFeedURL'] = get_category_feed_link($_GET['cat_ID']);
  1301. } else {
  1302. $data['podcastFeedURL'] = get_option('siteurl').'/?feed=rss2&cat='.$input->cat_ID;
  1303. }
  1304. }
  1305. }
  1306. }
  1307. // some ids of category input fields have changed with WP 3.0
  1308. $wp_version_parts = explode('.', $wp_version);
  1309. if (is_array($wp_version_parts)) {
  1310. $main_wp_version = $wp_version_parts[0];
  1311. } else {
  1312. $main_wp_version = 0;
  1313. }
  1314. echo '<div class="wrap">'."\n";
  1315. if ( TRUE == version_compare($wp_version, '2.7', '>=') ) {
  1316. echo '<div id="podpress-icon" class="icon32"><br /></div>';
  1317. }
  1318. echo ' <h2>'.__('podPress Category Casting', 'podpress').'</h2>'."\n";
  1319. echo ' <label for="categoryCasting"><strong>'.__('Enable Category Casting', 'podpress').'</strong></label> <a href="javascript:void(null);" onclick="javascript: podPressShowHideDiv(\'categoryCastingHelp\');">(?)</a>:';
  1320. echo ' <input type="checkbox" name="categoryCasting" id="categoryCasting" '; if($data['categoryCasting'] == 'true') { echo 'checked="checked"'; } echo ' onclick="javascript: podPress_updateCategoryCasting('.$main_wp_version.');"/>'."\n";
  1321. echo ' <div id="categoryCastingHelp" style="display: none;">'."\n";
  1322. echo ' '.__('This feature is for cases in which you want to host more than one podcast in one blog or if you want to have different podcast feeds with different media files of certain file types per feed (e.g a feed which contains only .mp3 files).<br />Basically this feature gives you the opportunity to modify some of the feed elements and set them to other then as the general value from the Feed/iTunes Settings of podPress.<br/>For instance: If you organize your audio episodes in one category and the video episodes in a different category then you can modify the feed content describing values like the title or the description in the form below. This your category feeds will be more distinguishable from another.', 'podpress').'<br />'."\n";
  1323. echo ' </div>'."\n";
  1324. echo ' <div class="wrap" id="iTunesSpecificSettings" style="display: none; border: 0;">'."\n";
  1325. podPress_DirectoriesPreview('edit_category_form');
  1326. echo ' <fieldset class="options">'."\n";
  1327. echo ' <legend>'.__('Category Feed Options', 'podpress').'</legend>'."\n";
  1328. echo ' <h3>'.__('iTunes Settings', 'podpress').'</h3>'."\n";
  1329. echo ' <table class="podpress_feed_gensettings">'."\n";
  1330. echo ' <tr> '."\n";
  1331. echo ' <th>';
  1332. echo ' <label for="iTunesFeedID">'.__('iTunes:FeedID', 'podpress').'</label>';
  1333. echo ' </th>';
  1334. echo ' <td colspan="2">';
  1335. echo ' <input name="iTunesFeedID" id="iTunesFeedID" type="text" value="'.attribute_escape($data['iTunesFeedID']).'" size="10" />';
  1336. echo ' </td>'."\n";
  1337. echo ' </tr>'."\n";
  1338. echo ' <tr> '."\n";
  1339. echo ' <th>';
  1340. echo ' <label for="iTunesNewFeedURL">'.__('iTunes:New-Feed-Url', 'podpress').'</label>';
  1341. echo ' </th>';
  1342. echo ' <td>';
  1343. echo ' <select name="iTunesNewFeedURL" id="iTunesNewFeedURL">'."\n";
  1344. echo ' <option value="##Global##" '; if($data['iTunesNewFeedURL'] == '##Global##' || empty($data['iTunesNewFeedURL'])) { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').'</option>'."\n";
  1345. echo ' <option value="Disable" '; if($data['iTunesNewFeedURL'] == 'Disable') { echo 'selected="selected"'; } echo '>'.__('Disable', 'podpress').'</option>'."\n";
  1346. echo ' <option value="Enable" '; if($data['iTunesNewFeedURL'] == 'Enable') { echo 'selected="selected"'; } echo '>'.__('Enable', 'podpress').'</option>'."\n";
  1347. echo ' </select>'."\n";
  1348. echo ' </td>';
  1349. echo ' <td>';
  1350. echo ' '.__('If you want to change the URL of your podcast feed which you have used in the iTunes Store then change the "Podcast Feed URL" and set this option to "Enable" until the iTunes Store recognizes the new URL. This may take several days. "Enable" will add the <code>&lt;itunes:new-feed-url&gt;</code> tag to the RSS feeds and set the "Podcast Feed URL" as the new URL. For further information about "<a href="http://www.apple.com/itunes/podcasts/specs.html#changing" title="iTunes Podcasting Resources: Changing Your Feed URL" target="_blank">Changing Your Feed URL</a>" read on in the <a href="http://www.apple.com/itunes/podcasts/specs.html" target="_blank" title="iTunes Podcasting Resources: Making a Podcast">iTunes Podcasting Resources</a>.', 'podpress')."\n";
  1351. echo ' <p><label for="podcastFeedURL"><strong>'.__('the new Feed URL', 'podpress').'</strong></label>';
  1352. echo ' <br/>';
  1353. echo ' <input type="text" id="podcastFeedURL" name="podcastFeedURL" class="podpress_wide_text_field" size="40" value="'.attribute_escape($data['podcastFeedURL']).'" /><br />'.__('The URL of your Podcast Feed. If you want to register your podcast at the iTunes Store or if your podcast is already listed there then this input field should contain the same URL as in the iTunes Store settings. If you want change the URL at the iTunes Store then please read first the help text of the iTunes:New-Feed-Url option.', 'podpress');
  1354. echo ' <br /><input type="button" value="'.__('Validate your Feed','podpress').'" onclick="javascript: if(document.getElementById(\'podcastFeedURL\').value != \'\') { window.open(\'http://www.feedvalidator.org/check.cgi?url=\'+document.getElementById(\'podcastFeedURL\').value); }"/>'."\n";
  1355. echo ' </p></td>'."\n";
  1356. echo ' </tr>'."\n";
  1357. echo ' <tr>'."\n";
  1358. echo ' <th>';
  1359. echo ' <label for="iTunesSummaryChoice">'.__('iTunes:Summary', 'podpress').'</label>'."\n";
  1360. echo ' </th>';
  1361. echo ' <td colspan="2">';
  1362. echo ' <select id="iTunesSummaryChoice" name="iTunesSummaryChoice" onchange="javascript: podPress_updateCategoryCasting('.$main_wp_version.');">'."\n";
  1363. echo ' <option value="Global" '; if($data['iTunesSummaryChoice'] != 'Custom') { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').'</option>'."\n";
  1364. echo ' <option value="Custom" '; if($data['iTunesSummaryChoice'] == 'Custom') { echo 'selected="selected"'; } echo '>'.__('Insert custom value', 'podpress').'</option>'."\n";
  1365. echo ' </select>'."\n";
  1366. echo ' <input type="hidden" id="global_iTunesSummary" value="'.attribute_escape(stripslashes($this->settings['iTunes']['summary'])).'" />'."\n";
  1367. echo ' <div id="iTunesSummaryWrapper" style="display: none;">'."\n";
  1368. echo ' <textarea name="iTunesSummary" id="iTunesSummary" class="podpress_wide_text_field" rows="4" cols="40" onchange="javascript: podPress_updateCategoryCasting('.$main_wp_version.');">'.stripslashes($data['iTunesSummary']).'</textarea>'."\n";
  1369. echo ' </div>'."\n";
  1370. echo ' <div id="iTunesSummaryHelp">'."\n";
  1371. echo ' '.__('By default this is taken from the blog Post text.', 'podpress')."\n";
  1372. echo ' </div>'."\n";
  1373. echo ' </td>'."\n";
  1374. echo ' </tr>'."\n";
  1375. echo ' <tr>'."\n";
  1376. echo ' <th>';
  1377. echo ' <label for="iTunesImageChoice">'.__('iTunes:Image', 'podpress').'</label>'."\n";
  1378. echo ' </th>';
  1379. echo ' <td colspan="2">';
  1380. echo ' '.__('The iTunes image should be a square image with <a href="http://www.apple.com/itunes/podcasts/specs.html#image" target="_blank">at least 600 x 600 pixels</a> as Apple writes in "<a href="http://www.apple.com/itunes/podcasts/specs.html" target="_blank">Making a Podcast</a>" of their own Podcasting Resources. iTunes supports JPEG and PNG images (the file name extensions should ".jpg" or ".png").', 'podpress')."\n";
  1381. echo ' <br/>';
  1382. echo ' <select id="iTunesImageChoice" name="iTunesImageChoice" onchange="javascript: podPress_updateCategoryCasting('.$main_wp_version.');">'."\n";
  1383. echo ' <option value="Global" '; if($data['iTunesImageChoice'] != 'Custom') { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').'</option>'."\n";
  1384. echo ' <option value="Custom" '; if($data['iTunesImageChoice'] == 'Custom') { echo 'selected="selected"'; } echo '>'.__('Insert custom value', 'podpress').'</option>'."\n";
  1385. echo ' </select>'."\n";
  1386. echo ' <div id="iTunesImageWrapper" style="display: none;">'."\n";
  1387. echo ' <br/>';
  1388. echo ' <input id="iTunesImage" type="text" name="iTunesImage" value="'.$data['iTunesImage'].'" class="podpress_wide_text_field" size="40" onchange="podPress_updateCategoryCasting('.$main_wp_version.');"/>'."\n";
  1389. echo ' <input id="global_iTunesImage" type="hidden" value="'.$this->settings['iTunes']['image'].'"/>'."\n";
  1390. echo ' </div>'."\n";
  1391. echo ' <br/>';
  1392. echo ' <img id="itunes_image_display" style="width:300px; height:300px;" alt="Podcast Image - Big" src="" /><br />'."\n";
  1393. echo ' <em>'.__('(This image is only a preview which is limited to 300 x 300 pixels.) ', 'podpress').'</em>';
  1394. echo ' </td>'."\n";
  1395. echo ' </tr>'."\n";
  1396. echo ' <tr>'."\n";
  1397. echo ' <th>';
  1398. echo ' <label for="iTunesAuthorChoice">'.__('iTunes:Author/Owner', 'podpress').'</label>'."\n";
  1399. echo ' </th>';
  1400. echo ' <td colspan="2">';
  1401. echo ' <select id="iTunesAuthorChoice" name="iTunesAuthorChoice" onchange="javascript: podPress_updateCategoryCasting('.$main_wp_version.');">'."\n";
  1402. echo ' <option value="Global" '; if($data['iTunesAuthorChoice'] != 'Custom') { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').' ('.podPress_stringLimiter(ucfirst(stripslashes($this->settings['iTunes']['author'])), 40).')</option>'."\n";
  1403. echo ' <option value="Custom" '; if($data['iTunesAuthorChoice'] == 'Custom') { echo 'selected="selected"'; } echo '>'.__('Insert custom value', 'podpress').'</option>'."\n";
  1404. echo ' </select>'."\n";
  1405. echo ' <div id="iTunesAuthorWrapper" style="display: none;">'."\n";
  1406. echo ' <input type="text" name="iTunesAuthor" class="podpress_wide_text_field" size="40" id="iTunesAuthor" value="'.attribute_escape(stripslashes($data['iTunesAuthor'])).'" onchange="javascript: podPress_updateCategoryCasting('.$main_wp_version.');"/>';
  1407. echo ' <input type="hidden" id="global_iTunesAuthor" value="'.attribute_escape(stripslashes($this->settings['iTunes']['author'])).'" />'."\n";
  1408. echo ' </div>'."\n";
  1409. echo ' <div id="iTunesAuthorHelp">'."\n";
  1410. echo ' '.__('Used if this Author is different than the feeds author.', 'podpress')."\n";
  1411. echo ' </div>'."\n";
  1412. echo ' </td>'."\n";
  1413. echo ' <tr>'."\n";
  1414. echo ' </tr>'."\n";
  1415. echo ' <th>';
  1416. echo ' <label for="iTunesAuthorEmailChoice">'.__('Owner E-mail address', 'podpress').'</label>'."\n";
  1417. echo ' </th>';
  1418. echo ' <td colspan="2">';
  1419. echo ' <select id="iTunesAuthorEmailChoice" name="iTunesAuthorEmailChoice" onchange="javascript: podPress_updateCategoryCasting('.$main_wp_version.');">'."\n";
  1420. echo ' <option value="Global" '; if($data['iTunesAuthorEmailChoice'] != 'Custom') { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').' ('.podPress_stringLimiter(ucfirst(stripslashes(get_option('admin_email'))), 40).')</option>'."\n";
  1421. echo ' <option value="Custom" '; if($data['iTunesAuthorEmailChoice'] == 'Custom') { echo 'selected="selected"'; } echo '>'.__('Insert custom value', 'podpress').'</option>'."\n";
  1422. echo ' </select>'."\n";
  1423. echo ' <div id="iTunesAuthorEmailWrapper" style="display: none;">'."\n";
  1424. echo ' <input type="text" name="iTunesAuthorEmail" class="podpress_wide_text_field" size="40" id="iTunesAuthorEmail" value="'.attribute_escape(stripslashes($data['iTunesAuthorEmail'])).'" onchange="javascript: podPress_updateCategoryCasting('.$main_wp_version.');"/>';
  1425. echo ' <input type="hidden" id="global_iTunesAuthorEmail" value="'.attribute_escape(stripslashes(get_option('admin_email'))).'" />'."\n";
  1426. echo ' </div>'."\n";
  1427. echo ' <div id="iTunesAuthorEmailHelp">'."\n";
  1428. echo ' '.__('Used if the owner of this category is different than the feeds owner.', 'podpress')."\n";
  1429. echo ' </div>'."\n";
  1430. echo ' </td>'."\n";
  1431. echo ' </tr>'."\n";
  1432. echo ' <tr>'."\n";
  1433. echo ' <th>';
  1434. echo ' <label for="iTunesSubtitleChoice">'.__('iTunes:Subtitle', 'podpress').'</label>'."\n";
  1435. echo ' </th>';
  1436. echo ' <td colspan="2">';
  1437. echo ' <select id="iTunesSubtitleChoice" name="iTunesSubtitleChoice" onchange="javascript: podPress_updateCategoryCasting('.$main_wp_version.');">'."\n";
  1438. echo ' <option value="Global" '; if($data['iTunesSubtitleChoice'] != 'Custom') { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').'</option>'."\n";
  1439. echo ' <option value="Custom" '; if($data['iTunesSubtitleChoice'] == 'Custom') { echo 'selected="selected"'; } echo '>'.__('Insert custom value', 'podpress').'</option>'."\n";
  1440. echo ' </select>'."\n";
  1441. echo ' <div id="iTunesSubtitleWrapper" style="display: none;">'."\n";
  1442. echo ' <textarea name="iTunesSubtitle" class="podpress_wide_text_field" rows="4" cols="40">'.stripslashes($data['iTunesSubtitle']).'</textarea>'."\n";
  1443. echo ' </div>'."\n";
  1444. echo ' <div id="iTunesSubtitleHelp">'."\n";
  1445. echo ' '.__('By default this is taken from the first 255 characters of the blog Post text.', 'podpress')."\n";
  1446. echo ' </div>'."\n";
  1447. echo ' </td>'."\n";
  1448. echo ' </tr>'."\n";
  1449. echo ' <tr>'."\n";
  1450. echo ' <th>';
  1451. echo ' <label for="iTunesKeywordsChoice">'.__('iTunes:Keywords', 'podpress').'</label>'."\n";
  1452. echo ' </th>';
  1453. echo ' <td colspan="2">';
  1454. echo ' <select id="iTunesKeywordsChoice" name="iTunesKeywordsChoice" onchange="javascript: podPress_updateCategoryCasting('.$main_wp_version.');">'."\n";
  1455. echo ' <option value="Global" '; if($data['iTunesKeywordsChoice'] != 'Custom') { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').' ('.podPress_stringLimiter(stripslashes($this->settings['iTunes']['keywords']), 40).')</option>'."\n";
  1456. echo ' <option value="Custom" '; if($data['iTunesKeywordsChoice'] == 'Custom') { echo 'selected="selected"'; } echo '>'.__('Insert custom value', 'podpress').'</option>'."\n";
  1457. echo ' </select>'."\n";
  1458. echo ' <div id="iTunesKeywordsWrapper">'."\n";
  1459. echo ' '.__('a list of max. 12 comma separated words', 'podpress').'<br/><textarea name="iTunesKeywords" rows="4" cols="40">'.stripslashes($data['iTunesKeywords']).'</textarea>'."\n";
  1460. echo ' </div>'."\n";
  1461. echo ' <div id="iTunesKeywordsHelp">'."\n";
  1462. echo ' '.__('Not visible in iTunes, but used for searches.', 'podpress')."\n";
  1463. echo ' </div>'."\n";
  1464. echo ' </td>'."\n";
  1465. echo ' </tr>'."\n";
  1466. echo ' <tr> '."\n";
  1467. echo ' <th>';
  1468. echo ' <label for="iTunesCategory_0">'.__('iTunes:Categories', 'podpress').'</label>';
  1469. echo ' </th>';
  1470. echo ' <td colspan="2">';
  1471. echo ' <select id="iTunesCategory_0" name="iTunesCategory[0]" onchange="podPress_updateCategoryCasting('.$main_wp_version.');">'."\n";
  1472. echo ' <optgroup label="'.__('Select Primary', 'podpress').'">'."\n";
  1473. if ('' == trim($this->settings['iTunes']['category'][0])) {
  1474. $current_global = '[ '.__('nothing', 'podpress').' ]';
  1475. } else {
  1476. $current_global = $this->settings['iTunes']['category'][0];
  1477. }
  1478. echo ' <option value="##Global##" '; if($data['iTunesCategory'][0] == '##Global##' || empty($data['iTunesCategory'][0])) { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').' ('.$current_global.')</option>'."\n";
  1479. if (empty($data['iTunesCategory'][0])) {
  1480. podPress_itunesCategoryOptions('##Global##');
  1481. } else {
  1482. podPress_itunesCategoryOptions(stripslashes($data['iTunesCategory'][0]));
  1483. }
  1484. echo ' </optgroup>'."\n";
  1485. echo ' </select><br/>'."\n";
  1486. echo ' <input type="hidden" id="global_iTunesCategory" value="'.attribute_escape($this->settings['iTunes']['category'][0]).'" />'."\n";
  1487. echo ' <select name="iTunesCategory[1]">'."\n";
  1488. echo ' <optgroup label="'.__('Select Second', 'podpress').'">'."\n";
  1489. if ('' == trim($this->settings['iTunes']['category'][1])) {
  1490. $current_global = '[ '.__('nothing', 'podpress').' ]';
  1491. } else {
  1492. $current_global = $this->settings['iTunes']['category'][1];
  1493. }
  1494. echo ' <option value="##Global##" '; if($data['iTunesCategory'][1] == '##Global##' || empty($data['iTunesCategory'][1])) { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').' ('.$current_global.')</option>'."\n";
  1495. if (empty($data['iTunesCategory'][1])) {
  1496. podPress_itunesCategoryOptions('##Global##');
  1497. } else {
  1498. podPress_itunesCategoryOptions(stripslashes($data['iTunesCategory'][1]));
  1499. }
  1500. echo ' </optgroup>'."\n";
  1501. echo ' </select><br/>'."\n";
  1502. echo ' <select name="iTunesCategory[2]">'."\n";
  1503. echo ' <optgroup label="'.__('Select Third', 'podpress').'">'."\n";
  1504. if ('' == trim($this->settings['iTunes']['category'][2])) {
  1505. $current_global = '[ '.__('nothing', 'podpress').' ]';
  1506. } else {
  1507. $current_global = $this->settings['iTunes']['category'][2];
  1508. }
  1509. echo ' <option value="##Global##" '; if($data['iTunesCategory'][2] == '##Global##' || empty($data['iTunesCategory'][2])) { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').' ('.$current_global.')</option>'."\n";
  1510. if (empty($data['iTunesCategory'][2])) {
  1511. podPress_itunesCategoryOptions('##Global##');
  1512. } else {
  1513. podPress_itunesCategoryOptions(stripslashes($data['iTunesCategory'][2]));
  1514. }
  1515. echo ' </optgroup>'."\n";
  1516. echo ' </select>'."\n";
  1517. echo ' </td>'."\n";
  1518. echo ' </tr>'."\n";
  1519. echo ' <tr>'."\n";
  1520. echo ' <th>';
  1521. echo ' <label for="iTunesExplicit">'.__('iTunes:Explicit', 'podpress').'</label>'."\n";
  1522. echo ' </th>';
  1523. echo ' <td colspan="2">';
  1524. echo ' <select id="iTunesExplicit" name="iTunesExplicit" onchange="javascript: podPress_updateCategoryCasting('.$main_wp_version.');">'."\n";
  1525. echo ' <option value="##Global##" '; if($data['iTunesExplicit'] == '##Global##' || empty($data['iTunesExplicit'])) { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').' ('.$this->settings['iTunes']['explicit'].')</option>'."\n";
  1526. echo ' <option value="No" '; if($data['iTunesExplicit'] == 'No') { echo 'selected="selected"'; } echo '>'.__('No', 'podpress').'</option>'."\n";
  1527. echo ' <option value="Yes" '; if($data['iTunesExplicit'] == 'Yes') { echo 'selected="selected"'; } echo '>'.__('Yes', 'podpress').'</option>'."\n";
  1528. echo ' <option value="Clean" '; if($data['iTunesExplicit'] == 'Clean') { echo 'selected="selected"'; } echo '>'.__('Clean', 'podpress').'</option>'."\n";
  1529. echo ' </select>'."\n";
  1530. echo ' <div id="iTunesExplicitHelp">'."\n";
  1531. echo ' '.__('Setting to indicate (in iTunes) whether or not your podcast contains explicit language or adult content', 'podpress')."\n";
  1532. echo ' <br/>'.__('"No" (default) - no indicator will show up', 'podpress')."\n";
  1533. echo ' <br/>'.__('"Yes" - an "EXPLICIT" parental advisory graphic will appear next to your podcast artwork or name in iTunes', 'podpress')."\n";
  1534. echo ' <br/>'.__('"Clean" - means that you are sure that no explicit language or adult content is included any of the episodes, and a "CLEAN" graphic will appear', 'podpress')."\n";
  1535. echo ' <p>'.__('You have also the possibility to adjust this option for each post or page with at least one podcast episode (in the post/page editor).', 'podpress').'</p>'."\n";
  1536. echo ' </div>'."\n";
  1537. echo ' </td>'."\n";
  1538. echo ' </tr>'."\n";
  1539. echo ' <tr>'."\n";
  1540. echo ' <th>';
  1541. echo ' <label for="iTunesBlock">'.__('iTunes:Block', 'podpress').'</label>'."\n";
  1542. echo ' </th>';
  1543. echo ' <td colspan="2">';
  1544. echo ' <select id="iTunesBlock" name="iTunesBlock" onchange="javascript: podPress_updateCategoryCasting('.$main_wp_version.');">'."\n";
  1545. echo ' <option value="##Global##" '; if($data['iTunesBlock'] != '##Global##' || empty($data['itunesBlock'])) { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').' ('.$this->settings['iTunes']['block'].')</option>'."\n";
  1546. echo ' <option value="No" '; if($data['iTunesBlock'] == 'No') { echo 'selected="selected"'; } echo '>'.__('No', 'podpress').'</option>'."\n";
  1547. echo ' <option value="Yes" '; if($data['iTunesBlock'] == 'Yes') { echo 'selected="selected"'; } echo '>'.__('Yes', 'podpress').'</option>'."\n";
  1548. echo ' </select>'."\n";
  1549. echo ' <div id="itunesBlockHelp">'."\n";
  1550. echo ' '.__('Use this if you are no longer creating a podcast and you want it removed from the iTunes Store.', 'podpress')."\n";
  1551. echo ' <br/>'.__('"No" (default) - the podcast appears in the iTunes Podcast directory', 'podpress')."\n";
  1552. echo ' <br/>'.__('"Yes" - prevent the entire podcast from appearing in the iTunes Podcast directory', 'podpress')."\n";
  1553. echo ' <p>'.__('You can also use such an option for each of your podcast episodes (in the post/page editor).', 'podpress').'</p>'."\n";
  1554. echo ' </div>'."\n";
  1555. echo ' </td>'."\n";
  1556. echo ' </tr>'."\n";
  1557. echo ' </table>'."\n";
  1558. echo ' <h3>'.__('General Feed Settings', 'podpress').'</h3>'."\n";
  1559. echo ' <table class="podpress_feed_gensettings">'."\n";
  1560. echo ' <tr>'."\n";
  1561. echo ' <th>';
  1562. echo ' <label for="blognameChoice">'.__('Podcast title / Feed title', 'podpress').'</label>';
  1563. echo ' </th>';
  1564. echo ' <td colspan="2">';
  1565. echo ' <select id="blognameChoice" name="blognameChoice" onchange="javascript: podPress_updateCategoryCasting('.$main_wp_version.');">'."\n";
  1566. echo ' <option value="Append" '; if ($data['blognameChoice'] == 'Append' || empty($data['blognameChoice']) ) { echo 'selected="selected"'; } echo '>'.__('Use the Site Title and append the name of the category', 'podpress').'</option>'."\n";
  1567. echo ' <option value="Global" '; if ( $data['blognameChoice'] == 'Global' ) { echo 'selected="selected"'; } echo '>'.__('Use the Site Title', 'podpress').'</option>'."\n";
  1568. echo ' <option value="CategoryName" '; if ( $data['blognameChoice'] == 'CategoryName' ) { echo 'selected="selected"'; } echo '>'.__('Use the name of the category', 'podpress').'</option>'."\n";
  1569. echo ' </select>'."\n";
  1570. echo ' <input type="hidden" id="global_blogname" value="'.attribute_escape(stripslashes(get_option('blogname'))).'" /></td>'."\n";
  1571. echo ' </td>'."\n";
  1572. echo ' </tr>'."\n";
  1573. echo ' <tr>'."\n";
  1574. echo ' <th>';
  1575. echo ' <label for="blogdescriptionChoice">'.__('Description (Tagline)', 'podpress').'</label>'."\n";
  1576. echo ' </th>';
  1577. echo ' <td colspan="2">';
  1578. echo ' <select id="blogdescriptionChoice" name="blogdescriptionChoice" onchange="javascript: podPress_updateCategoryCasting('.$main_wp_version.');">'."\n";
  1579. echo ' <option value="Global" '; if($data['blogdescriptionChoice'] != 'CategoryDescription') { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').'</option>'."\n";
  1580. echo ' <option value="CategoryDescription" '; if($data['blogdescriptionChoice'] == 'CategoryDescription') { echo 'selected="selected"'; } echo '>'.__('Use Category Description', 'podpress').'</option>'."\n";
  1581. echo ' </select>'."\n";
  1582. echo ' <input type="hidden" id="global_blogdescription" value="'.attribute_escape(stripslashes(get_option('blogdescription'))).'" />'."\n";
  1583. echo ' </td>'."\n";
  1584. echo ' </tr>'."\n";
  1585. echo ' <tr>'."\n";
  1586. echo ' <th>';
  1587. echo ' <label for="rss_imageChoice">'.__('Blog/RSS Image (144 x 144 pixels)', 'podpress').'</label>'."\n";
  1588. echo ' </th>';
  1589. echo ' <td colspan="2">';
  1590. echo ' <select id="rss_imageChoice" name="rss_imageChoice" onchange="javascript: podPress_updateCategoryCasting('.$main_wp_version.');">'."\n";
  1591. echo ' <option value="Global" '; if($data['rss_imageChoice'] != 'Custom') { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').'</option>'."\n";
  1592. echo ' <option value="Custom" '; if($data['rss_imageChoice'] == 'Custom') { echo 'selected="selected"'; } echo '>'.__('Insert custom value', 'podpress').'</option>'."\n";
  1593. echo ' </select>'."\n";
  1594. echo ' <div id="rss_imageWrapper" style="display: none;">'."\n";
  1595. echo ' <br/>';
  1596. echo ' <input id="rss_image" type="text" name="rss_image" value="'.$data['rss_image'].'" class="podpress_wide_text_field" size="40" onchange="javascript: podPress_updateCategoryCasting('.$main_wp_version.');"/>'."\n";
  1597. echo ' <input id="global_rss_image" type="hidden" value="'.get_option('rss_image').'"/>'."\n";
  1598. echo ' </div>'."\n";
  1599. echo ' <br/>';
  1600. echo ' <img id="rss_image_Display" style="width:144px; height:144px;" alt="Podcast Image - Small" src="" />'."\n";
  1601. echo ' </td>'."\n";
  1602. echo ' </tr>'."\n";
  1603. echo ' <tr>'."\n";
  1604. echo ' <th>';
  1605. echo ' <label for="rss_language">'.__('Language', 'podpress').'</label>'."\n";
  1606. echo ' </th>';
  1607. echo ' <td colspan="2">';
  1608. $langs = podPress_itunesLanguageArray();
  1609. echo ' <select id="rss_language" name="rss_language" onchange="javascript: podPress_updateCategoryCasting('.$main_wp_version.');">'."\n";
  1610. echo ' <optgroup label="'.__('Select Language', 'podpress').'">'."\n";
  1611. echo ' <option value="##Global##" '; if($data['rss_language'] == '##Global##' || empty($data['rss_language'])) { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').' - '.$langs[get_option('rss_language')].' ['.get_option('rss_language').']</option>'."\n";
  1612. podPress_itunesLanguageOptions($data['rss_language']);
  1613. echo ' </optgroup>'."\n";
  1614. echo ' </select>'."\n";
  1615. echo ' <input type="hidden" id="global_rss_language" value="'.$langs[get_option('rss_language')].'['.attribute_escape(get_option('rss_language')).']" /></td>'."\n";
  1616. echo ' </td>'."\n";
  1617. echo ' </tr>'."\n";
  1618. echo ' </table>'."\n";
  1619. echo ' <h3>'.__('Further Feed Settings', 'podpress').'</h3>'."\n";
  1620. echo ' <table class="podpress_feed_gensettings">'."\n";
  1621. echo ' <tr>'."\n";
  1622. echo ' <th>'."\n";
  1623. echo ' <label for="rss_copyrightChoice">'.__('Feed Copyright / license name', 'podpress').'</label>'."\n";
  1624. echo ' </th>';
  1625. echo ' <td colspan="2">';
  1626. echo ' <select id="rss_copyrightChoice" name="rss_copyrightChoice" onchange="javascript: podPress_updateCategoryCasting('.$main_wp_version.');">'."\n";
  1627. echo ' <option value="Global" '; if($data['rss_copyrightChoice'] != 'Custom') { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').' ('.podPress_stringLimiter(ucfirst(stripslashes($this->settings['rss_copyright'])), 40).')</option>'."\n";
  1628. echo ' <option value="Custom" '; if($data['rss_copyrightChoice'] == 'Custom') { echo 'selected="selected"'; } echo '>'.__('Insert custom value', 'podpress').'</option>'."\n";
  1629. echo ' </select>'."\n";
  1630. echo ' <div id="rss_copyrightWrapper" style="display: none;">'."\n";
  1631. echo ' <input type="text" name="rss_copyright" class="podpress_wide_text_field" size="40" id="rss_copyright" value="'.attribute_escape(stripslashes($data['rss_copyright'])).'" onchange="javascript: podPress_updateCategoryCasting('.$main_wp_version.');"/>';
  1632. echo ' </div>'."\n";
  1633. echo ' <input type="hidden" id="global_rss_copyright" value="'.attribute_escape(stripslashes($this->settings['rss_copyright'])).'" />'."\n";
  1634. echo ' <div id="rss_copyrightHelp">'."\n";
  1635. echo ' '.__('Enter the copyright string resp. the license name. For example: Copyright &#169 by Jon Doe, 2009 OR <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/" target="_blank">CreativeCommons Attribution-Noncommercial-Share Alike 2.5</a>', 'podpress')."\n";
  1636. echo ' <p>'."\n";
  1637. echo ' '.__('Used if this copyright phrase should be different than the global copyright phrase.', 'podpress')."\n";
  1638. echo ' </p>'."\n";
  1639. echo ' </div>'."\n";
  1640. echo ' </td>'."\n";
  1641. echo ' </tr>'."\n";
  1642. echo ' <tr>'."\n";
  1643. echo ' <th>'."\n";
  1644. echo ' <label for="rss_license_urlChoice">'.__('URL to the full Copyright / license text', 'podpress').'</label>'."\n";
  1645. echo ' </th>';
  1646. echo ' <td colspan="2">';
  1647. echo ' <select id="rss_license_urlChoice" name="rss_license_urlChoice" onchange="javascript: podPress_updateCategoryCasting('.$main_wp_version.');">'."\n";
  1648. echo ' <option value="Global" '; if($data['rss_license_urlChoice'] != 'Custom') { echo 'selected="selected"'; } echo '>'.__('Use Global', 'podpress').' ('.podPress_stringLimiter(ucfirst(stripslashes($this->settings['rss_license_url'])), 40).')</option>'."\n";
  1649. echo ' <option value="Custom" '; if($data['rss_license_urlChoice'] == 'Custom') { echo 'selected="selected"'; } echo '>'.__('Insert custom value', 'podpress').'</option>'."\n";
  1650. echo ' </select>'."\n";
  1651. echo ' <div id="rss_license_urlWrapper" style="display: none;">'."\n";
  1652. echo ' <input name="rss_license_url" type="text" id="rss_license_url" class="podpress_wide_text_field" value="'.attribute_escape($data['rss_license_url']).'" size="65%" />'."\n";
  1653. echo ' </div>'."\n";
  1654. echo ' <input type="hidden" id="global_rss_license_url" value="'.attribute_escape($this->settings['rss_license_url']).'" />'."\n";
  1655. echo ' <div id="rss_license_urlHelp">'."\n";
  1656. echo ' '.__('If you use a special license like a <a href="http://creativecommons.org/licenses" target="_blank" title="Creative Commons">Creative Commons</a> License for your news feeds then enter the complete URL (e.g. <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/" target="_blank">http://creativecommons.org/licenses/by-nc-sa/2.5/</a>) to the full text of this particular license here.', 'podpress')."\n";
  1657. echo ' <p>'.__('Used if this license URL should be different than the global license URL.', 'podpress').'</p>'."\n";
  1658. echo ' </div>'."\n";
  1659. echo ' </td>'."\n";
  1660. echo ' </tr>'."\n";
  1661. echo ' <tr>'."\n";
  1662. $filetypes = podPress_filetypes();
  1663. $selected_types = $data['FileTypes'];
  1664. if (FALSE === is_array($data['FileTypes'])) {
  1665. $selected_types = array();
  1666. }
  1667. echo ' <th>';
  1668. echo ' '.__('inlude only files of this(these) type(s)', 'podpress');
  1669. echo ' </th>'."\n";
  1670. echo ' <td>';
  1671. echo ' <select id="filenameextensionfilter" name="FileTypes[]" size="5" multiple="multiple" style="height:15em;">'."\n";
  1672. echo ' <optgroup label="'.attribute_escape(__('Select file types', 'podpress')).'">'."\n";
  1673. foreach ( $filetypes as $key => $value ) {
  1674. if ( TRUE == in_array($key, $selected_types) ) {
  1675. $selected = ' selected="selected"';
  1676. } else {
  1677. $selected = '';
  1678. }
  1679. if ($key !== 'audio_mp4') {
  1680. echo ' <option value="'.$key.'"'.$selected.'>'.$value.'</option>';
  1681. }
  1682. }
  1683. echo ' </optgroup>'."\n";
  1684. echo ' </select>'."\n";
  1685. echo ' </td>'."\n";
  1686. echo ' <td>';
  1687. echo ' '.__('You can select one or more media file types and limit by this choice the number of posts which will appear in the this Feed. For instance: if you select MP4 Video then this Feed will only contain posts (of this category) with MP4 files. If a post has also files of other types then only the files of the selected type will be attached in this feed. (This filter bypasses the "Included in:" selection.)', 'podpress').'</p><p>'.__('Hold the key [SHIFT] or [CTRL] and use the left mouse button to select more than one value.<br />Hold [CTRL] and use the left mouse button to deselect values.', 'podpress');
  1688. echo ' </td>'."\n";
  1689. echo ' </tr>'."\n";
  1690. echo ' <tr>'."\n";
  1691. echo ' <th>';
  1692. echo ' <label for="show_only_podPress_podcasts">'.__('Include only posts with podPress attachments in this Feed', 'podpress').'</label>'."\n";
  1693. echo ' </th>'."\n";
  1694. echo ' <td>';
  1695. if ( TRUE == isset($data['show_only_podPress_podcasts']) AND FALSE === $data['show_only_podPress_podcasts'] ) {
  1696. echo ' <input type="checkbox" name="show_only_podPress_podcasts" id="show_only_podPress_podcasts" value="yes" />'."\n";
  1697. } else {
  1698. echo ' <input type="checkbox" name="show_only_podPress_podcasts" id="show_only_podPress_podcasts" value="yes" checked="checked" />'."\n";
  1699. }
  1700. echo ' </td>'."\n";
  1701. echo ' <td>';
  1702. echo ' '.__('works only while the File Type Filter is not in use', 'podpress');
  1703. echo ' </td>'."\n";
  1704. echo ' </tr>'."\n";
  1705. echo ' </table>'."\n";
  1706. echo ' </fieldset>'."\n";
  1707. echo ' </div>'."\n";
  1708. echo '<script type="text/javascript">podPress_updateCategoryCasting('.$main_wp_version.'); </script>';
  1709. echo '</div>'."\n";
  1710. }
  1711. }
  1712. function edit_category($cat_ID) {
  1713. global $wp_version;
  1714. if(!isset($_POST['iTunesFeedID'])){
  1715. return;
  1716. }
  1717. $blog_charset = get_bloginfo('charset');
  1718. $data = array();
  1719. if($_POST['categoryCasting'] == 'on') {
  1720. $data['categoryCasting'] = 'true';
  1721. } else {
  1722. $data['categoryCasting'] = 'false';
  1723. }
  1724. $data['podcastFeedURL'] = clean_url($_POST['podcastFeedURL'], array('http', 'https'), 'db');
  1725. $data['iTunesFeedID'] = intval(preg_replace('/[^0-9]/', '', $_POST['iTunesFeedID']));
  1726. $data['iTunesNewFeedURL'] = $_POST['iTunesNewFeedURL'];
  1727. $data['blognameChoice'] = $_POST['blognameChoice'];
  1728. //~ // Attention: $data['blogname'] is here the name of the category
  1729. //~ if ( TRUE == version_compare($wp_version, '3.0', '<') ) {
  1730. //~ $data['blogname'] = htmlspecialchars(strip_tags(trim($_POST['cat_name'])), ENT_QUOTES, $blog_charset);
  1731. //~ } else {
  1732. //~ $data['blogname'] = htmlspecialchars(strip_tags(trim($_POST['name'])), ENT_QUOTES, $blog_charset);
  1733. //~ }
  1734. $data['blogdescriptionChoice'] = $_POST['blogdescriptionChoice'];
  1735. $data['iTunesSubtitleChoice'] = $_POST['iTunesSubtitleChoice'];
  1736. $data['iTunesSubtitle'] = htmlspecialchars(strip_tags(trim($_POST['iTunesSubtitle'])), ENT_QUOTES, $blog_charset);
  1737. $data['iTunesSummaryChoice'] = $_POST['iTunesSummaryChoice'];
  1738. $data['iTunesSummary'] = htmlspecialchars(strip_tags(trim($_POST['iTunesSummary'])), ENT_QUOTES, $blog_charset);
  1739. $data['iTunesKeywordsChoice'] = $_POST['iTunesKeywordsChoice'];
  1740. $data['iTunesKeywords'] = $this->cleanup_itunes_keywords($_POST['iTunesKeywords'], $blog_charset);
  1741. $data['iTunesAuthorChoice'] = $_POST['iTunesAuthorChoice'];
  1742. $data['iTunesAuthor'] = htmlspecialchars(strip_tags(trim($_POST['iTunesAuthor'])), ENT_QUOTES, $blog_charset);
  1743. $data['iTunesAuthorEmailChoice'] = $_POST['iTunesAuthorEmailChoice'];
  1744. $data['iTunesAuthorEmail'] = htmlspecialchars(strip_tags(trim($_POST['iTunesAuthorEmail'])), ENT_QUOTES, $blog_charset);
  1745. $data['rss_language'] = htmlspecialchars(strip_tags(trim($_POST['rss_language'])), ENT_QUOTES, $blog_charset);
  1746. $data['iTunesExplicit'] = $_POST['iTunesExplicit'];
  1747. $data['iTunesBlock'] = $_POST['iTunesBlock'];
  1748. $data['iTunesImageChoice'] = $_POST['iTunesImageChoice'];
  1749. $data['iTunesImage'] = clean_url($_POST['iTunesImage'], array('http', 'https'), 'db');
  1750. $data['rss_imageChoice'] = $_POST['rss_imageChoice'];
  1751. $data['rss_image'] = clean_url($_POST['rss_image'], array('http', 'https'), 'db');
  1752. $data['rss_copyrightChoice'] = $_POST['rss_copyrightChoice'];
  1753. $data['rss_copyright'] = htmlspecialchars(strip_tags(trim($_POST['rss_copyright'])), ENT_QUOTES, $blog_charset);
  1754. $data['rss_license_url'] = clean_url($_POST['rss_license_url'], array('http', 'https'), 'db');
  1755. $data['rss_license_urlChoice'] = $_POST['rss_license_urlChoice'];
  1756. $data['iTunesCategory'] = $_POST['iTunesCategory'];
  1757. $data['FileTypes'] = $_POST['FileTypes'];
  1758. if ( isset($_POST['show_only_podPress_podcasts']) ) {
  1759. $data['show_only_podPress_podcasts'] = TRUE;
  1760. } else {
  1761. $data['show_only_podPress_podcasts'] = FALSE;
  1762. }
  1763. delete_option('podPress_category_'.$cat_ID);
  1764. podPress_add_option('podPress_category_'.$cat_ID, $data);
  1765. }
  1766. //~ function delete_category($cat_ID) {
  1767. //~ //echo 'told to delete';
  1768. //~ //delete_option('podPress_category_'.$cat_ID);
  1769. //~ }
  1770. }
  1771. ?>