public static function card($entry) { if (is_admin()) { if (!isset($form)) { $form = new cnFormObjects(); } $editTokenURL = $form->tokenURL('admin.php?page=connections_manage&cn-action=edit_entry&id=' . $entry->getId(), 'entry_edit_' . $entry->getId()); if (current_user_can('connections_edit_entry')) { echo '<span class="cn-entry-name"><a class="row-title" title="Edit ', $entry->getName(), '" href="', $editTokenURL, '"> ', $entry->getName() . '</a></span> <span class="cn-list-date">', $entry->getDateAdded('m/d/Y g:ia'), '</span>'; } else { echo '<span class="cn-entry-name">', $entry->getName(), '</span> <span class="cn-list-date">', $entry->getDateAdded('m/d/Y g:ia'), '</span>'; } } }
public static function card($entry, $template, $atts) { if (is_admin()) { if (!isset($form)) { $form = new cnFormObjects(); } $editTokenURL = $form->tokenURL('admin.php?page=connections_manage&cn-action=edit_entry&id=' . $entry->getId(), 'entry_edit_' . $entry->getId()); if (current_user_can('connections_edit_entry')) { echo '<span class="cn-entry-name"><a class="row-title" title="Edit ', $entry->getName(), '" href="', $editTokenURL, '"> ', $entry->getName() . '</a></span> <span class="cn-upcoming-date">', $entry->getUpcoming($atts['list_type'], $atts['date_format']), '</span>'; } else { echo '<span class="cn-entry-name">', $entry->getName(), '</span> <span class="cn-upcoming-date">', $entry->getUpcoming($atts['list_type'], $atts['date_format']), '</span>'; } } }
/** * Creates the initial character filter control. * * Accepted option for the $atts property are: * return (bool) Whether or not to return or echo the result. * * @access public * @since 0.7.4 * @static * * @uses add_query_arg() * @uses cnQuery::getVar() * @uses wp_parse_args() * @uses is_admin() * * @param array $atts [description] * * @return string */ public static function index($atts = array()) { $links = array(PHP_EOL); $current = ''; $styles = ''; $defaults = array('status' => array('approved'), 'visibility' => array(), 'tag' => 'div', 'style' => array(), 'return' => FALSE); $atts = wp_parse_args($atts, $defaults); $characters = cnRetrieve::getCharacters($atts); // $currentPageURL = add_query_arg( array( 'page' => FALSE , 'cn-action' => 'cn_filter' ) ); // If in the admin init an instance of the cnFormObjects class to be used to create the URL nonce. if (is_admin()) { $form = new cnFormObjects(); } // Current character if (is_admin()) { if (isset($_GET['cn-char']) && 0 < strlen($_GET['cn-char'])) { $current = urldecode($_GET['cn-char']); } } else { if (cnQuery::getVar('cn-char')) { $current = urldecode(cnQuery::getVar('cn-char')); } } if (is_array($atts['style']) && !empty($atts['style'])) { array_walk($atts['style'], create_function('&$i, $property', '$i = "$property: $i";')); $styles = implode($atts['style'], '; '); } foreach ($characters as $key => $char) { $char = strtoupper($char); // If we're in the admin, add the nonce to the URL to be verified when settings the current user filter. if (is_admin()) { $links[] = '<a' . ($current == $char ? ' class="cn-char-current"' : ' class="cn-char"') . ' href="' . esc_url($form->tokenURL(add_query_arg(array('cn-char' => urlencode($char))), 'filter')) . '">' . $char . '</a> ' . PHP_EOL; } else { $url = cnURL::permalink(array('type' => 'character', 'slug' => $char, 'title' => $char, 'class' => $current == $char ? 'cn-char-current' : 'cn-char', 'text' => $char, 'home_id' => in_the_loop() && is_page() ? get_the_ID() : cnSettingsAPI::get('connections', 'connections_home_page', 'page_id'), 'force_home' => FALSE, 'return' => TRUE)); $links[] = $url . PHP_EOL; } } $out = '<' . $atts['tag'] . ' class="cn-alphaindex"' . ($styles ? ' style="' . $styles . '"' : '') . '>' . implode(' ', $links) . '</' . $atts['tag'] . '>' . PHP_EOL; return self::echoOrReturn($atts['return'], $out); }
/** * Render the term count column. * * NOTE: Using the "posts" column ID in order to take advantage of core WP CSS styles. * * @access public * @since 8.2 * * @uses number_format_i18n() * @uses cnFormObjects::tokenURL() * * @param object $term * * @return string */ public function column_posts($term) { $form = new cnFormObjects(); $count = number_format_i18n($term->count); $categoryFilterURL = $form->tokenURL('admin.php?cn-action=filter&category=' . $term->term_id, 'filter'); if ($count) { $out = '<a href="' . $categoryFilterURL . '">' . $count . '</a>'; } else { $out = $count; } return $out; }
/** * Renders the "Delete" button. * * @access private * @since 8.4 * * @param cnTemplate $template */ function cnTemplateDeleteButton($template) { $form = new cnFormObjects(); if ($template->isCustom() === TRUE && $template->isLegacy() === TRUE) { $url = $form->tokenURL('admin.php?cn-action=delete_template&type=' . $template->getType() . '&template=' . $template->getSlug(), 'delete_' . $template->getSlug()); ?> <a class="button button-warning" href="<?php echo esc_url($url); ?> " title="Delete '<?php echo esc_attr($template->getName()); ?> '" onclick="return confirm('You are about to delete this template \'<?php echo esc_attr($template->getName()); ?> \'\n \'Cancel\' to stop, \'OK\' to delete.');"> <?php _e('Delete', 'connections'); ?> </a> <?php } }
function connectionsShowTemplatesPage() { /* * Check whether user can edit Settings */ if (!current_user_can('connections_manage_template')) { wp_die('<p id="error-page" style="-moz-background-clip:border; -moz-border-radius:11px; background:#FFFFFF none repeat scroll 0 0; border:1px solid #DFDFDF; color:#333333; display:block; font-size:12px; line-height:18px; margin:25px auto 20px; padding:1em 2em; text-align:center; width:700px">You do not have sufficient permissions to access this page.</p>'); } else { global $connections; $form = new cnFormObjects(); $tmplt = new cnTemplate(); $tmplt->buildCatalog(); !isset($_GET['type']) ? $type = 'all' : ($type = esc_attr($_GET['type'])); $templates = $tmplt->getCatalog($type); $connections->displayMessages(); ?> <div class="wrap"> <div id="icon-connections" class="icon32"> <br> </div> <h2>Connections : Templates</h2> <ul class="subsubsub"> <li><a <?php if ($type === 'all') { echo 'class="current" '; } ?> href="admin.php?page=connections_templates&type=all">All</a> | </li> <li><a <?php if ($type === 'individual') { echo 'class="current" '; } ?> href="admin.php?page=connections_templates&type=individual">Individual</a> | </li> <li><a <?php if ($type === 'organization') { echo 'class="current" '; } ?> href="admin.php?page=connections_templates&type=organization">Organization</a> | </li> <li><a <?php if ($type === 'family') { echo 'class="current" '; } ?> href="admin.php?page=connections_templates&type=family">Family</a> | </li> <li><a <?php if ($type === 'anniversary') { echo 'class="current" '; } ?> href="admin.php?page=connections_templates&type=anniversary">Anniversary</a> | </li> <li><a <?php if ($type === 'birthday') { echo 'class="current" '; } ?> href="admin.php?page=connections_templates&type=birthday">Birthday</a></li> </ul> <table cellspacing="0" cellpadding="0" id="availablethemes"> <tbody> <tr> <td class="current_template"> <h2>Current Template</h2> <div id="current-theme"> <?php $currentTemplate = $connections->options->getActiveTemplate($type); if (!empty($currentTemplate)) { $author = ''; if (isset($currentTemplate->thumbnailPath)) { echo '<div class="current-template"><img class="template-thumbnail" src="' . $currentTemplate->thumbnailURL . '" /></div>'; } if (isset($currentTemplate->uri)) { $author = '<a title="Visit author\'s homepage." href="http://' . esc_attr($currentTemplate->uri) . '">' . esc_attr($currentTemplate->author) . '</a>'; } else { $author = esc_attr($currentTemplate->author); } echo '<h3>', esc_attr($currentTemplate->name), ' ', esc_attr($currentTemplate->version), ' by ', $author, '</h3>'; echo '<p class="theme-description">', esc_attr($currentTemplate->description), '</p>'; // Remove the current template so it does not show in the available templates. unset($templates->{$currentTemplate->slug}); } ?> </div> <div class="clear"></div> </td> <td class="template_instructions" colspan="2"> <p><strong>Instructions:</strong></p> <p> By default the <code>[connections_list]</code> shortcode will show all entries types. To change the template used when displaying all entry types, select the "All" tab and activate the template. When the <code>list_type</code> shortcode attribute is used to filter the entries based on the entry type, the template for that entry type will be used. To change the template used for specific entry type, select the appropriate tab and then activate the template. If multiple entry types are specified in the <code>list_type</code> shortcode attribute, the template for the entry type listed first will be used to display the entry list. </p> <p> The <code>[upcoming_list]</code> shortcode which displays the upcoming anniversaries and birthdays will be displayed with the template that is activated under their respective tabs. </p> <p> The current active template for each template type can be overridden by using the the <code>template</code> shortcode attribute. </p> </td> </tr> <tr> <td class="install_template" colspan="3"> <h2>Install Template</h2> <?php $formAttr = array('action' => 'admin.php?page=connections_templates&type=' . $type . '&action=install', 'method' => 'post', 'enctype' => 'multipart/form-data'); $form->open($formAttr); $form->tokenField('install_template'); ?> <p> <label for='template'>Select Template: <input type='file' value='' name='template' size='25' /> </label> <input type="submit" value="Install Now" class="button"> </p> <?php $form->close(); ?> </td> </tr> <tr> <td class="current_template" colspan="3"> <h2>Available Templates</h2> </td> </tr> <?php $templateNames = array_keys((array) $templates); natcasesort($templateNames); $table = array(); $rows = ceil(count((array) $templates) / 3); for ($row = 1; $row <= $rows; $row++) { for ($col = 1; $col <= 3; $col++) { $table[$row][$col] = array_shift($templateNames); } } foreach ($table as $row => $cols) { ?> <tr> <?php foreach ($cols as $col => $slug) { $activateTokenURL = NULL; $deleteTokenURL = NULL; $class = array('available-theme'); if ($row == 1) { $class[] = 'top'; } if ($row == $rows) { $class[] = 'bottom'; } if ($col == 1) { $class[] = 'left'; } if ($col == 3) { $class[] = 'right'; } ?> <td class="<?php echo join(' ', $class); ?> "> <?php if (!isset($templates->{$slug})) { continue; } $author = ''; if (isset($templates->{$slug}->thumbnailPath)) { echo '<div class="center-thumbnail"><img class="template-thumbnail" src="' . $templates->{$slug}->thumbnailURL . '" /></div>'; } if (isset($templates->{$slug}->uri)) { $author = '<a title="Visit author\'s homepage." href="' . esc_attr($templates->{$slug}->uri) . '">' . esc_attr($templates->{$slug}->author) . '</a>'; } else { $author = esc_attr($templates->{$slug}->author); } echo '<h3>', esc_attr($templates->{$slug}->name), ' ', esc_attr($templates->{$slug}->version), ' by ', $author, '</h3>'; echo '<p class="description">', esc_attr($templates->{$slug}->description), '</p>'; echo '<p>Shortcode Override: <code>template="' . $slug . '"</code></p>'; if ($templates->{$slug}->custom === FALSE) { echo '<p>This a supplied template and can not be deleted.</p>'; } ?> <span class="action-links"> <?php $activateTokenURL = $form->tokenURL('admin.php?page=connections_templates&action=activate&type=' . $type . '&template=' . esc_attr($templates->{$slug}->slug), 'activate_' . esc_attr($templates->{$slug}->slug)); if ($templates->{$slug}->custom === TRUE) { $deleteTokenURL = $form->tokenURL('admin.php?page=connections_templates&action=delete&type=' . $type . '&template=' . esc_attr($templates->{$slug}->slug), 'delete_' . esc_attr($templates->{$slug}->slug)); } ?> <a class="activatelink" href="<?php echo esc_attr($activateTokenURL); ?> " title="Activate '<?php echo esc_attr($templates->{$slug}->name); ?> '">Activate</a> <?php if (isset($deleteTokenURL)) { ?> | <a class="deletelink" href="<?php echo esc_attr($deleteTokenURL); ?> " title="Delete '<?php echo esc_attr($templates->{$slug}->name); ?> '" onclick="return confirm('You are about to delete this theme \'<?php echo esc_attr($templates->{$slug}->name); ?> \'\n \'Cancel\' to stop, \'OK\' to delete.');">Delete</a> <?php } ?> </span> </td> <?php } ?> </tr> <?php } ?> </tbody> </table> </div> <?php } }
private function buildTableRowHTML($term, $level) { global $connections; $form = new cnFormObjects(); $category = new cnCategory($term); $pad = str_repeat('— ', max(0, $level)); $this->rowClass = 'alternate' == $this->rowClass ? '' : 'alternate'; /* * Genreate the edit & delete tokens. */ $editToken = $form->tokenURL('admin.php?page=connections_categories&action=edit&id=' . $category->getId(), 'category_edit_' . $category->getId()); $deleteToken = $form->tokenURL('admin.php?page=connections_categories&action=delete&id=' . $category->getId(), 'category_delete_' . $category->getId()); $out = '<tr id="cat-' . $category->getId() . '" class="' . $this->rowClass . '">'; $out .= '<th class="check-column">'; $out .= '<input type="checkbox" name="category[]" value="' . $category->getId() . '"/>'; $out .= '</th>'; $out .= '<td class="name column-name"><a class="row-title" href="' . $editToken . '">' . $pad . $category->getName() . '</a><br />'; $out .= '<div class="row-actions">'; $out .= '<span class="edit"><a href="' . $editToken . '">Edit</a> | </span>'; $out .= '<span class="delete"><a onclick="return confirm(\'You are about to delete this category. \\\'Cancel\\\' to stop, \\\'OK\\\' to delete\');" href="' . $deleteToken . '">Delete</a></span>'; $out .= '</div>'; $out .= '</td>'; $out .= '<td class="description column-description">' . $category->getDescription() . '</td>'; $out .= '<td class="slug column-slug">' . $category->getSlug() . '</td>'; $out .= '<td>'; /* * Genreate the category link token URL. */ $categoryFilterURL = $form->tokenURL('admin.php?page=connections&action=filter&category_id=' . $category->getId(), 'filter'); if ((int) $category->getCount() > 0) { $out .= '<strong>Count:</strong> ' . '<a href="' . $categoryFilterURL . '">' . $category->getCount() . '</a><br />'; } else { $out .= '<strong>Count:</strong> ' . $category->getCount() . '<br />'; } $out .= '<strong>ID:</strong> ' . $category->getId(); $out .= '</td>'; $out .= '</tr>'; return $out; }
/** * Renders the subject and log action items column. * * @access public * @since 8.3 * * @param array $log The log item data. * * @return string */ public function column_subject($log) { $form = new cnFormObjects(); $actions = array(); $out = ''; $viewURL = add_query_arg(array('action' => 'cn_log_email_view', 'log_id' => $log['id']), admin_url('admin.php')); $viewURL = esc_url($viewURL); $subject = esc_html($log['subject']); //$action = ; $deleteURL = $form->tokenURL(add_query_arg(array('page' => 'connections_tools', 'tab' => 'logs', 'type' => $this->type, 'cn-action' => 'delete_log', 'id' => $log['id']), self_admin_url('admin.php')), 'log_delete_' . $log['id']); $out .= '<strong><a class="row-title" href="' . $viewURL . '" title="' . esc_attr(sprintf(__('View “%s”', 'connections'), $subject)) . '">' . $subject . '</a></strong><br />'; $actions['delete'] = "<a class='delete-log' href='" . esc_url($deleteURL) . "'>" . __('Delete', 'connections') . "</a>"; $actions['view'] = '<a href="' . $viewURL . '">' . __('View', 'connections') . '</a>'; $out .= $this->row_actions($actions); return $out; }
function connectionsShowTemplatesPage() { /* * Check whether user can edit Settings */ if (!current_user_can('connections_manage_template')) { wp_die('<p id="error-page" style="-moz-background-clip:border; -moz-border-radius:11px; background:#FFFFFF none repeat scroll 0 0; border:1px solid #DFDFDF; color:#333333; display:block; font-size:12px; line-height:18px; margin:25px auto 20px; padding:1em 2em; text-align:center; width:700px">' . __('You do not have sufficient permissions to access this page.', 'connections') . '</p>'); } else { global $connections; // Purge the transient so the page is freshly scanned by the template API. delete_transient('cn_legacy_templates'); // cnTemplateFactory::$templates = new stdClass(); cnTemplateFactory::registerLegacy(); $form = new cnFormObjects(); $type = isset($_GET['type']) ? esc_attr($_GET['type']) : 'all'; $template = cnTemplateFactory::getCatalog($type); ?> <div class="wrap"> <?php echo get_screen_icon('connections'); ?> <h2>Connections : <?php _e('Templates', 'connections'); ?> <a class="button add-new-h2" href="http://connections-pro.com/templates/" target="_blank"><?php _e('Get More', 'connections'); ?> </a></h2> <ul class="subsubsub"> <li><a <?php if ($type === 'all') { echo 'class="current" '; } ?> href="admin.php?page=connections_templates&type=all"><?php _e('All', 'connections'); ?> </a> | </li> <li><a <?php if ($type === 'individual') { echo 'class="current" '; } ?> href="admin.php?page=connections_templates&type=individual"><?php _e('Individual', 'connections'); ?> </a> | </li> <li><a <?php if ($type === 'organization') { echo 'class="current" '; } ?> href="admin.php?page=connections_templates&type=organization"><?php _e('Organization', 'connections'); ?> </a> | </li> <li><a <?php if ($type === 'family') { echo 'class="current" '; } ?> href="admin.php?page=connections_templates&type=family"><?php _e('Family', 'connections'); ?> </a> | </li> <li><a <?php if ($type === 'anniversary') { echo 'class="current" '; } ?> href="admin.php?page=connections_templates&type=anniversary"><?php _e('Anniversary', 'connections'); ?> </a> | </li> <li><a <?php if ($type === 'birthday') { echo 'class="current" '; } ?> href="admin.php?page=connections_templates&type=birthday"><?php _e('Birthday', 'connections'); ?> </a></li> </ul> <br class="clear"> <table cellspacing="0" cellpadding="0" id="currenttheme"> <tbody> <tr> <td class="current_template"> <h2><?php _e('Current Template', 'connections'); ?> </h2> <div id="current-template"> <?php $slug = $connections->options->getActiveTemplate($type); $activeTemplate = cnTemplateFactory::getTemplate($slug); // var_dump( $activeTemplate ); if ($activeTemplate) { if ($activeTemplate->getThumbnail()) { $thumbnail = $activeTemplate->getThumbnail(); if (!empty($thumbnail['name'])) { echo '<div class="center-thumbnail"><img class="template-thumbnail" src="', $thumbnail['url'], '" /></div>'; } else { echo '<div class="center-thumbnail"><div class="template-thumbnail-none">', __('Thumbnail Not Available', 'connections'), '</div></div>'; } } if ($activeTemplate->getAuthorURL()) { $author = '<a title="' . __('Visit author\'s homepage.', 'connections') . '" href="' . $activeTemplate->getAuthorURL() . '">' . $activeTemplate->getAuthor() . '</a>'; } else { $author = $activeTemplate->getAuthor(); } echo '<h3>', $activeTemplate->getName(), ' ', $activeTemplate->getVersion(), ' by ', $author, '</h3>'; echo '<p class="theme-description">', $activeTemplate->getDescription(), '</p>'; // Remove the current template so it does not show in the available templates. unset($template->{$activeTemplate->getSlug()}); } else { echo '<h3 class="error"> Template ', esc_attr($slug), ' can not be found.</h3>'; } ?> </div> <div class="clear"></div> </td> <td class="template_instructions" colspan="2"> <p><strong><?php _e('Instructions', 'connections'); ?> :</strong></p> <p> <?php _e('By default the <code><a href="http://connections-pro.com/documentation/connections/shortcodes/shortcode-connections/">[connections]</a></code> shortcode will show all entries types. To change the template used when displaying all entry types, select the "All" tab and activate the template. When the <code><a href="http://connections-pro.com/documentation/connections/shortcodes/shortcode-connections/list_type/">list_type</a></code>shortcode option is used to filter the entries based on the entry type, the template for that entry type will be used. To change the template used for a specific entry type, select the appropriate tab and then activate the template. If multiple entry types are specified in the <code><a href="http://connections-pro.com/documentation/connections/shortcodes/shortcode-connections/list_type/">list_type</a></code> shortcode option, the template for the entry type listed first will be used to display the entry list.', 'connections'); ?> </p> <p> <?php _e('The <code><a href="http://connections-pro.com/documentation/connections/shortcodes/shortcode-upcoming-list/">[upcoming_list]</a></code> shortcode which displays the upcoming anniversaries and birthdays will be displayed with the template that is activated under their respective tabs.', 'connections'); ?> </p> <p> <?php _e('The current active template for each template type can be overridden by using the <code><a href="http://connections-pro.com/documentation/connections/shortcodes/shortcode-connections/template-option/">template</a></code> shortcode option.', 'connections'); ?> </p> </td> </tr> </tbody> </table> <table cellspacing="0" cellpadding="0" id="availablethemes"> <tbody> <tr> <td class="current_template" colspan="3"> <h2><?php _e('Available Templates', 'connections'); ?> </h2> </td> </tr> <?php $slugs = array_keys((array) $template); natcasesort($slugs); $table = array(); $rows = ceil(count($slugs) / 3); for ($row = 1; $row <= $rows; $row++) { for ($col = 1; $col <= 3; $col++) { $table[$row][$col] = array_shift($slugs); } } foreach ($table as $row => $cols) { ?> <tr> <?php foreach ($cols as $col => $slug) { $activateTokenURL = ''; $deleteTokenURL = ''; $class = array('available-theme'); if ($row == 1) { $class[] = 'top'; } if ($row == $rows) { $class[] = 'bottom'; } if ($col == 1) { $class[] = 'left'; } if ($col == 3) { $class[] = 'right'; } ?> <td class="<?php echo join(' ', $class); ?> "> <?php if (!isset($template->{$slug})) { continue; } // var_dump( $template->{ $slug } ); if ($template->{$slug}->getThumbnail()) { $thumbnail = $template->{$slug}->getThumbnail(); if (!empty($thumbnail['name'])) { echo '<div class="center-thumbnail"><img class="template-thumbnail" src="', $thumbnail['url'], '" width="300" height="225"></div>'; } else { echo '<div class="center-thumbnail"><div class="template-thumbnail-none" style="width: 300px; height: 225px"><p>', __('Thumbnail Not Available', 'connections'), '</p></div></div>'; } } if ($template->{$slug}->getAuthorURL()) { $author = '<a title="Visit author\'s homepage." href="' . $template->{$slug}->getAuthorURL() . '">' . $template->{$slug}->getAuthor() . '</a>'; } else { $author = $template->{$slug}->getAuthor(); } echo '<h3>', $template->{$slug}->getName(), ' ', $template->{$slug}->getVersion(), ' by ', $author, '</h3>'; echo '<p class="description">', $template->{$slug}->getDescription(), '</p>'; echo '<p>', __('Shortcode Override:', 'connections'), '<code> template="', $slug, '"</code></p>'; ?> <span class="action-links"> <?php $activateTokenURL = $form->tokenURL('admin.php?cn-action=activate_template&type=' . $type . '&template=' . $template->{$slug}->getSlug(), 'activate_' . $template->{$slug}->getSlug()); if ($template->{$slug}->isCustom() === TRUE && $template->{$slug}->isLegacy() === TRUE) { $deleteTokenURL = $form->tokenURL('admin.php?cn-action=delete_template&type=' . $type . '&template=' . $template->{$slug}->getSlug(), 'delete_' . $template->{$slug}->getSlug()); } ?> <a class="button-primary" href="<?php echo esc_attr($activateTokenURL); ?> " title="Activate '<?php echo esc_attr($template->{$slug}->getName()); ?> '"><?php _e('Activate', 'connections'); ?> </a> <?php if (!empty($deleteTokenURL)) { ?> | <a class="button button-warning" href="<?php echo esc_attr($deleteTokenURL); ?> " title="Delete '<?php echo esc_attr($template->{$slug}->getName()); ?> '" onclick="return confirm('You are about to delete this theme \'<?php echo esc_attr($template->{$slug}->getName()); ?> \'\n \'Cancel\' to stop, \'OK\' to delete.');">Delete</a> <?php } ?> </span> <?php if ($template->{$slug}->isCustom() === FALSE) { echo '<p class="description">', __('This a core template and can not be deleted.', 'connections'), '</p>'; } else { if ($template->{$slug}->isCustom() === TRUE && $template->{$slug}->isLegacy() === FALSE) { echo '<p class="description">', __('This template is a plugin. You can deactivate and delete the template from the Plugins admin page.', 'connections'), '</p>'; } } } ?> </td> </tr> <?php } ?> </tbody> </table> <?php if (file_exists(CN_CUSTOM_TEMPLATE_PATH) && is_writeable(CN_CUSTOM_TEMPLATE_PATH)) { ?> <table cellspacing="0" cellpadding="0" id="installthemes"> <tbody> <tr> <td class="install_template" colspan="3"> <h2><?php _e('Install Legacy Template', 'connections'); ?> </h2> <p><?php printf(__("If you puchased your template after 3.25.2013, please follow these <a href='%s'>installation instructions</a>. If you are upgrading your template purchased prior to 3.25.2013, please take note of the special upgrade instructions found on the same page.", 'connections'), 'http://connections-pro.com/documentation/plugin/install/templates/'); ?> </p> <?php $formAttr = array('action' => '', 'method' => 'post', 'enctype' => 'multipart/form-data'); $form->open($formAttr); $form->tokenField('install_template'); ?> <p> <input type="hidden" name="cn-action" value="install_template"/> <label for='template'><?php _e('Select Template:', 'connections'); ?> <input type='file' value='' name='template' size='25' /> </label> <input type="submit" value="<?php _e('Install Now', 'connections'); ?> " class="button"> </p> <?php $form->close(); ?> </td> </tr> </tbody> </table> <?php } ?> </div> <?php } }
function connectionsShowViewPage() { global $wpdb, $connections; if (isset($_GET['action'])) { $action = $_GET['action']; } else { $action = NULL; } ?> <div class="wrap"> <div class="icon32" id="icon-connections"><br/></div> <h2>Connections</h2> <?php $connections->displayMessages(); switch ($action) { case 'add_new': /* * Check whether current user can add an entry. */ if (current_user_can('connections_add_entry')) { add_meta_box('metabox-name', 'Name', array(&$form, 'metaboxName'), $connections->pageHook->manage, 'normal', 'high'); $form = new cnFormObjects(); $entry = new cnEntry(); echo '<div id="poststuff" class="metabox-holder has-right-sidebar">'; echo '<h2><a name="new"></a>Add Entry</h2>'; $attr = array('action' => 'admin.php?page=connections&action=add', 'method' => 'post', 'enctype' => 'multipart/form-data'); $form->open($attr); $form->tokenField('add_entry'); wp_nonce_field('howto-metaboxes-general'); wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', false); wp_nonce_field('meta-box-order', 'meta-box-order-nonce', false); echo '<input type="hidden" name="action" value="save_howto_metaboxes_general" />'; echo '<div id="side-info-column" class="inner-sidebar">'; do_meta_boxes($connections->pageHook->manage, 'side', $entry); echo '</div>'; echo '<div id="post-body" class="has-sidebar">'; echo '<div id="post-body-content" class="has-sidebar-content">'; do_meta_boxes($connections->pageHook->manage, 'normal', $entry); echo '</div>'; echo '</div>'; $form->close(); echo '</div>'; ?> <script type="text/javascript"> //<![CDATA[ jQuery(document).ready( function($) { // close postboxes that should be closed $('.if-js-closed').removeClass('if-js-closed').addClass('closed'); // postboxes setup postboxes.add_postbox_toggles('<?php echo $connections->pageHook->manage; ?> '); }); //]]> </script> <?php unset($entry); } else { $connections->setErrorMessage('capability_add'); } break; case 'copy': /* * Check whether current user can add an entry. */ if (current_user_can('connections_add_entry')) { $id = esc_attr($_GET['id']); check_admin_referer('entry_copy_' . $id); add_meta_box('metabox-name', 'Name', array(&$form, 'metaboxName'), $connections->pageHook->manage, 'normal', 'high'); $form = new cnFormObjects(); $entry = new cnEntry($connections->retrieve->entry($id)); echo '<div id="poststuff" class="metabox-holder has-right-sidebar">'; echo '<h2><a name="new"></a>Add Entry</h2>'; $attr = array('action' => 'admin.php?page=connections&action=add&id=' . $id, 'method' => 'post', 'enctype' => 'multipart/form-data'); $form->open($attr); $form->tokenField('add_entry'); wp_nonce_field('howto-metaboxes-general'); wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', false); wp_nonce_field('meta-box-order', 'meta-box-order-nonce', false); echo '<input type="hidden" name="action" value="save_howto_metaboxes_general" />'; echo '<div id="side-info-column" class="inner-sidebar">'; do_meta_boxes($connections->pageHook->manage, 'side', $entry); echo '</div>'; echo '<div id="post-body" class="has-sidebar">'; echo '<div id="post-body-content" class="has-sidebar-content">'; do_meta_boxes($connections->pageHook->manage, 'normal', $entry); echo '</div>'; echo '</div>'; $form->close(); echo '</div>'; ?> <script type="text/javascript"> //<![CDATA[ jQuery(document).ready( function($) { // close postboxes that should be closed $('.if-js-closed').removeClass('if-js-closed').addClass('closed'); // postboxes setup postboxes.add_postbox_toggles('<?php echo $connections->pageHook->manage; ?> '); }); //]]> </script> <?php unset($entry); } else { $connections->setErrorMessage('capability_add'); } break; case 'edit': /* * Check whether the current user can edit entries. */ if (current_user_can('connections_edit_entry')) { $id = esc_attr($_GET['id']); check_admin_referer('entry_edit_' . $id); add_meta_box('metabox-name', 'Name', array(&$form, 'metaboxName'), $connections->pageHook->manage, 'normal', 'high'); $form = new cnFormObjects(); $entry = new cnEntry($connections->retrieve->entry($id)); echo '<div id="poststuff" class="metabox-holder has-right-sidebar">'; echo '<h2><a name="new"></a>Edit Entry</h2>'; $attr = array('action' => 'admin.php?page=connections&action=update&id=' . $id, 'method' => 'post', 'enctype' => 'multipart/form-data'); $form->open($attr); $form->tokenField('update_entry'); wp_nonce_field('howto-metaboxes-general'); wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', false); wp_nonce_field('meta-box-order', 'meta-box-order-nonce', false); echo '<input type="hidden" name="action" value="save_howto_metaboxes_general" />'; echo '<div id="side-info-column" class="inner-sidebar">'; do_meta_boxes($connections->pageHook->manage, 'side', $entry); echo '</div>'; echo '<div id="post-body" class="has-sidebar">'; echo '<div id="post-body-content" class="has-sidebar-content">'; do_meta_boxes($connections->pageHook->manage, 'normal', $entry); echo '</div>'; echo '</div>'; $form->close(); echo '</div>'; ?> <script type="text/javascript"> //<![CDATA[ jQuery(document).ready( function($) { // close postboxes that should be closed $('.if-js-closed').removeClass('if-js-closed').addClass('closed'); // postboxes setup postboxes.add_postbox_toggles('<?php echo $connections->pageHook->manage; ?> '); }); //]]> </script> <?php unset($entry); } else { $connections->setErrorMessage('capability_edit'); } break; default: $form = new cnFormObjects(); $categoryObjects = new cnCategoryObjects(); /* * Check whether user can view the entry list */ if (current_user_can('connections_view_entry_list')) { ?> <?php $retrieveAttr['list_type'] = $connections->currentUser->getFilterEntryType(); $retrieveAttr['category'] = $connections->currentUser->getFilterCategory(); $retrieveAttr['visibility'] = $connections->currentUser->getFilterVisibility(); $results = $connections->retrieve->entries($retrieveAttr); //print_r($connections->lastQuery); ?> <form action="admin.php?page=connections&action=do" method="post"> <?php $form->tokenField('bulk_action'); ?> <div class="tablenav"> <div class="alignleft actions"> <?php echo '<select class="postform" id="category" name="category">'; echo '<option value="-1">Show All Categories</option>'; echo $categoryObjects->buildCategoryRow('option', $connections->retrieve->categories(), $level, $connections->currentUser->getFilterCategory()); echo '</select>'; echo $form->buildSelect('entry_type', array('all' => 'Show All Enties', 'individual' => 'Show Individuals', 'organization' => 'Show Organizations', 'family' => 'Show Families'), $connections->currentUser->getFilterEntryType()); ?> <?php /* * Builds the visibilty select list base on current user capabilities. */ if (current_user_can('connections_view_public') || $connections->options->getAllowPublic()) { $visibilitySelect['public'] = 'Show Public'; } if (current_user_can('connections_view_private')) { $visibilitySelect['private'] = 'Show Private'; } if (current_user_can('connections_view_unlisted')) { $visibilitySelect['unlisted'] = 'Show Unlisted'; } if (isset($visibilitySelect)) { /* * Add the 'Show All' option and echo the list. */ $showAll['all'] = 'Show All'; $visibilitySelect = $showAll + $visibilitySelect; echo $form->buildSelect('visibility_type', $visibilitySelect, $connections->currentUser->getFilterVisibility()); } ?> <input id="doaction" class="button-secondary action" type="submit" name="filter" value="Filter" /> <input type="hidden" name="formId" value="do_action" /> <input type="hidden" name="token" value="<?php echo $form->token("do_action"); ?> " /> </div> </div> <div class="clear"></div> <div class="tablenav"> <?php if (current_user_can('connections_edit_entry') || current_user_can('connections_delete_entry')) { echo '<div class="alignleft actions">'; echo '<select name="action">'; echo '<option value="" SELECTED>Bulk Actions</option>'; $bulkActions = array(); if (current_user_can('connections_edit_entry')) { $bulkActions['public'] = 'Set Public'; $bulkActions['private'] = 'Set Private'; $bulkActions['unlisted'] = 'Set Unlisted'; } if (current_user_can('connections_delete_entry')) { $bulkActions['delete'] = 'Delete'; } $bulkActions = apply_filters('cn_view_bulk_actions', $bulkActions); foreach ($bulkActions as $action => $string) { echo '<option value="', $action, '">', $string, '</option>'; } echo '</select>'; echo '<input id="doaction" class="button-secondary action" type="submit" name="doaction" value="Apply" />'; echo '</div>'; } ?> <div class="tablenav-pages"> <?php echo '<span class="displaying-num">Displaying ', $connections->resultCount, ' of ', $connections->recordCount, ' records.</span>'; /* * Dynamically builds the alpha index based on the available entries. */ $previousLetter = NULL; $setAnchor = NULL; foreach ($results as $row) { $entry = new cnEntry($row); $currentLetter = strtoupper(mb_substr($entry->getSortColumn(), 0, 1)); if ($currentLetter != $previousLetter) { $setAnchor .= '<a href="#' . $currentLetter . '">' . $currentLetter . '</a> '; $previousLetter = $currentLetter; } } echo $setAnchor; ?> </div> </div> <div class="clear"></div> <table cellspacing="0" class="widefat connections"> <thead> <tr> <th class="manage-column column-cb check-column" id="cb" scope="col"><input type="checkbox"/></th> <th class="col" style="width:10%;"></th> <th scope="col" colspan="2" style="width:40%;">Name</th> <th scope="col" style="width:30%;">Categories</th> <th scope="col" style="width:20%;">Last Modified</th> </tr> </thead> <tfoot> <tr> <th class="manage-column column-cb check-column" scope="col"><input type="checkbox"/></th> <th class="col" style="width:10%;"></th> <th scope="col" colspan="2" style="width:40%;">Name</th> <th scope="col" style="width:30%;">Categories</th> <th scope="col" style="width:20%;">Last Modified</th> </tr> </tfoot> <tbody> <?php foreach ($results as $row) { /** * @TODO: Use the Output class to show entry details. */ $entry = new cnvCard($row); $vCard =& $entry; $currentLetter = strtoupper(mb_substr($entry->getSortColumn(), 0, 1)); if ($currentLetter != $previousLetter) { $setAnchor = "<a name='{$currentLetter}'></a>"; $previousLetter = $currentLetter; } else { $setAnchor = null; } /* * Genreate the edit, copy and delete URLs with nonce tokens. */ $editTokenURL = $form->tokenURL('admin.php?page=connections&action=edit&id=' . $entry->getId(), 'entry_edit_' . $entry->getId()); $copyTokenURL = $form->tokenURL('admin.php?page=connections&action=copy&id=' . $entry->getId(), 'entry_copy_' . $entry->getId()); $deleteTokenURL = $form->tokenURL('admin.php?page=connections&action=delete&id=' . $entry->getId(), 'entry_delete_' . $entry->getId()); echo "<tr id='row-" . $entry->getId() . "' class='parent-row'>"; echo "<th class='check-column' scope='row'><input type='checkbox' value='" . $entry->getId() . "' name='entry[]'/></th> \n"; echo '<td>'; echo $entry->getThumbnailImage(array('place_holder' => TRUE)); echo '</td>'; echo '<td colspan="2">'; if ($setAnchor) { echo $setAnchor; } echo '<div style="float:right"><a href="#wphead" title="Return to top."><img src="' . WP_PLUGIN_URL . '/connections/images/uparrow.gif" /></a></div>'; if (current_user_can('connections_edit_entry')) { echo '<a class="row-title" title="Edit ' . $entry->getFullFirstLastName() . '" href="' . $editTokenURL . '"> ' . $entry->getFullLastFirstName() . '</a><br />'; } else { echo '<strong>' . $entry->getFullLastFirstName() . '</strong>'; } echo '<div class="row-actions">'; echo '<a class="detailsbutton" id="row-' . $entry->getId() . '">Show Details</a> | '; echo $vCard->download(array('anchorText' => 'vCard')) . ' | '; if (current_user_can('connections_edit_entry')) { echo '<a class="editbutton" href="' . $editTokenURL . '" title="Edit ' . $entry->getFullFirstLastName() . '">Edit</a> | '; } if (current_user_can('connections_add_entry')) { echo '<a class="copybutton" href="' . $copyTokenURL . '" title="Copy ' . $entry->getFullFirstLastName() . '">Copy</a> | '; } if (current_user_can('connections_delete_entry')) { echo '<a class="submitdelete" onclick="return confirm(\'You are about to delete this entry. \\\'Cancel\\\' to stop, \\\'OK\\\' to delete\');" href="' . $deleteTokenURL . '" title="Delete ' . $entry->getFullFirstLastName() . '">Delete</a>'; } echo '</div>'; echo "</td> \n"; echo "<td > \n"; $categories = $entry->getCategory(); if (!empty($categories)) { $i = 0; foreach ($categories as $category) { /* * Genreate the category link token URL. */ $categoryFilterURL = $form->tokenURL('admin.php?page=connections&action=filter&category_id=' . $category->term_id, 'filter'); echo '<a href="' . $categoryFilterURL . '">' . $category->name . '</a>'; $i++; if (count($categories) > $i) { echo ', '; } } unset($i); } echo "</td> \n"; echo '<td >'; echo '<strong>On:</strong> ' . $entry->getFormattedTimeStamp('m/d/Y g:ia') . '<br />'; echo '<strong>By:</strong> ' . $entry->getEditedBy() . '<br />'; echo '<strong>Visibility:</strong> ' . $entry->displayVisibiltyType(); echo "</td> \n"; echo "</tr> \n"; echo "<tr class='child-row-" . $entry->getId() . " entrydetails' id='contact-" . $entry->getId() . "-detail' style='display:none;'>"; echo "<td colspan='2' > </td> \n"; //echo "<td > </td> \n"; echo "<td colspan='2'>"; /* * Check if the entry has relations. Count the relations and then cycle thru each relation. * Before the out check that the related entry still exists. If it does and the current user * has edit capabilites the edit link will be displayed. If the user does not have edit capabilities * the only the relation will be shown. After all relations have been output insert a <br> * for spacing [@TODO: NOTE: this should be done with styles]. */ if ($entry->getFamilyMembers()) { $count = count($entry->getFamilyMembers()); $i = 0; foreach ($entry->getFamilyMembers() as $key => $value) { $relation = new cnEntry(); $relation->set($key); $editRelationTokenURL = $form->tokenURL('admin.php?page=connections&action=edit&id=' . $relation->getId(), 'entry_edit_' . $relation->getId()); if ($relation->getId()) { if (current_user_can('connections_edit_entry')) { echo '<strong>' . $connections->options->getFamilyRelation($value) . ':</strong> ' . '<a href="' . $editRelationTokenURL . '" title="Edit ' . $relation->getFullFirstLastName() . '">' . $relation->getFullFirstLastName() . '</a><br />' . "\n"; } else { echo '<strong>' . $connections->options->getFamilyRelation($value) . ':</strong> ' . $relation->getFullFirstLastName() . '<br />' . "\n"; } } if ($count - 1 == $i) { echo '<br />'; } // Insert a break after all connections are listed. $i++; unset($relation); } unset($i); unset($count); } if ($entry->getContactFirstName() || $entry->getContactLastName()) { echo '<strong>Contact:</strong> ' . $entry->getContactFirstName() . ' ' . $entry->getContactLastName() . '<br />'; } if ($entry->getTitle()) { echo '<strong>Title:</strong> ' . $entry->getTitle() . '<br />'; } if ($entry->getOrganization() && $entry->getEntryType() !== 'organization') { echo '<strong>Organization:</strong> ' . $entry->getOrganization() . '<br />'; } if ($entry->getDepartment()) { echo '<strong>Department:</strong> ' . $entry->getDepartment() . '<br />'; } if ($entry->getAddresses()) { foreach ($entry->getAddresses() as $address) { echo "<div style='margin-bottom: 10px;'>"; if ($address->name != NULL || $address->type) { echo "<strong>" . $address->name . "</strong><br />"; } //The OR is for compatiblity for 0.2.24 and under if ($address->line_one != NULL) { echo $address->line_one . "<br />"; } if ($address->line_two != NULL) { echo $address->line_two . "<br />"; } if ($address->city != NULL) { echo $address->city . " "; } if ($address->state != NULL) { echo $address->state . " "; } if ($address->zipcode != NULL) { echo $address->zipcode . "<br />"; } if ($address->country != NULL) { echo $address->country; } echo "</div>"; } } echo "</td> \n"; echo "<td>"; if ($entry->getEmailAddresses()) { foreach ($entry->getEmailAddresses() as $emailRow) { if ($emailRow->address != null) { echo "<strong>" . $emailRow->name . ":</strong><br /><a href='mailto:" . $emailRow->address . "'>" . $emailRow->address . "</a><br /><br />"; } } } if ($entry->getIm()) { foreach ($entry->getIm() as $imRow) { if ($imRow->id != "") { echo "<strong>" . $imRow->name . ":</strong><br />" . $imRow->id . "<br /><br />"; } } } if ($entry->getSocialMedia()) { foreach ($entry->getSocialMedia() as $socialNetwork) { if ($socialNetwork->id != "") { echo "<strong>" . $socialNetwork->name . ":</strong><br /><a target='_blank' href='" . $socialNetwork->url . "'>" . $socialNetwork->url . "</a><br /><br />"; } } } if ($entry->getWebsites()) { foreach ($entry->getWebsites() as $website) { if ($website->url != "") { echo "<strong>Website:</strong><br /><a target='_blank' href='" . $website->url . "'>" . $website->url . "</a><br /><br />"; } } } if ($entry->getPhoneNumbers()) { foreach ($entry->getPhoneNumbers() as $phone) { if ($phone->number != "") { echo "<strong>" . $phone->name . "</strong>: " . $phone->number . "<br />"; } } } echo "</td> \n"; echo "<td>"; if ($entry->getBirthday()) { echo "<strong>Birthday:</strong><br />" . $entry->getBirthday() . "<br /><br />"; } if ($entry->getAnniversary()) { echo "<strong>Anniversary:</strong><br />" . $entry->getAnniversary(); } echo "</td> \n"; echo "</tr> \n"; echo "<tr class='child-row-" . $entry->getId() . " entrynotes' id='contact-" . $entry->getId() . "-detail-notes' style='display:none;'>"; echo "<td colspan='2'> </td> \n"; //echo "<td > </td> \n"; echo "<td colspan='3'>"; if ($entry->getBio()) { echo "<strong>Bio:</strong> " . $entry->getBio() . "<br />"; } else { echo " "; } if ($entry->getNotes()) { echo "<strong>Notes:</strong> " . $entry->getNotes(); } else { echo " "; } echo "</td> \n"; echo '<td> <strong>Entry ID:</strong> ' . $entry->getId() . '<br />' . ' <strong>Date Added:</strong> ' . $entry->getDateAdded('m/d/Y g:ia') . '<br /> <strong>Added By:</strong> ' . $entry->getAddedBy() . '<br />'; if (!$entry->getImageLinked()) { echo "<br /><strong>Image Linked:</strong> No"; } else { echo "<br /><strong>Image Linked:</strong> Yes"; } if ($entry->getImageLinked() && $entry->getImageDisplay()) { echo "<br /><strong>Display:</strong> Yes"; } else { echo "<br /><strong>Display:</strong> No"; } echo "</td> \n"; echo "</tr> \n"; } ?> </tbody> </table> </form> <p style="font-size:smaller; text-align:center">This is version <?php echo $connections->options->getVersion(), '-', $connections->options->getDBVersion(); ?> of Connections.</p> <form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="text-align:center"> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="hosted_button_id" value="5070255"> <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"> </form> <script type="text/javascript"> /* <![CDATA[ */ (function($){ $(document).ready(function(){ $('#doaction, #doaction2').click(function(){ if ( $('select[name^="action"]').val() == 'delete' ) { var m = 'You are about to delete the selected entry(ies).\n \'Cancel\' to stop, \'OK\' to delete.'; return showNotice.warn(m); } }); }); })(jQuery); /* ]]> */ </script> <?php } else { $connections->setErrorMessage('capability_view_entry_list'); } break; } ?> </div> <?php }
function connectionsShowViewPage($action = NULL) { // Grab an instance of the Connections object. $instance = Connections_Directory(); $queryVars = array(); echo '<div class="wrap">'; switch ($action) { case 'add_entry': echo '<h2>Connections : ', __('Add Entry', 'connections'), '</h2>'; /* * Check whether current user can add an entry. */ if (current_user_can('connections_add_entry') || current_user_can('connections_add_entry_moderated')) { $form = new cnFormObjects(); $entry = new cnOutput(); $attr = array('id' => 'cn-form', 'method' => 'post', 'enctype' => 'multipart/form-data'); $form->open($attr); $field = array('id' => 'metabox-name', 'title' => __('Name', 'connections'), 'context' => 'normal', 'priority' => 'high', 'callback' => array('cnEntryMetabox', 'name')); cnMetabox_Render::add($instance->pageHook->add, $field); echo '<div id="poststuff">'; echo '<div id="post-body" class="metabox-holder columns-' . (1 == get_current_screen()->get_columns() ? '1' : '2') . '">'; wp_nonce_field('cn-manage-metaboxes'); wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', FALSE); wp_nonce_field('meta-box-order', 'meta-box-order-nonce', FALSE); $form->tokenField('add_entry', FALSE, '_cn_wpnonce', FALSE); do_action('cn_admin_form_add_entry_before', $entry, $form); echo '<div id="postbox-container-1" class="postbox-container">'; echo '<div id="side-sortables" class="meta-box-sortables ui-sortable">'; do_meta_boxes($instance->pageHook->add, 'side', $entry); echo '</div> <!-- #side-sortables -->'; echo '</div> <!-- #postbox-container-1 -->'; echo '<div id="postbox-container-2" class="postbox-container">'; echo '<div id="normal-sortables" class="meta-box-sortables ui-sortable">'; do_meta_boxes($instance->pageHook->add, 'normal', $entry); echo '</div> <!-- #normal-sortables -->'; echo '</div> <!-- #postbox-container-2 -->'; do_action('cn_admin_form_add_entry_after', $entry, $form); echo '</div> <!-- #post-body -->'; echo '<br class="clear">'; echo '</div> <!-- #poststuff -->'; $form->close(); unset($entry); } else { cnMessage::render('error', __('You are not authorized to add entries. Please contact the admin if you received this message in error.', 'connections')); } break; case 'copy_entry': echo '<div class="wrap">'; echo '<h2>Connections : ', __('Copy Entry', 'connections'), '</h2>'; /* * Check whether current user can add an entry. */ if (current_user_can('connections_add_entry') || current_user_can('connections_add_entry_moderated')) { $id = esc_attr($_GET['id']); check_admin_referer('entry_copy_' . $id); $form = new cnFormObjects(); $entry = new cnOutput($instance->retrieve->entry($id)); $attr = array('id' => 'cn-form', 'method' => 'post', 'enctype' => 'multipart/form-data'); $form->open($attr); $field = array('id' => 'metabox-name', 'title' => __('Name', 'connections'), 'context' => 'normal', 'priority' => 'high', 'callback' => array('cnEntryMetabox', 'name')); cnMetabox_Render::add($instance->pageHook->manage, $field); echo '<div id="poststuff">'; echo '<div id="post-body" class="metabox-holder columns-' . (1 == get_current_screen()->get_columns() ? '1' : '2') . '">'; wp_nonce_field('cn-manage-metaboxes'); wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', FALSE); wp_nonce_field('meta-box-order', 'meta-box-order-nonce', FALSE); $form->tokenField('add_entry', FALSE, '_cn_wpnonce', FALSE); do_action('cn_admin_form_copy_entry_before', $entry, $form); echo '<div id="postbox-container-1" class="postbox-container">'; echo '<div id="side-sortables" class="meta-box-sortables ui-sortable">'; do_meta_boxes($instance->pageHook->manage, 'side', $entry); echo '</div> <!-- #side-sortables -->'; echo '</div> <!-- #postbox-container-1 -->'; echo '<div id="postbox-container-2" class="postbox-container">'; echo '<div id="normal-sortables" class="meta-box-sortables ui-sortable">'; do_meta_boxes($instance->pageHook->manage, 'normal', $entry); echo '</div> <!-- #normal-sortables -->'; echo '</div> <!-- #postbox-container-2 -->'; do_action('cn_admin_form_copy_entry_after', $entry, $form); echo '</div> <!-- #post-body -->'; echo '<br class="clear">'; echo '</div> <!-- #poststuff -->'; $form->close(); unset($entry); } else { cnMessage::render('error', __('You are not authorized to add entries. Please contact the admin if you received this message in error.', 'connections')); } break; case 'edit_entry': echo '<h2>Connections : ', __('Edit Entry', 'connections'), '</h2>'; /* * Check whether the current user can edit entries. */ if (current_user_can('connections_edit_entry') || current_user_can('connections_edit_entry_moderated')) { $id = esc_attr($_GET['id']); check_admin_referer('entry_edit_' . $id); $form = new cnFormObjects(); $entry = new cnOutput($instance->retrieve->entry($id)); $attr = array('id' => 'cn-form', 'action' => 'admin.php?connections_process=true&process=manage&action=update&id=' . $id, 'method' => 'post', 'enctype' => 'multipart/form-data'); $form->open($attr); $field = array('id' => 'metabox-name', 'title' => __('Name', 'connections'), 'context' => 'normal', 'priority' => 'high', 'callback' => array('cnEntryMetabox', 'name')); cnMetabox_Render::add($instance->pageHook->manage, $field); echo '<div id="poststuff">'; echo '<div id="post-body" class="metabox-holder columns-' . (1 == get_current_screen()->get_columns() ? '1' : '2') . '">'; wp_nonce_field('cn-manage-metaboxes'); wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', FALSE); wp_nonce_field('meta-box-order', 'meta-box-order-nonce', FALSE); $form->tokenField('update_entry', FALSE, '_cn_wpnonce', FALSE); do_action('cn_admin_form_edit_entry_before', $entry, $form); echo '<div id="postbox-container-1" class="postbox-container">'; echo '<div id="side-sortables" class="meta-box-sortables ui-sortable">'; do_meta_boxes($instance->pageHook->manage, 'side', $entry); echo '</div> <!-- #side-sortables -->'; echo '</div> <!-- #postbox-container-1 -->'; echo '<div id="postbox-container-2" class="postbox-container">'; echo '<div id="normal-sortables" class="meta-box-sortables ui-sortable">'; do_meta_boxes($instance->pageHook->manage, 'normal', $entry); echo '</div> <!-- #normal-sortables -->'; echo '</div> <!-- #postbox-container-2 -->'; do_action('cn_admin_form_edit_entry_after', $entry, $form); echo '</div> <!-- #post-body -->'; echo '<br class="clear">'; echo '</div> <!-- #poststuff -->'; $form->close(); unset($entry); } else { cnMessage::render('error', __('You are not authorized to edit entries. Please contact the admin if you received this message in error.', 'connections')); } break; default: $form = new cnFormObjects(); $page = $instance->currentUser->getFilterPage('manage'); $offset = ($page->current - 1) * $page->limit; echo '<div class="wrap">'; echo get_screen_icon('connections'); echo '<h2>Connections : ', __('Manage', 'connections'), ' <a class="button add-new-h2" href="admin.php?page=connections_add">', __('Add New', 'connections'), '</a></h2>'; /* * Check whether user can view the entry list */ if (current_user_can('connections_manage')) { $retrieveAttr['list_type'] = $instance->currentUser->getFilterEntryType(); $retrieveAttr['category'] = $instance->currentUser->getFilterCategory(); $retrieveAttr['char'] = isset($_GET['cn-char']) && 0 < strlen($_GET['cn-char']) ? $_GET['cn-char'] : ''; $retrieveAttr['visibility'] = $instance->currentUser->getFilterVisibility(); $retrieveAttr['status'] = $instance->currentUser->getFilterStatus(); $retrieveAttr['limit'] = $page->limit; $retrieveAttr['offset'] = $offset; if (isset($_GET['s']) && !empty($_GET['s'])) { $retrieveAttr['search_terms'] = $_GET['s']; } $results = $instance->retrieve->entries($retrieveAttr); // print_r($instance->lastQuery); ?> <?php if (current_user_can('connections_edit_entry')) { ?> <ul class="subsubsub"> <?php $statuses = array('all' => __('All', 'connections'), 'approved' => __('Approved', 'connections'), 'pending' => __('Moderate', 'connections')); foreach ($statuses as $key => $status) { $subsubsub[] = sprintf('<li><a%1$shref="%2$s">%3$s</a> <span class="count">(%4$d)</span></li>', $instance->currentUser->getFilterStatus() == $key ? ' class="current" ' : ' ', esc_url($form->tokenURL(add_query_arg(array('page' => 'connections_manage', 'cn-action' => 'filter', 'status' => $key)), 'filter')), $status, cnRetrieve::recordCount(array('status' => $key))); } echo implode(' | ', $subsubsub); ?> </ul> <?php } ?> <form method="post"> <p class="search-box"> <label class="screen-reader-text" for="post-search-input"><?php _e('Search Entries', 'connections'); ?> :</label> <input type="search" id="entry-search-input" name="s" value="<?php if (isset($_GET['s']) && !empty($_GET['s'])) { echo $_GET['s']; } ?> " /> <input type="submit" name="" id="search-submit" class="button" value="<?php _e('Search Entries', 'connections'); ?> " /> </p> <?php $form->tokenField('cn_manage_actions'); ?> <input type="hidden" name="cn-action" value="manage_actions"/> <div class="tablenav"> <div class="alignleft actions"> <?php cnTemplatePart::walker('term-select', array('name' => 'category', 'show_option_all' => __('Show All Categories', 'connections'), 'hide_empty' => FALSE, 'hierarchical' => TRUE, 'show_count' => FALSE, 'orderby' => 'name', 'selected' => $instance->currentUser->getFilterCategory())); echo $form->buildSelect('entry_type', array('all' => __('Show All Entries', 'connections'), 'individual' => __('Show Individuals', 'connections'), 'organization' => __('Show Organizations', 'connections'), 'family' => __('Show Families', 'connections')), $instance->currentUser->getFilterEntryType()); /* * Builds the visibilty select list base on current user capabilities. */ if (current_user_can('connections_view_public') || $instance->options->getAllowPublic()) { $visibilitySelect['public'] = __('Show Public', 'connections'); } if (current_user_can('connections_view_private')) { $visibilitySelect['private'] = __('Show Private', 'connections'); } if (current_user_can('connections_view_unlisted')) { $visibilitySelect['unlisted'] = __('Show Unlisted', 'connections'); } if (isset($visibilitySelect)) { /* * Add the 'Show All' option and echo the list. */ $showAll['all'] = __('Show All', 'connections'); $visibilitySelect = $showAll + $visibilitySelect; echo $form->buildSelect('visibility_type', $visibilitySelect, $instance->currentUser->getFilterVisibility()); } ?> <input class="button-secondary action" type="submit" name="filter" value="Filter"/> </div> <div class="tablenav-pages"> <?php echo '<span class="displaying-num">' . sprintf(__('Displaying %1$d of %2$d entries.', 'connections'), $instance->resultCount, $instance->resultCountNoLimit) . '</span>'; /* * // START --> Pagination * * Grab the pagination data again incase a filter reset the values * or the user input an invalid number which the retrieve query would have reset. */ $page = $instance->currentUser->getFilterPage('manage'); $pageCount = ceil($instance->resultCountNoLimit / $page->limit); if ($pageCount > 1) { $pageDisabled = array(); $pageFilterURL = array(); $pageValue = array(); $currentPageURL = add_query_arg(array('page' => FALSE, 'cn-action' => 'filter')); $pageValue['first_page'] = 1; $pageValue['previous_page'] = $page->current - 1 >= 1 ? $page->current - 1 : 1; $pageValue['next_page'] = $page->current + 1 <= $pageCount ? $page->current + 1 : $pageCount; $pageValue['last_page'] = $pageCount; $page->current > 1 ? $pageDisabled['first_page'] = '' : ($pageDisabled['first_page'] = ' disabled'); $page->current - 1 >= 1 ? $pageDisabled['previous_page'] = '' : ($pageDisabled['previous_page'] = ' disabled'); $page->current + 1 <= $pageCount ? $pageDisabled['next_page'] = '' : ($pageDisabled['next_page'] = ' disabled'); $page->current < $pageCount ? $pageDisabled['last_page'] = '' : ($pageDisabled['last_page'] = ' disabled'); /* * Genreate the page link token URL. */ $pageFilterURL['first_page'] = esc_url($form->tokenURL(add_query_arg(array('pg' => $pageValue['first_page']), $currentPageURL), 'filter')); $pageFilterURL['previous_page'] = esc_url($form->tokenURL(add_query_arg(array('pg' => $pageValue['previous_page']), $currentPageURL), 'filter')); $pageFilterURL['next_page'] = esc_url($form->tokenURL(add_query_arg(array('pg' => $pageValue['next_page']), $currentPageURL), 'filter')); $pageFilterURL['last_page'] = esc_url($form->tokenURL(add_query_arg(array('pg' => $pageValue['last_page']), $currentPageURL), 'filter')); echo '<span class="page-navigation" id="page-input">'; echo '<a href="' . $pageFilterURL['first_page'] . '" title="' . __('Go to the first page.', 'connections') . '" class="first-page', $pageDisabled['first_page'], '">«</a> '; echo '<a href="' . $pageFilterURL['previous_page'] . '" title="' . __('Go to the previous page.', 'connections') . '" class="prev-page', $pageDisabled['previous_page'], '">‹</a> '; echo '<span class="paging-input"><input type="text" size="2" value="' . $page->current . '" name="pg" title="' . __('Current page', 'connections') . '" class="current-page"> ' . __('of', 'connections') . ' <span class="total-pages">' . $pageCount . '</span></span> '; echo '<a href="' . $pageFilterURL['next_page'] . '" title="' . __('Go to the next page.', 'connections') . '" class="next-page', $pageDisabled['next_page'], '">›</a> '; echo '<a href="' . $pageFilterURL['last_page'] . '" title="' . __('Go to the last page.', 'connections') . '" class="last-page', $pageDisabled['last_page'], '">»</a>'; echo '</span>'; } /* * // END --> Pagination */ ?> </div> </div> <div class="clear"></div> <div class="tablenav"> <?php if (current_user_can('connections_edit_entry') || current_user_can('connections_delete_entry')) { echo '<div class="alignleft actions">'; echo '<select name="action">'; echo '<option value="" SELECTED>', __('Bulk Actions', 'connections'), '</option>'; $bulkActions = array(); if (current_user_can('connections_edit_entry') || current_user_can('connections_edit_entry_moderated')) { $bulkActions['unapprove'] = __('Unapprove', 'connections'); $bulkActions['approve'] = __('Approve', 'connections'); $bulkActions['public'] = __('Set Public', 'connections'); $bulkActions['private'] = __('Set Private', 'connections'); $bulkActions['unlisted'] = __('Set Unlisted', 'connections'); } if (current_user_can('connections_delete_entry')) { $bulkActions['delete'] = __('Delete', 'connections'); } $bulkActions = apply_filters('cn_manage_bulk_actions', $bulkActions); foreach ($bulkActions as $action => $string) { echo '<option value="', $action, '">', $string, '</option>'; } echo '</select>'; echo '<input class="button-secondary action" type="submit" name="bulk_action" value="', __('Apply', 'connections'), '" />'; echo '</div>'; } ?> <div class="tablenav-pages"> <?php /* * Display the character filter control. */ echo '<span class="displaying-num">', __('Filter by character:', 'connections'), '</span>'; cnTemplatePart::index(array('status' => $instance->currentUser->getFilterStatus(), 'tag' => 'span')); cnTemplatePart::currentCharacter(); ?> </div> </div> <div class="clear"></div> <table cellspacing="0" class="widefat connections"> <thead> <tr> <th class="manage-column column-cb check-column" id="cb" scope="col"><input type="checkbox"/></th> <th class="col" style="width:10%;"></th> <th scope="col" colspan="2" style="width:40%;"><?php _e('Name', 'connections'); ?> </th> <th scope="col" style="width:30%;"><?php _e('Categories', 'connections'); ?> </th> <th scope="col" style="width:20%;"><?php _e('Last Modified', 'connections'); ?> </th> </tr> </thead> <tfoot> <tr> <th class="manage-column column-cb check-column" scope="col"><input type="checkbox"/></th> <th class="col" style="width:10%;"></th> <th scope="col" colspan="2" style="width:40%;"><?php _e('Name', 'connections'); ?> </th> <th scope="col" style="width:30%;"><?php _e('Categories', 'connections'); ?> </th> <th scope="col" style="width:20%;"><?php _e('Last Modified', 'connections'); ?> </th> </tr> </tfoot> <tbody> <?php $previousLetter = ''; foreach ($results as $row) { /** * * * @TODO: Use the Output class to show entry details. */ $entry = new cnvCard($row); $vCard =& $entry; $currentLetter = strtoupper(mb_substr($entry->getSortColumn(), 0, 1)); if ($currentLetter != $previousLetter) { $setAnchor = "<a name='{$currentLetter}'></a>"; $previousLetter = $currentLetter; } else { $setAnchor = null; } /* * Generate the edit, copy and delete URLs with nonce tokens. */ $editTokenURL = esc_url($form->tokenURL('admin.php?page=connections_manage&cn-action=edit_entry&id=' . $entry->getId(), 'entry_edit_' . $entry->getId())); $copyTokenURL = esc_url($form->tokenURL('admin.php?page=connections_manage&cn-action=copy_entry&id=' . $entry->getId(), 'entry_copy_' . $entry->getId())); $deleteTokenURL = esc_url($form->tokenURL('admin.php?cn-action=delete_entry&id=' . $entry->getId(), 'entry_delete_' . $entry->getId())); $approvedTokenURL = esc_url($form->tokenURL('admin.php?cn-action=set_status&status=approved&id=' . $entry->getId(), 'entry_status_' . $entry->getId())); $unapproveTokenURL = esc_url($form->tokenURL('admin.php?cn-action=set_status&status=pending&id=' . $entry->getId(), 'entry_status_' . $entry->getId())); switch ($entry->getStatus()) { case 'pending': $statusClass = ' unapproved'; break; case 'approved': $statusClass = ' approved'; break; default: $statusClass = ''; break; } echo '<tr id="row-', $entry->getId(), '" class="parent-row' . $statusClass . '">'; echo "<th class='check-column' scope='row'><input type='checkbox' value='" . $entry->getId() . "' name='id[]'/></th> \n"; echo '<td>'; $entry->getImage(array('image' => 'photo', 'height' => 54, 'width' => 80, 'zc' => 2, 'fallback' => array('type' => 'block', 'string' => __('No Photo Available', 'connections')))); echo '</td>'; echo '<td colspan="2">'; if ($setAnchor) { echo $setAnchor; } echo '<div style="float:right"><a href="#wphead" title="Return to top."><img src="' . CN_URL . 'assets/images/uparrow.gif" /></a></div>'; if (current_user_can('connections_edit_entry') || current_user_can('connections_edit_entry_moderated')) { echo '<a class="row-title" title="Edit ' . $entry->getName(array('format' => '%last%, %first%')) . '" href="' . $editTokenURL . '"> ' . $entry->getName(array('format' => '%last%, %first%')) . '</a><br />'; } else { echo '<strong>' . $entry->getName(array('format' => '%last%, %first%')) . '</strong>'; } echo '<div class="row-actions">'; $rowActions = array(); $rowEditActions = array(); $rowActions[] = '<a class="detailsbutton" id="row-' . $entry->getId() . '" title="' . __('Click to show details.', 'connections') . '" >' . __('Show Details', 'connections') . '</a>'; $rowActions[] = $vCard->download(array('anchorText' => __('vCard', 'connections'), 'return' => TRUE)); $rowActions[] = cnURL::permalink(array('slug' => $entry->getSlug(), 'title' => sprintf(__('View %s', 'connections'), $entry->getName(array('format' => '%first% %last%'))), 'text' => __('View', 'connections'), 'return' => TRUE)); if ($entry->getStatus() == 'approved' && current_user_can('connections_edit_entry')) { $rowEditActions[] = '<a class="action unapprove" href="' . $unapproveTokenURL . '" title="' . __('Unapprove', 'connections') . ' ' . $entry->getFullFirstLastName() . '">' . __('Unapprove', 'connections') . '</a>'; } if ($entry->getStatus() == 'pending' && current_user_can('connections_edit_entry')) { $rowEditActions[] = '<a class="action approve" href="' . $approvedTokenURL . '" title="' . __('Approve', 'connections') . ' ' . $entry->getFullFirstLastName() . '">' . __('Approve', 'connections') . '</a>'; } if (current_user_can('connections_edit_entry') || current_user_can('connections_edit_entry_moderated')) { $rowEditActions[] = '<a class="editbutton" href="' . $editTokenURL . '" title="' . __('Edit', 'connections') . ' ' . $entry->getFullFirstLastName() . '">' . __('Edit', 'connections') . '</a>'; } if (current_user_can('connections_add_entry') || current_user_can('connections_add_entry_moderated')) { $rowEditActions[] = '<a class="copybutton" href="' . $copyTokenURL . '" title="' . __('Copy', 'connections') . ' ' . $entry->getFullFirstLastName() . '">' . __('Copy', 'connections') . '</a>'; } if (current_user_can('connections_delete_entry')) { $rowEditActions[] = '<a class="submitdelete" onclick="return confirm(\'You are about to delete this entry. \\\'Cancel\\\' to stop, \\\'OK\\\' to delete\');" href="' . $deleteTokenURL . '" title="' . __('Delete', 'connections') . ' ' . $entry->getFullFirstLastName() . '">' . __('Delete', 'connections') . '</a>'; } if (!empty($rowEditActions)) { echo implode(' | ', $rowEditActions), '<br/>'; } if (!empty($rowActions)) { echo implode(' | ', $rowActions); } echo '</div>'; echo "</td> \n"; echo "<td > \n"; $categories = $entry->getCategory(); if (!empty($categories)) { $i = 0; foreach ($categories as $category) { /* * Genreate the category link token URL. */ $categoryFilterURL = $form->tokenURL('admin.php?cn-action=filter&category=' . $category->term_id, 'filter'); echo '<a href="' . $categoryFilterURL . '">' . $category->name . '</a>'; $i++; if (count($categories) > $i) { echo ', '; } } unset($i); } echo "</td> \n"; echo '<td >'; echo '<strong>' . __('On', 'connections') . ':</strong> ' . $entry->getFormattedTimeStamp('m/d/Y g:ia') . '<br />'; echo '<strong>' . __('By', 'connections') . ':</strong> ' . $entry->getEditedBy() . '<br />'; echo '<strong>' . __('Visibility', 'connections') . ':</strong> ' . $entry->displayVisibilityType() . '<br />'; $user = $entry->getUser() ? get_userdata($entry->getUser()) : FALSE; /** * NOTE: WP 3.5 introduced get_edit_user_link() * REF: http://codex.wordpress.org/Function_Reference/get_edit_user_link * * @TODO Use get_edit_user_link() to simplify this code when WP hits >= 3.9. */ if ($user) { if (get_current_user_id() == $user->ID) { $editUserLink = get_edit_profile_url($user->ID); } else { $editUserLink = add_query_arg('user_id', $user->ID, self_admin_url('user-edit.php')); } echo '<strong>' . __('Linked to:', 'connections') . '</strong> ' . '<a href="' . esc_url($editUserLink) . '">' . esc_attr($user->display_name) . '</a>'; } echo "</td> \n"; echo "</tr> \n"; echo "<tr class='child-row-" . $entry->getId() . " cn-entry-details' id='contact-" . $entry->getId() . "-detail' style='display:none;'>"; echo '<td colspan="2"> </td>', "\n"; //echo "<td > </td> \n"; echo '<td colspan="2">'; /* * Check if the entry has relations. Count the relations and then cycle thru each relation. * Before the out check that the related entry still exists. If it does and the current user * has edit capabilites the edit link will be displayed. If the user does not have edit capabilities * the only the relation will be shown. After all relations have been output insert a <br> * for spacing [@TODO: NOTE: this should be done with styles]. */ if ($entry->getFamilyMembers()) { $count = count($entry->getFamilyMembers()); $i = 0; foreach ($entry->getFamilyMembers() as $key => $value) { $relation = new cnEntry(); $relation->set($key); $editRelationTokenURL = $form->tokenURL('admin.php?page=connections&action=edit&id=' . $relation->getId(), 'entry_edit_' . $relation->getId()); if ($relation->getId()) { if (current_user_can('connections_edit_entry')) { echo '<strong>' . $instance->options->getFamilyRelation($value) . ':</strong> ' . '<a href="' . $editRelationTokenURL . '" title="' . __('Edit', 'connections') . ' ' . $relation->getFullFirstLastName() . '">' . $relation->getFullFirstLastName() . '</a><br />' . "\n"; } else { echo '<strong>' . $instance->options->getFamilyRelation($value) . ':</strong> ' . $relation->getFullFirstLastName() . '<br />' . "\n"; } } if ($count - 1 == $i) { echo '<br />'; } // Insert a break after all connections are listed. $i++; unset($relation); } unset($i); unset($count); } if ($entry->getContactFirstName() || $entry->getContactLastName()) { echo '<strong>' . __('Contact', 'connections') . ':</strong> ' . $entry->getContactFirstName() . ' ' . $entry->getContactLastName() . '<br />'; } if ($entry->getTitle()) { echo '<strong>' . __('Title', 'connections') . ':</strong> ' . $entry->getTitle() . '<br />'; } if ($entry->getOrganization() && $entry->getEntryType() !== 'organization') { echo '<strong>' . __('Organization', 'connections') . ':</strong> ' . $entry->getOrganization() . '<br />'; } if ($entry->getDepartment()) { echo '<strong>' . __('Department', 'connections') . ':</strong> ' . $entry->getDepartment() . '<br />'; } $addresses = $entry->getAddresses(); //print_r($addresses); if (!empty($addresses)) { foreach ($addresses as $address) { $outCache = array(); echo '<div style="margin: 10px 0;">'; $address->preferred ? $preferred = '*' : ($preferred = ''); if (!empty($address->name)) { echo '<span style="display: block"><strong>', $address->name, $preferred, '</strong></span>'; } if (!empty($address->line_1)) { echo '<span style="display: block">', $address->line_1, '</span>'; } if (!empty($address->line_2)) { echo '<span style="display: block">', $address->line_2, '</span>'; } if (!empty($address->line_3)) { echo '<span style="display: block">', $address->line_3, '</span>'; } if (!empty($address->city)) { $outCache[] = '<span>' . $address->city . '</span>'; } if (!empty($address->state)) { $outCache[] = '<span>' . $address->state . '</span>'; } if (!empty($address->zipcode)) { $outCache[] = '<span>' . $address->zipcode . '</span>'; } if (!empty($outCache)) { echo '<span style="display: block">', implode(' ', $outCache), '</span>'; } if (!empty($address->country)) { echo '<span style="display: block">', $address->country, '</span>'; } if (!empty($address->latitude) && !empty($address->longitude)) { echo '<span style="display: block">', '<strong>', __('Latitude', 'connections'), ':</strong>', ' ', $address->latitude, ' ', '<strong>', __('Longitude', 'connections'), ':</strong>', ' ', $address->longitude, '</span>'; } echo '</div>'; } unset($outCache); } echo '</td>', "\n"; echo '<td>'; $phoneNumbers = $entry->getPhoneNumbers(); if (!empty($phoneNumbers)) { echo '<div class="phone-numbers">'; foreach ($phoneNumbers as $phone) { $phone->preferred ? $preferred = '*' : ($preferred = ''); echo '<span class="phone"><strong>', $phone->name, '</strong>: ', $phone->number, $preferred, '</span>'; } echo '</div>'; } $emailAddresses = $entry->getEmailAddresses(); if (!empty($emailAddresses)) { echo '<div class="email-addresses">'; foreach ($emailAddresses as $email) { $email->preferred ? $preferred = '*' : ($preferred = ''); echo '<span class="email"><strong>', $email->name, ':</strong> <a href="mailto:', $email->address, '">', $email->address, '</a>', $preferred, '</span>'; } echo '</div>'; } $imIDs = $entry->getIm(); if (!empty($imIDs)) { echo '<div class="im-ids">'; foreach ($imIDs as $im) { $im->preferred ? $preferred = '*' : ($preferred = ''); echo '<span class="im"><strong>', $im->name, ':</strong> ', $im->id, $preferred, '</span>'; } echo '</div>'; } $socialNetworks = $entry->getSocialMedia(); if (!empty($socialNetworks)) { echo '<div class="social-networks">'; foreach ($entry->getSocialMedia() as $network) { $network->preferred ? $preferred = '*' : ($preferred = ''); echo '<span class="social-network"><strong>', $network->name, ':</strong> <a target="_blank" href="', $network->url, '">', $network->url . '</a>', $preferred, '</span>'; } echo '</div>'; } $links = $entry->getLinks(); if (!empty($links)) { echo '<div class="links">'; foreach ($links as $link) { $link->preferred ? $preferred = '*' : ($preferred = ''); echo '<span class="link"><strong>', $link->name, ':</strong> <a target="_blank" href="', $link->url, '">', $link->url, '</a>', $preferred, '</span>'; } echo '</div>'; } echo "</td> \n"; echo "<td>"; $entry->getDateBlock(); echo "</td> \n"; echo "</tr> \n"; echo "<tr class='child-row-" . $entry->getId() . " entrynotes' id='contact-" . $entry->getId() . "-detail-notes' style='display:none;'>"; echo "<td colspan='2'> </td> \n"; //echo "<td > </td> \n"; echo "<td colspan='3'>"; echo $entry->getBio() ? '<strong>' . __('Bio', 'connections') . ':</strong> ' . $entry->getBio() . '<br />' : ' '; echo $entry->getNotes() ? '<strong>' . __('Notes', 'connections') . ':</strong> ' . $entry->getNotes() : ' '; echo "</td> \n"; echo '<td> <span style="display: block;"><strong>' . __('Entry ID', 'connections') . ':</strong> ' . $entry->getId() . '</span>' . ' <span style="display: block;"><strong>' . __('Entry Slug', 'connections') . ':</strong> ' . $entry->getSlug() . '</span>' . ' <span style="display: block;"><strong>' . __('Date Added', 'connections') . ':</strong> ' . $entry->getDateAdded('m/d/Y g:ia') . '</span> <span style="display: block;"><strong>' . __('Added By', 'connections') . ':</strong> ' . $entry->getAddedBy() . '</span>'; echo '<span style="display: block;"><strong>' . __('Image Linked', 'connections') . ':</strong> ' . (!$entry->getImageLinked() ? __('No', 'connections') : __('Yes', 'connections')) . '</span>'; echo '<span style="display: block;"><strong>' . __('Display', 'connections') . ':</strong> ' . ($entry->getImageLinked() && $entry->getImageDisplay() ? __('Yes', 'connections') : __('No', 'connections')) . '</span>'; echo "</td> \n"; echo "</tr> \n"; } ?> </tbody> </table> </form> <script type="text/javascript"> /* <![CDATA[ */ (function($){ $(document).ready(function(){ $('#doaction, #doaction2').click(function(){ if ( $('select[name^="action"]').val() == 'delete' ) { var m = 'You are about to delete the selected entry(ies).\n \'Cancel\' to stop, \'OK\' to delete.'; return showNotice.warn(m); } }); }); })(jQuery); /* ]]> */ </script> <?php } else { cnMessage::set('error', 'capability_view_entry_list'); } break; } echo '</div> <!-- .wrap -->'; }