/** * Show the details of the current setup in the Sidebar. */ function cpm_show_comicpress_details() { global $cpm_config, $wpmu_version; $all_comic_dates_ok = true; $all_comic_dates = array(); foreach ($cpm_config->comic_files as $comic_file) { if (($result = cpm_breakdown_comic_filename(pathinfo($comic_file, PATHINFO_BASENAME))) !== false) { if (isset($all_comic_dates[$result['date']])) { $all_comic_dates_ok = false; break; } $all_comic_dates[$result['date']] = true; } } $subdir_path = ''; if (($subdir = cpm_get_subcomic_directory()) !== false) { $subdir_path .= '/' . $subdir; } ?> <!-- ComicPress details --> <div id="comicpress-details"> <h2 style="padding-right: 0"><?php _e('ComicPress Details', 'comicpress-manager'); ?> </h2> <ul style="padding-left: 30px; margin: 0"> <li><strong><?php _e("Configuration method:", 'comicpress-manager'); ?> </strong> <?php if ($cpm_config->config_method == "comicpress-config.php") { ?> <a href="?page=<?php echo plugin_basename(__FILE__); ?> -config"><?php echo $cpm_config->config_method; ?> </a> <?php if ($cpm_config->can_write_config) { ?> <?php _e('(click to edit)', 'comicpress-manager'); ?> <?php } else { ?> <?php _e('(click to edit, cannot update automatically)', 'comicpress-manager'); ?> <?php } ?> <?php } else { ?> <?php echo $cpm_config->config_method; ?> <?php } ?> </li> <li><strong><?php _e('Comics folder:', 'comicpress-manager'); ?> </strong> <?php echo $cpm_config->properties['comic_folder'] . $subdir_path; ?> <br /> <?php $too_many_comics_message = ""; if (!$all_comic_dates_ok) { ob_start(); ?> , <a href="?page=<?php echo plugin_basename(__FILE__); ?> -status"><em><?php _e("multiple files on the same date!", 'comicpress-manager'); ?> </em></a> <?php $too_many_comics_message = trim(ob_get_clean()); } ?> <?php printf(_n('(%d comic in folder%s)', '(%d comics in folder%s)', count($cpm_config->comic_files), 'comicpress-manager'), count($cpm_config->comic_files), $too_many_comics_message); ?> </li> <?php foreach (array('archive' => __('Archive folder:', 'comicpress-manager'), 'rss' => __('RSS feed folder:', 'comicpress-manager'), 'mini' => __('Minithumb folder:', 'comicpress-manager')) as $type => $title) { $realpath = realpath(CPM_DOCUMENT_ROOT . '/' . $cpm_config->properties["{$type}_comic_folder"] . $subdir_path); ?> <li><strong><?php echo $title; ?> </strong> <?php echo $cpm_config->properties["{$type}_comic_folder"] . $subdir_path; ?> <?php if ($cpm_config->get_scale_method() != CPM_SCALE_NONE && cpm_option("cpm-{$type}-generate-thumbnails") == 1 && $cpm_config->separate_thumbs_folder_defined[$type] && $cpm_config->thumbs_folder_writable[$type]) { ?> (<em><?php _e('generating', 'comicpress-manager'); ?> </em>) <?php } else { $reasons = array(); if ($cpm_config->get_scale_method() == CPM_SCALE_NONE) { $reasons[] = __("No scaling software", 'comicpress-manager'); } if (cpm_option("cpm-{$type}-generate-thumbnails") == 0) { $reasons[] = __("Generation disabled", 'comicpress-manager'); } if (!$cpm_config->separate_thumbs_folder_defined[$type]) { $reasons[] = __("Same as comics folder", 'comicpress-manager'); } if (!$cpm_config->thumbs_folder_writable[$type]) { $reasons[] = __("Not writable", 'comicpress-manager'); } ?> (<em style="cursor: help; text-decoration: underline" title="<?php echo implode(", ", $reasons); ?> ">not generating</em>) <?php } ?> <?php if ($realpath !== false) { printf(__("(<em>%d files in folder</em>)", 'comicpress-manager'), count(glob($realpath . "/*"))); } else { _e('(<em>folder not found</em>)', 'comicpress-manager'); } ?> </li> <?php } ?> <li><strong> <?php if (is_array($cpm_config->properties['comiccat']) && count($cpm_config->properties['comiccat']) != 1) { _e("Comic categories:", 'comicpress-manager'); } else { _e("Comic category:", 'comicpress-manager'); } ?> </strong> <?php if (is_array($cpm_config->properties['comiccat'])) { ?> <ul> <?php foreach ($cpm_config->properties['comiccat'] as $cat_id) { ?> <li><a href="<?php echo get_category_link($cat_id); ?> "><?php echo get_cat_name($cat_id); ?> </a> <?php printf(__('(ID %s)', 'comicpress-manager'), $cat_id); ?> </li> <?php } ?> </ul> <?php } else { ?> <a href="<?php echo get_category_link($cpm_config->properties['comiccat']); ?> "><?php echo $cpm_config->comic_category_info['name']; ?> </a> <?php printf(__('(ID %s)', 'comicpress-manager'), $cpm_config->properties['comiccat']); ?> <?php } ?> </li> <li><strong><?php _e('Blog category:', 'comicpress-manager'); ?> </strong> <a href="<?php echo get_category_link($cpm_config->properties['blogcat']); ?> "> <?php echo $cpm_config->blog_category_info['name']; ?> </a> <?php printf(__('(ID %s)', 'comicpress-manager'), $cpm_config->properties['blogcat']); ?> </li> <?php if (!$wpmu_version) { ?> <li><strong><?php _e("PHP Version:", 'comicpress-manager'); ?> </strong> <?php echo phpversion(); ?> <?php if (substr(phpversion(), 0, 3) < 5.2) { ?> (<a href="http://gophp5.org/hosts"><?php _e("upgrade strongly recommended", 'comicpress-manager'); ?> </a>) <?php } ?> </li> <li> <strong><?php _e('Theme folder:', 'comicpress-manager'); ?> </strong> <?php $theme_info = get_theme(get_current_theme()); if (!empty($theme_info['Template'])) { echo $theme_info['Template']; } else { echo __("<em>Something's misconfigured with your theme...</em>", 'comicpress-manager'); } ?> </li> <?php if (count($cpm_config->detailed_warnings) != 0) { ?> <li> <strong><?php _e('Additional, non-fatal warnings:', 'comicpress-manager'); ?> </strong> <ul> <?php foreach ($cpm_config->detailed_warnings as $warning) { ?> <li><?php echo $warning; ?> </li> <?php } ?> </ul> </li> <?php } ?> <li> <strong><a href="#" onclick="Element.show('debug-info'); $('cpm-right-column').style.minHeight = $('cpm-left-column').offsetHeight + 'px'; return false"><?php _e('Show debug info', 'comicpress-manager'); ?> </a></strong> (<em><?php _e("this data is sanitized to protect your server's configuration", 'comicpress-manager'); ?> </em>) <?php echo cpm_show_debug_info(); ?> </li> <?php } ?> </ul> </div> <?php }
/** * The main manager screen. */ function cpm_manager_index() { global $cpm_config; if (cpm_get_subcomic_directory() !== false) { $cpm_config->messages[] = sprintf(__("<strong>Reminder:</strong> You are managing the <strong>%s</strong> comic subdirectory.", 'comicpress-manager'), get_cat_name(get_option('comicpress-manager-manage-subcomic'))); } $cpm_config->need_calendars = true; $example_date = cpm_generate_example_date(CPM_DATE_FORMAT); $example_real_date = date(CPM_DATE_FORMAT); $zip_extension_loaded = extension_loaded('zip'); if (cpm_option('cpm-skip-checks') != 1) { if (!function_exists('get_comic_path')) { $cpm_config->warnings[] = __('<strong>It looks like you\'re running an older version of ComicPress.</strong> Storyline, hovertext, and transcript are fully supported in <a href="http://comicpress.org/">ComicPress 2.7</a>. You can use hovertext and transcripts in earlier themes by using <tt>get_post_meta($post->ID, "hovertext", true)</tt> and <tt>get_post_meta($post->ID, "transcript", true)</tt>.', 'comicpress-manager'); } } if (count($_POST) == 0 && isset($_GET['upload'])) { $cpm_config->warnings[] = sprintf(__("Your uploaded files were larger than the <strong><tt>post_max_size</tt></strong> setting, which is currently <strong><tt>%s</tt></strong>. Either upload fewer/smaller files, upload them via FTP/SFTP, or increase your server's <strong><tt>post_max_size</tt></strong>.", 'comicpress-manager'), ini_get('post_max_size')); } ob_start(); ?> <p> <strong> <?php _e("ComicPress Manager manages your comics and your time.", 'comicpress-manager'); ?> </strong> <?php _e("It makes uploading new comics, importing comics from a non-ComicPress setup, and batch uploading a lot of comics at once, very fast and configurable.", 'comicpress-manager'); ?> </p> <p> <strong> <?php _e("ComicPress Manager also manages yours and your Website's sanity.", 'comicpress-manager'); ?> </strong> <?php printf(__("It can check for misconfigured ComicPress setups, for incorrectly-named files (remember, it's <em>%s-single-comic-title.ext</em>) and for when you might be duplicating a post. You will also be shown which comic will appear with which blog post in the Post editor.", 'comicpress-manager'), $example_date); ?> </p> <p> <?php printf(__("<strong>Single comic titles</strong> are generated from the incoming filename. If you've named your file <strong>%s-my-new-years-day.jpg</strong> and create a new post for the file, the post title will be <strong>My New Years Day</strong>. This default should handle the majority of cases. If a comic file does not have a title, the date in <strong>MM/DD/YYYY</strong> format will be used.", 'comicpress-manager'), $example_real_date); ?> </p> <p> <?php _e("<strong>Upload image files</strong> lets you upload multiple comics at a time, and add a default post body for each comic.", 'comicpress-manager'); ?> <?php if ($zip_extension_loaded) { ?> <?php _e("You can <strong>upload a Zip file and create new posts</strong> from the files contained within the Zip file.", 'comicpress-manager'); ?> <?php } else { ?> <?php _e("<strong>You can't upload a Zip file</strong> because you do not have the PHP <strong>zip</strong> extension installed.", 'comicpress-manager'); ?> <?php } ?> </p> <p> <?php _e("Has ComicPress Manager saved you time and sanity? <strong>Donate a few bucks to show your appreciation!</strong>", 'comicpress-manager'); ?> <span style="display: block; text-align: center"> <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7----- "> <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif" border="0" name="submit" alt=""> <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"> </form> </span> </p> <?php $help_content = ob_get_clean(); ob_start(); ?> <h2 style="padding-right:0;"> <?php if ($zip_extension_loaded) { _e("Upload Image & Zip Files", 'comicpress-manager'); } else { _e("Upload Image Files", 'comicpress-manager'); } ?> </h2> <h3>— <?php if (cpm_option('cpm-obfuscate-filenames-on-upload') === "none") { ?> <?php _e("any existing files with the same name will be overwritten", 'comicpress-manager'); ?> <?php } else { ?> <?php _e("uploaded filenames will be obfuscated, therefore no old files will be overwritten after uploading", 'comicpress-manager'); ?> <?php } ?> </h3> <?php $target_url = add_query_arg("upload", "1"); ?> <form onsubmit="$('submit').disabled=true" action="<?php echo $target_url; ?> " method="post" enctype="multipart/form-data"> <input type="hidden" name="action" value="multiple-upload-file" /> <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo cpm_short_size_string_to_bytes(ini_get('upload_max_filesize')); ?> " /> <div id="multiple-file-upload"> </div> <div style="text-align: center"> [<a href="#" onclick="add_file_upload(); return false"><?php _e("Add file to upload", 'comicpress-manager'); ?> </a>] </div> <table class="form-table"> <tr> <th scope="row"><?php _e("Destination for uploaded files:", 'comicpress-manager'); ?> </th> <td> <select name="upload-destination" id="upload-destination"> <option value="comic"><?php _e("Comics folder", 'comicpress-manager'); ?> </option> <option value="archive_comic"><?php _e("Archive folder", 'comicpress-manager'); ?> </option> <option value="rss_comic"><?php _e("RSS feed folder", 'comicpress-manager'); ?> </option> </select> </td> </tr> <?php if (count($cpm_config->comic_files) > 0) { ?> <tr id="overwrite-existing-holder"> <th scope="row"><?php _e("Overwrite an existing file:", 'comicpress-manager'); ?> </th> <td> <select name="overwrite-existing-file-choice" id="overwrite-existing-file-choice"> <option value=""><?php _e("-- no --", 'comicpress-manager'); ?> </option> <?php foreach ($cpm_config->comic_files as $file) { $basename = pathinfo($file, PATHINFO_BASENAME); ?> <option value="<?php echo $basename; ?> " <?php echo $_GET['replace'] == $basename ? "selected" : ""; ?> ><?php echo $basename; ?> </option> <?php } ?> </select> </td> </tr> <tr id="rebuild-thumbnails"> <th scope="row"><?php _e("Rebuild thumbnails?", 'comicpress-manager'); ?> </th> <td> <label> <input type="checkbox" id="replace-comic-rebuild-thumbnails" name="replace-comic-rebuild-thumbnails" value="yes" checked /> <em>(if replacing a comic in the <strong>comic</strong> folder, you can also regenerate thumbnails)</em> </label> </td> </tr> <?php } ?> <tr> <td align="center" colspan="2"> <input class="button" id="submit" type="submit" value="<?php if (extension_loaded("zip")) { _e("Upload Image & Zip Files", 'comicpress-manager'); } else { _e("Upload Image Files", 'comicpress-manager'); } ?> " /> </td> </tr> </table> <div id="upload-destination-holder"> <table class="form-table"> <tr> <th scope="row"><?php _e("Generate new posts for each uploaded file:", 'comicpress-manager'); ?> </th> <td> <input id="multiple-new-post-checkbox" type="checkbox" name="new_post" value="yes" checked /> <label for="multiple-new-post-checkbox"><em>(if you only want to upload a series of files to replace others, leave this unchecked)</em></label> </td> </tr> </table> <div id="multiple-new-post-holder"> <table class="form-table" id="specify-date-holder"> <tr> <th scope="row"><?php _e("Date for uploaded file:", 'comicpress-manager'); ?> </th> <td> <div class="curtime"><input type="text" id="override-date" name="override-date" /> <?php _e("<em>(click to open calendar. for single file uploads only. can accept any date format parseable by <a href=\"http://us.php.net/strtotime\" target=\"php\">strtotime()</a>)</em>", 'comicpress-manager'); ?> </div> </td> </tr> </table> <?php cpm_post_editor(420); ?> <table class="form-table"> <tr> <td align="center"> <input class="button" id="top-submit" type="submit" value="<?php if (extension_loaded("zip")) { _e("Upload Image & Zip Files", 'comicpress-manager'); } else { _e("Upload Image Files", 'comicpress-manager'); } ?> " /> </td> </tr> </table> </div> </div> </form> <script type="text/javascript"> Calendar.setup({ inputField: "override-date", ifFormat: "%Y-%m-%d", button: "override-date" }); </script> <?php $activity_content = ob_get_clean(); cpm_wrap_content($help_content, $activity_content); }
/** * Show the comic in the Post editor. */ function cpm_show_comic() { global $post, $cpm_config; $form_target = plugin_basename(realpath(dirname(__FILE__) . "/../comicpress_manager_admin.php")); read_current_theme_comicpress_config(); $has_comic_file = false; $in_comics_category = false; $thumbnails_to_generate = cpm_get_thumbnails_to_generate(); $post_categories = array(); $comic_categories = array(); extract(cpm_normalize_storyline_structure()); foreach ($category_tree as $node) { $comic_categories[] = end(explode("/", $node)); } if ($post->ID !== 0) { $post_time = time(); foreach (array('post_date', 'post_modified', 'post_date_gmt', 'post_modified_gmt') as $time_value) { if (($result = strtotime($post->{$time_value})) !== false) { $post_time = $result; break; } } $post_categories = wp_get_post_categories($post->ID); if (isset($cpm_config->properties['comiccat'])) { $in_comics_category = count(array_intersect($comic_categories, $post_categories)) > 0; } $ok = true; if (cpm_get_subcomic_directory() !== false) { $ok = in_array(get_option('comicpress-manager-manage-subcomic'), wp_get_post_categories($post->ID)); } if ($ok) { if (($comic = find_comic_by_date($post_time)) !== false) { $comic_uri = cpm_build_comic_uri($comic); $comic_filename = preg_replace('#^.*/([^\\/]*)$#', '\\1', $comic_uri); $link = "<strong><a target=\"comic_window\" href=\"{$comic_uri}\">{$comic_filename}</a></strong>"; $date_root = substr($comic_filename, 0, strlen(date(CPM_DATE_FORMAT))); $thumbnails_found = cpm_find_thumbnails_by_filename($comic); $icon_file_to_use = $comic; foreach (array('rss', 'archive') as $type) { if (isset($thumbnails_found[$type])) { $icon_file_to_use = $thumbnails_found[$type]; } } $icon_uri = cpm_build_comic_uri($icon_file_to_use); $has_comic_file = true; } } } ?> <script type="text/javascript"> function show_comic() { if ($('comic-icon').offsetWidth > $('comic-icon').offsetHeight) { $('preview-comic').width = 400; } else { $('preview-comic').height = 400; } Element.clonePosition('comic-hover', 'comic-icon', { setWidth: false, setHeight: false, offsetTop: -((Element.getDimensions('comic-hover')['height'] - Element.getDimensions('comic-icon')['height'])/2) }); $('comic-hover').show(); } function hide_comic() { $('comic-hover').hide(); } var all_comic_categories = [ <?php echo implode(",", $comic_categories); ?> ]; var storyline_enabled = <?php echo get_option('comicpress-enable-storyline-support') == 1 ? 'true' : 'false'; ?> ; Event.observe(window, 'load', function() { $('post').encoding = "multipart/form-data"; }); </script> <?php if (count($cpm_config->comic_files) == 0) { ?> <div style="border: solid #daa 1px; background-color: #ffe7e7; padding: 5px"> <strong>It looks like this is a new ComicPress install.</strong> You should test to make sure uploading works correctly by visiting <a href="admin.php?page=<?php echo plugin_basename(realpath(dirname(__FILE__) . '/../comicpress_manager_admin.php')); ?> ">ComicPress -> Upload</a>. </div> <?php } ?> <?php if ($has_comic_file) { ?> <div id="comic-hover" style="border: solid black 1px; position: absolute; display: none" onmouseout="hide_comic()"> <img id="preview-comic" src="<?php echo $comic_uri; ?> " /> </div> <a href="#" onclick="return false" onmouseover="show_comic()"><img id="comic-icon" src="<?php echo $icon_uri; ?> " height="100" align="right" /></a> <p> <?php printf(__("The comic that will be shown with this post is %s.", 'comicpress-manager'), $link); ?> <?php _e("Mouse over the icon to the right to see a larger version of the image.", 'comicpress-manager'); ?> </p> <?php if (cpm_get_subcomic_directory() !== false) { printf(__("Comic files will be uploaded to the <strong>%s</strong> comic subdirectory.", 'comicpress-manager'), get_cat_name(get_option('comicpress-manager-manage-subcomic'))); } ?> <?php if (count($thumbnails_found) > 0) { ?> <p><?php _e("The following thumbnails for this comic were also found:", 'comicpress-manager'); ?> <?php foreach ($thumbnails_found as $type => $file) { ?> <a target="comic_window" href="<?php echo cpm_build_comic_uri(CPM_DOCUMENT_ROOT . '/' . $file); ?> "><?php echo $type; ?> </a> <?php } ?> </p> <?php } ?> <?php } ?> <?php if (cpm_option("cpm-edit-post-integrate") == 1) { ?> <p><em><strong>ComicPress Manager Edit Post file management is enabled.</strong></em> Any changes to post date, or deleting this post, will affect any associated comic files.</p> <?php } ?> <p><strong>NOTE: Upload errors will not be reported.</strong> If you are having trouble uploading files, use the <a href="admin.php?page=<?php echo plugin_basename(realpath(dirname(__FILE__) . '/../comicpress_manager_admin.php')); ?> ">ComicPress -> Upload</a> screen.</p> <table class="form-table"> <tr> <th scope="row"> <?php if ($has_comic_file) { ?> <?php _e("Replace This Image", 'comicpress-manager'); ?> <?php } else { ?> <?php _e("Upload a New Single Image", 'comicpress-manager'); ?> <?php } ?> </th> <td> <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo cpm_short_size_string_to_bytes(ini_get('upload_max_filesize')); ?> " /> <input type="file" id="comicpress-replace-image" name="comicpress-replace-image" class="button" /> <?php echo empty($thumbnails_to_generate) ? "" : __("<em>(thumbnails will be generated)</em>", 'comicpress-manager'); ?> <br /> <?php if ($has_comic_file) { ?> <input type="hidden" name="overwrite-existing-file-choice" value="<?php echo $comic_filename; ?> " /> <?php } ?> <input type="hidden" name="upload-destination" value="comic" /> <input type="hidden" name="thumbnails" value="yes" /> </td> <script type="text/javascript"> var handle_click = function() { var any_checked = false $$('input[name="post_category[]"]').each(function(i) { if (i.type == "radio") { if (i.checked) { any_checked = true; } } }); if (!any_checked) { var has_checked = false; $$('input[name="post_category[]"]').each(function(i) { if (!has_checked) { if (i.type == "radio") { i.checked = true; has_checked = true; } } }); } }; [ 'click', 'blur' ].each(function(w) { $('comicpress-replace-image').observe(w, handle_click); }); </script> </tr> <?php if (cpm_option('cpm-skip-checks') != 1) { if (!function_exists('get_comic_path')) { ?> <tr> <td colspan="2" style="background-color: #fee; border: solid #daa 1px"> <?php _e('<strong>It looks like you\'re running an older version of ComicPress.</strong> Storyline, hovertext, and transcript are fully supported in <a href="http://comicpress.org/">ComicPress 2.7</a>. You can use hovertext and transcripts in earlier themes by using <tt>get_post_meta($post->ID, "hovertext", true)</tt> and <tt>get_post_meta($post->ID, "transcript", true)</tt>.', 'comicpress-manager'); ?> </td> </tr> <?php } } ?> <?php if (get_option('comicpress-enable-storyline-support') == 1) { ?> <tr> <th scope="row"> <?php if (count($category_tree) > 1) { _e("Storyline", 'comicpress-manager'); } else { _e("Category", 'comicpress-manager'); } ?> </th> <td> <?php cpm_display_storyline_checkboxes($category_tree, $post_categories, null, "post_category"); ?> </td> </tr> <?php } ?> <tr> <th scope="row"><?php _e('<img title>/hover text', 'comicpress-manager'); ?> </th> <td><input type="text" name="comicpress-img-title" style="width:99%" value="<?php echo get_post_meta($post->ID, 'hovertext', true); ?> " /></td> </tr> <tr> <th scope="row"><?php _e("Transcript", 'comicpress-manager'); ?> </th> <td> <textarea name="comicpress-transcript" rows="8" style="width:99%"><?php echo get_post_meta($post->ID, 'transcript', true); ?> </textarea> <?php if (!is_plugin_active('what-did-they-say/what-did-they-say.php')) { ?> <p> <?php _e('Want even better control over your transcripts? Try <a href="http://wordpress.org/extend/plugins/what-did-they-say/" target="wdts">What Did They Say?!?</a>', 'comicpress-manager'); ?> </p> <?php } ?> </td> </tr> </table> <?php }
/** * The generate thumbnails dialog. */ function cpm_manager_thumbnails() { global $cpm_config; $help_content = __("<p><strong>Generate thumbnails</strong> lets you regenerate thumbnails for comic files. This is useful if an import is not functioning because it is taking too long, or if you've changed your size or quality settings for thumbnails.</p>", 'comicpress-manager'); ob_start(); ?> <h2 style="padding-right:0;"><?php _e("Generate Thumbnails", 'comicpress-manager'); ?> </h2> <?php $ok_to_generate_thumbs = false; $is_generating = array(); if ($cpm_config->get_scale_method() != CPM_SCALE_NONE) { foreach ($cpm_config->thumbs_folder_writable as $type => $value) { if ($value) { if ($cpm_config->separate_thumbs_folder_defined[$type] !== false) { if (cpm_option("cpm-{$type}-generate-thumbnails") == 1) { $ok_to_generate_thumbs = true; $is_generating[] = sprintf(__('<strong>%1$s thumbnails</strong> that are <strong>%2$s</strong> pixels wide', 'comicpress-manager'), $type, $cpm_config->properties["{$type}_comic_width"]); } } } } } if ($ok_to_generate_thumbs) { if (count($cpm_config->comic_files) > 0) { ?> <form onsubmit="$('submit').disabled=true" action="" method="post"> <input type="hidden" name="action" value="generate-thumbnails" /> <p><?php printf(__("You'll be generating %s.", 'comicpress-manager'), implode(__(" and ", 'comicpress-manager'), $is_generating)); ?> </p> <?php _e("Thumbnails to regenerate (<em>to select multiple comics, [Ctrl]-click on Windows & Linux, [Command]-click on Mac OS X</em>):", 'comicpress-manager'); ?> <br /> <select style="height: auto; width: 445px" id="select-comics-dropdown" name="comics[]" size="<?php echo min(count($cpm_config->comic_files), 30); ?> " multiple> <?php foreach ($cpm_config->comic_files as $file) { $filename = pathinfo($file, PATHINFO_BASENAME); $any_thumbs = false; foreach (array('rss', 'archive') as $type) { $thumb_file = str_replace($cpm_config->properties['comic_folder'], $cpm_config->properties["{$type}_comic_folder"], $file); if (file_exists($thumb_file)) { $any_thumbs = true; break; } } ?> <option value="<?php echo $filename; ?> "><?php echo $filename . ($any_thumbs ? " (*)" : ""); ?> </option> <?php } ?> </select> <div style="text-align: center"> <input class="button" type="submit" id="submit" value="<?php _e("Generate Thumbnails for Selected Comics", 'comicpress-manager'); ?> " /> </div> </form> <?php } else { ?> <p><?php _e("You haven't uploaded any comics yet.", 'comicpress-manager'); ?> </p> <?php } } else { ?> <p> <?php _e("<strong>You either aren't able to generate any thumbnails for your comics, or you have disabled thumbnail generation.</strong> This may be caused by a configuration error. Have you set up your RSS and archive directories and <a href=\"?page=" . plugin_basename(realpath(dirname(__FILE__) . '/../comicpress_manager_admin.php')) . "-config\">configured your ComicPress theme to use them</a>? Do you have either the GD library or Imagemagick installed?", 'comicpress-manager'); ?> </p> <?php } ?> <?php $activity_content = ob_get_clean(); cpm_wrap_content($help_content, $activity_content); }
/** * The config editor dialog. */ function cpm_manager_cpm_config() { global $cpm_config, $wpmu_version; include realpath(dirname(__FILE__)) . '/../cpm_configuration_options.php'; $is_table = false; ob_start(); ?> <h2 style="padding-right:0;"><?php _e("Edit ComicPress Manager Config", 'comicpress-manager'); ?> </h2> <form action="" method="post" id="config-editor"> <input type="hidden" name="action" value="update-cpm-config" /> <?php foreach ($configuration_options as $option) { $ok = true; if ($wpmu_version) { $ok = !isset($option['strip-wpmu']); } if ($option['type'] == "categories") { $ok = count($category_checkboxes = cpm_generate_additional_categories_checkboxes($option['id'], explode(",", $result))) > 0; } if ($ok) { ?> <?php if (is_string($option)) { ?> <?php if ($is_table) { ?> </table></div> <?php $is_table = false; } ?> <h3><?php echo $option; ?> </h3> <?php } else { if (!$is_table) { ?> <div style="overflow: hidden"><table class="form-table"> <?php $is_table = true; } ?> <tr> <th scope="row"><?php echo $option['name']; ?> </th> <td> <?php $result = cpm_option($option['id']); switch ($option['type']) { case "checkbox": $ok = true; if (isset($option['imagemagick-only'])) { $ok = $cpm_config->get_scale_method() == CPM_SCALE_IMAGEMAGICK; } if ($ok) { ?> <input type="checkbox" id="<?php echo $option['id']; ?> " name="<?php echo $option['id']; ?> " value="yes" <?php echo $result == 1 ? " checked" : ""; ?> /> <?php } break; case "text": ?> <input type="text" size="<?php echo isset($option['size']) ? $option['size'] : 10; ?> " name="<?php echo $option['id']; ?> " value="<?php echo $result; ?> " /> <?php break; case "textarea": ?> <textarea name="<?php echo $option['id']; ?> " rows="4" cols="30"><?php echo $result; ?> </textarea> <?php break; case "dropdown": $dropdown_parts = array(); foreach (explode("|", $option['options']) as $dropdown_option) { $parts = explode(":", $dropdown_option); $key = array_shift($parts); $dropdown_parts[$key] = implode(":", $parts); } ?> <select name="<?php echo $option['id']; ?> "> <?php foreach ($dropdown_parts as $key => $value) { ?> <option value="<?php echo $key; ?> " <?php echo $result == $key ? " selected" : ""; ?> ><?php echo $value; ?> </option> <?php } ?> </select> <?php break; case "categories": echo implode("\n", $category_checkboxes); break; } ?> <em><label for="<?php echo $option['id']; ?> ">(<?php echo $option['message']; ?> )<label></em> </td> </tr> <?php } ?> <?php } ?> <?php } ?> <tr> <td colspan="2" align="center"> <input class="button" type="submit" value="Change Configuration" /> </td> </tr> </table></div> </form> <div id="first-run-holder"> <p><strong>Re-run the "First Run" action? This will attempt to create the default comic folders on your site.</strong></p> <form action="<?php echo $target_page; ?> " method="post"> <input type="hidden" name="action" value="do-first-run" /> <input class="button" type="submit" value="Yes, try and make my comic directories" /> </form> </div> <?php $activity_content = ob_get_clean(); cpm_wrap_content(null, $activity_content); }
/** * Write Comic Post is the QuomicPress panel on the Dashboard.. */ function cpm_manager_write_comic($form_target, $show_header = true) { global $cpm_config; $ok_to_generate_thumbs = false; $thumbnails_to_generate = array(); $cpm_config->need_calendars = true; $thumbnails_to_generate = cpm_get_thumbnails_to_generate(); $go_live_time_string = cpm_option('cpm-default-post-time') == "now" ? __("<strong>now</strong>", 'comicpress-manager') : sprintf(__("at <strong>%s</strong>", 'comicpress-manager'), cpm_option('cpm-default-post-time')); cpm_write_global_styles_scripts(); ?> <div class="wrap"> <?php cpm_handle_warnings(); ?> <?php if (count($cpm_config->errors) == 0) { ?> <?php if ($show_header) { ?> <h2><?php _e("Write Comic Post", 'comicpress-manager'); ?> </h2> <?php } ?> <?php if (count($cpm_config->comic_files) == 0 && cpm_get_subcomic_directory() === false) { ?> <div style="border: solid #daa 1px; background-color: #ffe7e7; padding: 5px"> <strong>It looks like this is a new ComicPress install.</strong> You should test to make sure uploading works correctly by visiting <a href="admin.php?page=<?php echo plugin_basename(realpath(dirname(__FILE__) . '/../comicpress_manager_admin.php')); ?> ">ComicPress -> Upload</a>. </div> <?php } ?> <p> <?php printf(__("<strong>Upload a single comic file</strong> and immediately start editing the associated published post. Your post will be going live %s on the provided date and will be posted in the <strong>%s</strong> category.", 'comicpress-manager'), $go_live_time_string, generate_comic_categories_options('category')); ?> <?php if (cpm_get_subcomic_directory() !== false) { printf(__("Comic files will be uploaded to the <strong>%s</strong> comic subdirectory.", 'comicpress-manager'), get_cat_name(get_option('comicpress-manager-manage-subcomic'))); } ?> <?php if (!empty($thumbnails_to_generate)) { $thumbnail_strings = array(); foreach ($thumbnails_to_generate as $type) { $thumbnail_strings[] = sprintf(__("<strong>%s</strong> thumbnails that are <strong>%spx</strong> wide", 'comicpress-manager'), $type, $cpm_config->properties["{$type}_comic_width"]); } ?> <?php printf(__("You'll be generating: %s.", 'comicpress-manager'), implode(", ", $thumbnail_strings)); ?> <?php } ?> </p> <form action="?page=<?php echo $form_target; ?> " method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo cpm_short_size_string_to_bytes(ini_get('upload_max_filesize')); ?> " /> <input type="hidden" name="action" value="write-comic-post" /> <input type="hidden" name="upload-destination" value="comic" /> <input type="hidden" name="thumbnails" value="yes" /> <input type="hidden" name="new_post" value="yes" /> <?php echo generate_comic_categories_options('in-comic-category[]', false); ?> <input type="hidden" name="time" value="<?php echo cpm_option('cpm-default-post-time'); ?> " /> <table class="form-table"> <tr> <th scope="row"><?php _e('File:', 'comicpress-manager'); ?> </th> <td><input type="file" name="upload" /></td> </tr> <?php if (count($category_checkboxes = cpm_generate_additional_categories_checkboxes()) > 0) { ?> <tr> <th scope="row"><?php _e("Additional Categories:", 'comicpress-manager'); ?> </th> <td><?php echo implode("\n", $category_checkboxes); ?> </td> </tr> <?php } ?> <tr> <th scope="row"><?php _e("Post date (leave blank if already in filename):", 'comicpress-manager'); ?> </th> <td> <div class="curtime"><input type="text" id="override-date" name="override-date" /></div> </td> </tr> <tr> <td colspan="2"><input type="submit" class="button" value="Upload Comic File and Edit Post" /></td> </tr> </table> </form> <script type="text/javascript"> Calendar.setup({ inputField: "override-date", ifFormat: "%Y-%m-%d", button: "override-date" }); </script> <?php } ?> </div> <?php }
function cpm_action_change_dates() { global $cpm_config; $comic_posts_to_date_shift = array(); $comic_files_to_date_shift = array(); $comic_post_target_date_counts = array(); $wp_date_string_length = strlen(date("Y-m-d")); $cpm_date_string_length = strlen(date(CPM_DATE_FORMAT)); $cpm_config->is_cpm_managing_posts = true; // find all comic files that will be shifted foreach ($cpm_config->comic_files as $comic_file) { $comic_filename = pathinfo($comic_file, PATHINFO_BASENAME); $filename_info = cpm_breakdown_comic_filename($comic_filename); $key = md5($comic_file); if (isset($_POST['dates'][$key])) { if ($_POST['dates'][$key] != $filename_info['date']) { $timestamp = strtotime($_POST['dates'][$key]); if ($timestamp !== false && $timestamp !== -1) { $target_date = date(CPM_DATE_FORMAT, $timestamp); $new_comic_filename = $target_date . substr($comic_filename, $cpm_date_string_length); $comic_posts_to_date_shift[strtotime($filename_info['date'])] = $timestamp; if (!isset($comic_post_target_date_counts[$timestamp])) { $comic_post_target_date_counts[$timestamp] = 0; } $comic_post_target_date_counts[$timestamp]++; if (!isset($comic_files_to_date_shift[$timestamp])) { $comic_files_to_date_shift[$timestamp] = array($comic_filename, $new_comic_filename); } } } } } $comic_posts_to_change = array(); $all_posts = cpm_query_posts(); // get the target dates for all files to move if (count($comic_posts_to_date_shift) > 0) { foreach ($all_posts as $comic_post) { $post_date_day = substr($comic_post->post_date, 0, $wp_date_string_length); $post_date_day_timestamp = strtotime($post_date_day); if (isset($comic_posts_to_date_shift[$post_date_day_timestamp])) { if ($comic_post_target_date_counts[$comic_posts_to_date_shift[$post_date_day_timestamp]] == 1) { $new_post_date = date("Y-m-d", $comic_posts_to_date_shift[$post_date_day_timestamp]) . substr($comic_post->post_date, $wp_date_string_length); $comic_posts_to_change[$comic_post->ID] = array($comic_post, $new_post_date); } } } } $final_post_day_counts = array(); // intersect all existing and potential new posts, counting how many // posts occur on each day foreach ($all_posts as $comic_post) { if (isset($comic_posts_to_change[$comic_post->ID])) { $date_to_use = $comic_posts_to_change[$comic_post->ID][1]; } else { $date_to_use = $comic_post->post_date; } $day_to_use = strtotime(substr($date_to_use, 0, $wp_date_string_length)); if (!isset($final_post_day_counts[$day_to_use])) { $final_post_day_counts[$day_to_use] = 0; } $final_post_day_counts[$day_to_use]++; } $posts_moved = array(); // move what can be moved foreach ($comic_posts_to_change as $id => $info) { list($comic_post, $new_post_date) = $info; $new_post_day = strtotime(substr($new_post_date, 0, $wp_date_string_length)); if ($final_post_day_counts[$new_post_day] == 1) { $old_post_date = $comic_post->post_date; $comic_post->post_date = $new_post_date; $comic_post->post_date_gmt = get_gmt_from_date($new_post_date); wp_update_post($comic_post); $cpm_config->messages[] = sprintf(__('<strong>Post %1$s moved to %2$s.</strong>', 'comicpress-manager'), $id, date("Y-m-d", $new_post_day)); $posts_moved[$new_post_day] = array($comic_post, $old_post_date); } else { $cpm_config->warnings[] = sprintf(__('<strong>Moving post %1$s to %2$s would cause two comic posts to exist on the same day.</strong> This is not allowed in the automated process.', 'comicpress-manager'), $id, date("Y-m-d", $new_post_day)); } } // try to move all the files, and roll back any changes to files and posts that fail foreach ($comic_post_target_date_counts as $target_date => $count) { if (!isset($final_post_day_counts[$target_date]) || $final_post_day_counts[$target_date] == 1) { if ($count > 1) { $cpm_config->warnings[] = sprintf(__("<strong>You are moving two comics to the same date: %s.</strong> This is not allowed in the automated process.", 'comicpress-manager'), $target_date); } else { list($comic_filename, $new_comic_filename) = $comic_files_to_date_shift[$target_date]; $roll_back_change = false; $calculate_do_move = array(); foreach (array(array(__('comic folder', 'comicpress-manager'), 'comic_folder', ""), array(__('RSS feed folder', 'comicpress-manager'), 'rss_comic_folder', "rss"), array(__('Mini thumb folder', 'comicpress-manager'), 'mini_comic_folder', "rss"), array(__('archive folder', 'comicpress-manager'), 'archive_comic_folder', "archive")) as $folder_info) { list($name, $property, $type) = $folder_info; $do_move = true; if ($type != "") { if ($cpm_config->separate_thumbs_folder_defined[$type]) { if ($cpm_config->thumbs_folder_writable[$type]) { $do_move = cpm_option("{$type}-generate-thumbnails") == 1; } } $calculate_do_move[$type] = $do_move; } if ($do_move) { $path = CPM_DOCUMENT_ROOT . '/' . $cpm_config->properties[$property]; if (!file_exists($path)) { $cpm_config->errors[] = sprintf(__('The %1$s <strong>%2$s</strong> does not exist.', 'comicpress-manager'), $name, $cpm_config->properties[$property]); $roll_back_change = true; } else { if (file_exists($path . '/' . $comic_filename)) { if (@rename($path . '/' . $comic_filename, $path . '/' . $new_comic_filename)) { $cpm_config->messages[] = sprintf(__('<strong>Rename %1$s file %2$s to %3$s.</strong>', 'comicpress-manager'), $name, $comic_filename, $new_comic_filename); } else { $cpm_config->warnings[] = sprintf(__('<strong>The renaming of %1$s to %2$s failed.</strong> Check the permissions on %3$s', 'comicpress-manager'), $comic_filename, $new_comic_filename, $path); $roll_back_change = true; } } } } } if ($roll_back_change) { foreach (array(array(__('comic folder', 'comicpress-manager'), 'comic_folder', ""), array(__('RSS feed folder', 'comicpress-manager'), 'rss_comic_folder', "rss"), array(__('Mini thumb folder', 'comicpress-manager'), 'mini_comic_folder', "rss"), array(__('archive folder', 'comicpress-manager'), 'archive_comic_folder', "archive")) as $folder_info) { list($name, $property) = $folder_info; $do_move = isset($calculate_do_move[$type]) ? $calculate_do_move[$type] : true; if ($do_move) { $path = CPM_DOCUMENT_ROOT . '/' . $cpm_config->properties[$property]; if (file_exists($path . '/' . $new_comic_filename)) { @rename($path . '/' . $new_comic_filename, $path . '/' . $comic_filename); $cpm_config->messages[] = sprintf(__("<strong>Rolling back %s.</strong>", 'comicpress-manager'), $new_comic_filename); } } } if (isset($posts_moved[$target_date])) { list($comic_post, $old_post_date) = $posts_moved[$target_date]; $comic_post->post_date = $old_post_date; $comic_post->post_date_gmt = get_gmt_from_date($old_post_date); wp_update_post($comic_post); $cpm_config->messages[] = sprintf(__('<strong>Rename error, rolling back post %1$s to %2$s.</strong>', 'comicpress-manager'), $comic_post->ID, $old_post_date); } } } } } $cpm_config->comic_files = cpm_read_comics_folder(); }
/** * The generate status dialog. */ function cpm_manager_status() { global $cpm_config; $cpm_config->need_calendars = true; if (cpm_get_subcomic_directory() !== false) { $cpm_config->messages[] = sprintf(__("<strong>Reminder:</strong> You are managing the <strong>%s</strong> comic subdirectory.", 'comicpress-manager'), get_cat_name(get_option('comicpress-manager-manage-subcomic'))); } if (cpm_option('cpm-skip-checks') != 1) { if (!function_exists('get_comic_path')) { $cpm_config->warnings[] = __('<strong>It looks like you\'re running an older version of ComicPress.</strong> Storyline, hovertext, and transcript are fully supported in <a href="http://comicpress.org/">ComicPress 2.7</a>. You can use hovertext and transcripts in earlier themes by using <tt>get_post_meta($post->ID, "hovertext", true)</tt> and <tt>get_post_meta($post->ID, "transcript", true)</tt>.', 'comicpress-manager'); } } ob_start(); ?> <h2 style="padding-right:0;"><?php _e("Bulk Edit", 'comicpress-manager'); ?> </h2> <p><strong>ComicPress-related information, such as transcripts and Storyline categories for posts, and thumbnail regeneration, can be bulk edited here.</strong> To edit post-specific information, such as title and publishing date, use <strong><a href="edit.php">Edit Posts</a></strong>. <?php $data_by_date = array(); $dates_per_page = 15; foreach ($cpm_config->comic_files as $comic_filepath) { $comic_file = pathinfo($comic_filepath, PATHINFO_BASENAME); if (($result = cpm_breakdown_comic_filename($comic_file)) !== false) { $timestamp = strtotime($result['date']); $comic_date = date("Y-m-d", $timestamp); if (!isset($data_by_date[$comic_date])) { $data_by_date[$comic_date] = array(); } $comic_info = array('type' => 'comic', 'timestamp' => $timestamp, 'comic_file' => $comic_file, 'file_title' => $result['converted_title'], 'comic_uri' => cpm_build_comic_uri($comic_filepath, CPM_DOCUMENT_ROOT)); if (count($thumbnails_found = cpm_find_thumbnails_by_filename($comic_filepath)) > 0) { foreach ($thumbnails_found as $thumb_type => $thumb_filename) { $comic_info["thumbnails_found_{$thumb_type}"] = cpm_build_comic_uri(CPM_DOCUMENT_ROOT . $thumb_filename, CPM_DOCUMENT_ROOT); } } $icon_file_to_use = $comic_filepath; foreach (array('rss', 'archive', 'mini') as $type) { if (isset($thumbnails_found[$type])) { $icon_file_to_use = CPM_DOCUMENT_ROOT . $thumbnails_found[$type]; } } $comic_info['icon_uri'] = cpm_build_comic_uri($icon_file_to_use, CPM_DOCUMENT_ROOT); $data_by_date[$comic_date][] = $comic_info; } } foreach (cpm_query_posts() as $comic_post) { $ok = true; if (cpm_get_subcomic_directory() !== false) { $ok = in_array(get_option('comicpress-manager-manage-subcomic'), wp_get_post_categories($comic_post->ID)); } if ($ok) { $timestamp = strtotime($comic_post->post_date); $post_date = date("Y-m-d", $timestamp); if (!isset($data_by_date[$post_date])) { $data_by_date[$post_date] = array(); } $post_info = array('type' => 'post', 'timestamp' => $timestamp, 'post_id' => $comic_post->ID, 'post_title' => $comic_post->post_title, 'post_object' => (array) $comic_post); $data_by_date[$post_date][] = $post_info; } } krsort($data_by_date); $all_months = array(); foreach (array_keys($data_by_date) as $date) { list($year, $month, $day) = explode("-", $date); $key = "{$year}-{$month}"; if (!isset($all_months[$key])) { $all_months[$key] = date("F Y", strtotime($date)); } } krsort($all_months); if (isset($_POST['dates'])) { if ($_POST['dates'] != -1) { $new_data_by_date = array(); foreach ($data_by_date as $date => $data) { if (strpos($date, $_POST['dates']) === 0) { $new_data_by_date[$date] = $data; } } $data_by_date = $new_data_by_date; } } if (!isset($_GET['paged'])) { $_GET['paged'] = 1; } $page_links = paginate_links(array('base' => add_query_arg('paged', '%#%'), 'format' => '', 'prev_text' => __('«'), 'next_text' => __('»'), 'total' => ceil(count($data_by_date) / $dates_per_page), 'current' => $_GET['paged'])); $total_data_by_date = count($data_by_date); $data_by_date = array_slice($data_by_date, ($_GET['paged'] - 1) * $dates_per_page, $dates_per_page); extract(cpm_normalize_storyline_structure()); $comic_categories = array(); foreach ($category_tree as $node) { $comic_categories[] = end(explode("/", $node)); } $thumbnail_writes = cpm_get_thumbnails_to_generate(); if ($total_data_by_date > 0) { $displaying_num_content = sprintf(__("Displaying %d-%d of %d", 'comicpress-manager'), ($_GET['paged'] - 1) * $dates_per_page + 1, min($total_data_by_date, ($_GET['paged'] - 1) * $dates_per_page + $dates_per_page), $total_data_by_date); } else { $displaying_num_content = __('No items to display', 'comicpress-manager'); } ?> <style type="text/css"> .storyline-checklist { overflow-y: scroll; border: solid #ddd 1px; height: 12em } #wpbody-content .bulk-edit-row-post .inline-edit-col-right { width: 42% } </style> <div id="table-holder"> <form id="bulk-form" action="" method="post"> <input type="hidden" name="action" value="batch-processing" /> <div class="tablenav"> <div class="alignleft actions"> <select id="bulk-action" name="bulk-action"> <option selected value="-1">Bulk Actions</option> <option value="individual">Submit Individual Changes</option> <option value="edit">Edit Selected</option> <option value="delete">Delete Selected</option> <option value="import">Create Posts for Selected Files</option> <option value="regen-thumbs">Regenerate Thumbs</option> </select> <input id="doaction" class="button-secondary action" type="submit" value="Apply" /> <select id="dates" name="dates"> <option selected value="-1">Show all dates</option> <?php foreach ($all_months as $key => $date) { ?> <option value="<?php echo $key; ?> "<?php echo $key == $_POST['dates'] ? " selected" : ""; ?> ><?php echo $date; ?> </option> <?php } ?> </select> <input id="dofilter" class="button-secondary action" type="submit" value="Filter" /> </div> <div class="tablenav-pages"> <span class="displaying-num"><?php echo $displaying_num_content; ?> </span> <?php echo $page_links; ?> </div> </div> <table class="widefat fixed" id="status-table"> <thead> <tr> <th class="check-column" width="3%"> <input type="checkbox" name="toggle-all" class="batch-all" value="yes" /> </th> <th width="12%"><?php _e("Date", 'comicpress-manager'); ?> </th> <th width="34%"><?php _e("Object Info", 'comicpress-manager'); ?> </th> <th width="61%"><?php _e("Operations", 'comicpress-manager'); ?> </th> </tr> </thead> <tfoot> <tr> <th class="check-column"> <input type="checkbox" name="toggle-all" class="batch-all" value="yes" /> </th> <th><?php _e("Date", 'comicpress-manager'); ?> </th> <th><?php _e("Object Info", 'comicpress-manager'); ?> </th> <th><?php _e("Operations", 'comicpress-manager'); ?> </th> </tr> </tfoot> <tbody> <tr style="display: none" id="bulk-edit" class="inline-edit-row inline-edit-row-post bulk-edit-row bulk-edit-row-post inline-editor"> <td colspan="4"> <fieldset class="inline-edit-col-left"> <div class="inline-edit-col"> <h4>Bulk Edit Comic Posts</h4> <div id="bulk-title-div"> <div id="bulk-titles" /> </div> </div> </fieldset> <fieldset class="inline-edit-col-center inline-edit-categories"> <div class="inline-edit-col"> <span class="title inline-edit-categories-label"> Storyline </span> <div class="storyline-checklist"> <?php cpm_display_storyline_checkboxes($category_tree, array(), "bulk-storyline"); ?> </div> </div> </fieldset> <fieldset class="inline-edit-col-right"> <label> <span class="title" style="width: auto; margin-right: 5px"><img title>/hovertext</span> <input type="text" name="bulk-hovertext" style="width: 100%" /> </label> <label> <span class="title" style="width: auto; margin-right: 5px">Transcript</span> <textarea name="bulk-transcript" style="height: 7em"></textarea> </label> </fieldset> <p class="submit inline-edit-save"> <a id="cancel" class="button-secondary cancel alignleft" title="Cancel" href="#">Cancel</a> <input class="button-primary alignright" id="bulk-edit-submit" type="submit" value="Update Comic Posts" name="bulk-comic-edit" /> <br class="clear" /> </p> </td> </tr> <?php $is_grey = false; $image_index = 0; foreach ($data_by_date as $date => $data) { $all_objects_by_type = array(); foreach ($data as $object) { if (!isset($all_objects_by_type[$object['type']])) { $all_objects_by_type[$object['type']] = array(); } $all_objects_by_type[$object['type']][] = $object; } $classes = array("data-row"); if ($is_grey) { $classes[] = "grey"; } $is_first_row = true; foreach ($data as $object) { ?> <tr class="<?php echo implode(" ", $classes); ?> "> <?php if ($is_first_row) { ?> <td align="center" rowspan="<?php echo count($data); ?> "> <input id="batch-<?php echo $date; ?> " type="checkbox" class="batch" name="batch-<?php echo $date; ?> " value="yes" /> </td> <td rowspan="<?php echo count($data); ?> "><?php echo $date; ?> </td> <?php $is_first_row = false; } ?> <td class="<?php echo $object['type']; ?> "> <?php switch ($object['type']) { case "comic": ?> <div style="overflow: hidden"> <div><strong> Comic: <?php echo empty($object['file_title']) ? $object['comic_file'] : $object['file_title']; ?> </strong></div> <a href="<?php echo $object['comic_uri']; ?> "><img style="float: right; display: inline; margin-right: 5px; max-height: 100px" id="comic-icon-<?php echo $image_index; ?> " src="<?php echo $object['icon_uri']; ?> " /></a> <?php $all_found = array(); foreach (array('rss', 'archive', 'mini') as $type) { if (isset($object["thumbnails_found_{$type}"])) { $all_found[$type] = $object["thumbnails_found_{$type}"]; } } if (count($all_found) > 0) { ?> [ <?php foreach ($all_found as $type => $uri) { ?> <a href="<?php echo $uri; ?> "><?php echo $type; ?> </a> <?php } ?> ] <?php } else { ?> [ No thumbnails found ] <?php } $image_index++; ?> </div> <?php break; case "post": if (isset($object['post_id'])) { ?> <strong>Post: <?php echo $object['post_title']; ?> </strong> <em>(<?php echo $object['post_id']; ?> )</em><br /> [ <?php echo generate_view_edit_post_links($object['post_object']); ?> ] <?php } break; } ?> </td> <td class="individual-operations <?php echo $object['type']; ?> "> <?php switch ($object['type']) { case "comic": ?> <input type="hidden" name="file,<?php echo $date; ?> ,<?php echo $object['comic_file']; ?> " value="yes" /> <?php if (count($all_objects_by_type['post']) == 0) { ?> <label><input type="checkbox" name="generate-post-<?php echo $object['comic_file']; ?> " value="yes" /> Generate a Post <em>(as a draft)</em></label><br /> <?php } ?> <?php if (count($thumbnail_writes) > 0) { ?> <label><input type="checkbox" name="regen-<?php echo $object['comic_file']; ?> " value="yes" /> Regenerate Thumbs</label><br /> <?php } ?> <label><input type="checkbox" class="delete-file" name="delete-file-<?php echo $object['comic_file']; ?> " value="yes" /> Delete Comic</label><br /> <!-- <input type="checkbox" id="do-redate-file-<?php echo $object['comic_file']; ?> " name="do-redate-file-<?php echo $object['comic_file']; ?> " /> Move to: <input class="needs-calendar" id="redate-file-<?php echo $object['comic_file']; ?> " type="text" name="redate-file-<?php echo $object['comic_file']; ?> " value="<?php echo $date; ?> " /> --> <?php break; case "post": $post_categories = array_intersect(wp_get_post_categories($object['post_id']), $comic_categories); $post_category_names = array(); foreach ($post_categories as $category_id) { $post_category_names[] = get_cat_name($category_id); } ?> <input type="hidden" name="post,<?php echo $date; ?> ,<?php echo $object['post_id']; ?> " value="yes" /> <label><input type="checkbox" class="delete-post" name="delete-post-<?php echo $object['post_id']; ?> " value="yes" /> Delete Post</label><br /> <!-- <input type="checkbox" id="do-redate-post-<?php echo $object['post_id']; ?> " name="do-redate-post-<?php echo $object['post_id']; ?> " /> Move to: <input type="text" class="needs-calendar" id="redate-post-<?php echo $object['post_id']; ?> " name="redate-post-<?php echo $object['post_if']; ?> " value="<?php echo $date; ?> " /><br /> --> <?php $hovertext = get_post_meta($object['post_id'], 'hovertext', true); if (!empty($hovertext)) { ?> <strong><img title>/hovertext:</strong> <?php echo $hovertext; ?> <br /> <?php } ?> <?php $transcript = get_post_meta($object['post_id'], 'transcript', true); if (!empty($transcript)) { ?> <strong>Transcript:</strong> <div class="transcript-holder"><?php echo $transcript; ?> </div> <?php } ?> <strong>Storyline:</strong> <span class="category-names"><?php echo implode(", ", $post_category_names); ?> </span> [ <a href="#" id="category-<?php echo $object['post_id']; ?> " class="category">Edit</a> ] <div id="category-holder-<?php echo $object['post_id']; ?> " style="display: none"> <?php cpm_display_storyline_checkboxes($category_tree, $post_categories, $object['post_id']); ?> </div> <?php break; } ?> </td> </tr> <?php } $is_grey = !$is_grey; } ?> </tbody> </table> <div class="tablenav"> <div class="alignleft actions"> <select id="linked-bulk-action" name="linked-bulk-action"> <option selected value="-1">Bulk Actions</option> <option value="individual">Submit Individual Changes</option> <option value="edit">Edit Selected</option> <option value="delete">Delete Selected</option> <option value="import">Create Posts for Selected Files</option> <option value="regen-thumbs">Regenerate Thumbs</option> </select> <input id="linked-doaction" class="button-secondary action" type="submit" value="Apply" /> </div> <div class="tablenav-pages"> <span class="displaying-num"><?php echo $displaying_num_content; ?> </span> <?php echo $page_links; ?> </div> </div> </form> <script type="text/javascript"> Event.observe(window, 'load', function() { Event.observe($('linked-bulk-action'), 'change', function() { $('bulk-action').selectedIndex = $('linked-bulk-action').selectedIndex; }); Event.observe($('bulk-action'), 'change', function() { $('linked-bulk-action').selectedIndex = $('bulk-action').selectedIndex; }); $$('.needs-calendar').each(function(element) { Calendar.setup({ inputField: element.id, ifFormat: "%Y-%m-%d", button: element.id }); Event.observe(element, 'click', function(e) { var element = Event.element(e); $("do-" + element.id).checked = true; }); }); $$('a.category').each(function(element) { Event.observe(element, 'click', function(e) { Event.stop(e); Element.toggle("category-holder-" + Event.element(e).id.replace(/^.*\-([0-9]+)$/, '$1')); }); }); }); $$('.batch-all').each(function(element) { Event.observe(element, 'change', function(e) { $$('.batch').each(function(b) { b.checked = element.checked; }); $$('.batch-all').each (function(b) { b.checked = element.checked; }); }); }); $$('.individual-operations input[type=checkbox]').each(function(element) { Event.observe(element, 'click', function(e) { $('bulk-action').selectedIndex = 1; $('linked-bulk-action').selectedIndex = 1; }); }); var ok_to_submit = false; Event.observe($('bulk-form'), 'submit', function(e) { return ok_to_submit; }); Event.observe($('bulk-edit-submit'), 'click', function(e) { ok_to_submit = true; $('bulk-form').submit(); }); Event.observe($('cancel'), 'click', function(e) { Event.stop(e); $('bulk-edit').hide(); $('bulk-action').selectedIndex = 0; }); Event.observe($('dofilter'), 'click', function(e) { Event.stop(e); $('bulk-action').selectedIndex = 0; ok_to_submit = true; $('bulk-form').submit(); }); ['doaction', 'linked-doaction'].each(function(which) { Event.observe($(which), 'click', function(e) { Event.stop(e); switch ($F('bulk-action')) { case -1: case "-1": break; case "edit": $('bulk-titles').innerHTML = ""; var any_checked = false; $$('.batch').each(function(element) { if (element.checked) { any_checked = true; /\-(.*)$/.test(element.id); var date = RegExp.$1; var node = Builder.node("div", [ Builder.node("a", { id: date, className: "ntdelbutton", title: "Remove From Bulk Edit" }, [ "X" ]), date ]); $('bulk-titles').insert(node); Event.observe(node, 'click', function(evt) { var node = Event.element(evt); $('batch-' + node.id).checked = false; Element.remove(node.parentNode); var any_checked = false; $$('.batch').each(function(n) { if (n.checked) { any_checked = true; } }); if (!any_checked) { $('bulk-edit').hide(); } }); } }); if (any_checked) { $('bulk-edit').show(); } break; case "delete": if (confirm("<?php _e('You are about to delete the selected posts and comic files. Are you sure?', 'comicpress-manager'); ?> ")) { ok_to_submit = true; $('bulk-form').submit(); } break; default: ok_to_submit = true; $('bulk-form').submit(); break; } }); }); </script> </div> <?php $activity_content = ob_get_clean(); cpm_wrap_content($help_content, $activity_content, false); }
function cpm_get_thumbnails_to_generate() { global $cpm_config; $thumbnails_to_generate = array(); if ($cpm_config->get_scale_method() != CPM_SCALE_NONE) { foreach ($cpm_config->thumbs_folder_writable as $type => $value) { if ($value) { if ($cpm_config->separate_thumbs_folder_defined[$type] !== false) { if (cpm_option("cpm-{$type}-generate-thumbnails") == 1) { $thumbnails_to_generate[] = $type; } } } } } return $thumbnails_to_generate; }
/** * The import dialog. */ function cpm_manager_import() { global $cpm_config; if (cpm_get_subcomic_directory() !== false) { $cpm_config->messages[] = sprintf(__("<strong>Reminder:</strong> You are managing the <strong>%s</strong> comic subdirectory.", 'comicpress-manager'), get_cat_name(get_option('comicpress-manager-manage-subcomic'))); } if (cpm_option('cpm-skip-checks') != 1) { if (!function_exists('get_comic_path')) { $cpm_config->warnings[] = __('<strong>It looks like you\'re running an older version of ComicPress.</strong> Storyline, hovertext, and transcript are fully supported in <a href="http://comicpress.org/">ComicPress 2.7</a>. You can use hovertext and transcripts in earlier themes by using <tt>get_post_meta($post->ID, "hovertext", true)</tt> and <tt>get_post_meta($post->ID, "transcript", true)</tt>.', 'comicpress-manager'); } } ob_start(); ?> <p> <?php _e("<strong>Create missing posts for uploaded comics</strong> is for when you upload a lot of comics to your comic folder and want to generate generic posts for all of the new comics, or for when you're migrating from another system to ComicPress.", 'comicpress-manager'); ?> </p> <p> <?php $link_text = __("Bulk Edit page", 'comicpress-manager'); $link = "<a href=\"?page=" . plugin_basename(realpath(dirname(__FILE__) . '/../comicpress_manager_admin.php')) . "-status\">{$link_text}</a>"; printf(__("<strong>Generating thumbnails on an import is a slow process.</strong> Some Webhosts will limit the amount of time a script can run. If your import process is failing with thumbnail generation enabled, disable thumbnail generation, perform your import, and then visit the %s to complete the thumbnail generation process.", 'comicpress-manager'), $link); ?> </p> <?php $help_content = ob_get_clean(); ob_start(); ?> <h2 style="padding-right:0;"><?php _e("Create Missing Posts For Uploaded Comics", 'comicpress-manager'); ?> </h2> <h3>— <?php _e("acts as a batch import process", 'comicpress-manager'); ?> </h3> <div id="import-count-information"> <?php if ($cpm_config->import_safe_exit === true) { _e("<strong>You are in the middle of an import operation.</strong> To continue, click the button below:", 'comicpress-manager'); ?> <form action="" method="post"> <?php foreach ($_POST as $key => $value) { if (is_array($value)) { foreach ($value as $subvalue) { ?> <input type="hidden" name="<?php echo $key; ?> []" value="<?php echo $subvalue; ?> " /> <?php } } else { ?> <input type="hidden" name="<?php echo $key; ?> " value="<?php echo $value; ?> " /> <?php } } ?> <input type="submit" class="button" value="Continue Creating Posts" /> </form> <?php } else { $execution_time = ini_get("max_execution_time"); $max_posts_imported = (int) ($execution_time / 2); if ($execution_time == 0) { _e("<strong>Congratulations, your <tt>max_execution_time</tt> is 0</strong>. You'll be able to import all of your comics in one import operation.", 'comicpress-manager'); } else { if ($max_posts_imported == 0) { _e("<strong>Something is very wrong with your configuration!.</strong>", 'comicpress-manager'); } else { printf(__("<strong>Your <tt>max_execution_time</tt> is %s</strong>. You'll be able to safely import %s comics in one import operation.", 'comicpress-manager'), $execution_time, $max_posts_imported); } } } ?> </div> <table class="form-table"> <tr> <th scope="row"> <?php _e("Count the number of missing posts", 'comicpress-manager'); ?> </th> <td> <a href="#" onclick="return false" id="count-missing-posts-clicker"><?php _e("Click here to count", 'comicpress-manager'); ?> </a> (<?php _e("may take a while", 'comicpress-manager'); ?> ): <span id="missing-posts-display"></span> </td> </tr> </table> <div id="create-missing-posts-holder"> <form onsubmit="$('submit').disabled=true" action="" method="post" style="margin-top: 10px"> <input type="hidden" name="action" value="create-missing-posts" /> <?php cpm_post_editor(435, true); ?> <table class="form-table"> <tr> <td align="center"> <input class="button" type="submit" id="submit" value="<?php _e("Create posts", 'comicpress-manager'); ?> " /> </td> </tr> </table> </form> </div> <?php $activity_content = ob_get_clean(); cpm_wrap_content($help_content, $activity_content); }