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>';
         }
     }
 }
Exemple #3
0
function connectionsShowAddPage()
{
    /*
     * Check whether user can add entries
     */
    if (!current_user_can('connections_add_entry')) {
        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;
        /*
         * If an entry is being copied, load it so it can be used in the form. 
         */
        if (isset($_GET['id'])) {
            $id = esc_attr($_GET['id']);
            $atts['id'] = $id;
            $entry = $connections->retrieve->entry($id);
        } else {
            $entry = NULL;
        }
        $entryForm = new cnEntryForm();
        $form = new cnFormObjects();
        $connections->displayMessages();
        ?>
		<div class="wrap">
			<div id="icon-connections" class="icon32">
		        <br>
		    </div>
			
			<h2>Connections : Add Entry</h2>
			
			<div class="form-wrap" style="width:880px; margin: 0 auto;">
				
				<div id="poststuff" class="metabox-holder has-right-sidebar">
					<?php 
        $attr = array('action' => 'admin.php?page=connections_add&action=add', 'method' => 'post', 'enctype' => 'multipart/form-data');
        /*
         * If an entry is being copied add it to the query string.
         */
        if (isset($id)) {
            $attr['action'] .= '&id=' . $id;
        }
        $form->open($attr);
        $form->tokenField('add_entry');
        echo '<div id="side-info-column" class="inner-sidebar">';
        do_meta_boxes('connections_add', 'side', '');
        echo '</div>';
        $entryForm->displayForm($entry);
        $form->close();
        ?>
				</div>
			</div>
		</div>
		
	<?php 
    }
}
 /**
  * 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;
 }
 /**
  * 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);
 }
Exemple #6
0
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 
    }
}
/**
 * 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 
    }
}
Exemple #8
0
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'], '">&laquo;</a> ';
                    echo '<a href="' . $pageFilterURL['previous_page'] . '" title="' . __('Go to the previous page.', 'connections') . '" class="prev-page', $pageDisabled['previous_page'], '">&lsaquo;</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'], '">&rsaquo;</a> ';
                    echo '<a href="' . $pageFilterURL['last_page'] . '" title="' . __('Go to the last page.', 'connections') . '" class="last-page', $pageDisabled['last_page'], '">&raquo;</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">&nbsp;</td>', "\n";
                    //echo "<td >&nbsp;</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('&nbsp;', $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'>&nbsp;</td> \n";
                    //echo "<td >&nbsp;</td> \n";
                    echo "<td colspan='3'>";
                    echo $entry->getBio() ? '<strong>' . __('Bio', 'connections') . ':</strong> ' . $entry->getBio() . '<br />' : '&nbsp;';
                    echo $entry->getNotes() ? '<strong>' . __('Notes', 'connections') . ':</strong> ' . $entry->getNotes() : '&nbsp;';
                    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 -->';
}
Exemple #9
0
 private function buildTableRowHTML($term, $level)
 {
     global $connections;
     $form = new cnFormObjects();
     $category = new cnCategory($term);
     $pad = str_repeat('&#8212; ', 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;
 }
Exemple #10
0
function connectionsShowRolesPage()
{
	/*
	 * Check whether user can edit roles
	 */
	if (!current_user_can('connections_change_roles'))
	{
		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, $wp_roles;
		
		$form = new cnFormObjects();
		
		$connections->displayMessages();
							
		/*if (isset($_POST['submit']))
		{
			if (isset($_POST['roles']))
			{
				// Cycle thru each role available because checkboxes do not report a value when not checked.
				foreach ($wp_roles->get_names() as $role => $name)
				{
					if (!isset($_POST['roles'][$role])) continue;
					
					foreach ($_POST['roles'][$role]['capabilities'] as $capability => $grant)
					{
						// the admininistrator should always have all capabilities
						if ($role == 'administrator') continue;
						
						if ($grant == 'true')
						{
							$connections->options->addCapability($role, $capability);
						}
						else
						{
							$connections->options->removeCapability($role, $capability);
						}
					}
				}
			}
			
			if (isset($_POST['reset'])) $connections->options->setDefaultCapabilities($_POST['reset']);
			
			if (isset($_POST['reset_all'])) $connections->options->setDefaultCapabilities();
			
			echo "<div id='message' class='updated fade'>";
				echo "<p><strong>Role capabilities have been updated.</strong></p>";
			echo "</div>";
			
		}*/
	
	?>
		<div class="wrap">
			<div id="icon-connections" class="icon32">
		        <br>
		    </div>
			
			<h2>Connections : Roles &amp; Capabilities</h2>
			
			<?php 
				$attr = array(
							 'action' => 'admin.php?page=connections_roles&action=update_role_settings',
							 'method' => 'post',
							 );
				
				$form->open($attr);
				$form->tokenField('update_role_settings');
			?>
						
				<div class="form-wrap">
					
					<?php
						$editable_roles = get_editable_roles();
						
						foreach( $editable_roles as $role => $details )
						{
							$name = translate_user_role($details['name'] );	
							
							// the admininistrator should always have all capabilities
							if ($role == 'administrator') continue;
							
							echo '<div class="form-field connectionsform">';
								echo '<table class="form-table">';
									echo '<tbody>';
							
										echo '<tr valign="top">';
											echo '<th scope="row">';
												echo $name;
											echo '</th>';
											echo '<td>';
												$capabilies = $connections->options->getDefaultCapabilities();
												
												foreach ($capabilies as $capability => $capabilityName)
												{
													// if unregistered users are permitted to view the entry list there is no need for setting this capability
													if ($capability == 'connections_view_public' && $connections->options->getAllowPublic() == true) continue;
													
													echo '<label for="' . $role . '_' . $capability . '">';
													echo '<input type="hidden" name="roles[' . $role . '][capabilities][' . $capability . ']" value="false" />';
													echo '<input type="checkbox" id="' . $role . '_' . $capability . '" name="roles[' . $role . '][capabilities][' . $capability . ']" value="true" '; 
													
													if ($connections->options->hasCapability($role, $capability)) echo 'CHECKED ';
													// the admininistrator should always have all capabilities
													if ($role == 'administrator') echo 'DISABLED ';
													echo '/> ' . $capabilityName . '</label>' . "\n";
													
												}
												
												echo '<label for="' . $role . '_reset_capabilities">';
												echo '<input type="checkbox" id="' . $role . '_reset_capabilities" name="reset[' . $role . ']" value="' . $name . '" ';
												echo '/> Reset ' . $name . ' Capabilities</label>' . "\n";
													
											echo '</td>';
										echo '</tr>';
									echo '</tbody>';
								echo '</table>';
							echo '</div>';
						}
					?>
								
					<div class="form-field" style="background-color:#FFFBCC; border: 1px solid #E6DB55; -moz-border-radius:3px; border-style:solid; border-width:1px;">
						<table class="form-table">
							<tbody>
								
								<tr valign="top">
									<th scope="row">
										Reset
									</th>
									<td>
										<label for="reset_all_roles">
											<input type="checkbox" id="reset_all_roles" name="reset_all" value="true">
											Reset All Role Capabilities
										</label>
									</td>
								</tr>
								
							</tbody>
						</table>
					</div>
				</div>
				
			<p class="submit"><input class="button-primary" type="submit" value="Save Changes" name="save" /></p>
			
			<?php $form->close(); ?>
		</div>
		<div class="clear"></div>
		
	<?php }
}
Exemple #11
0
function connectionsShowRolesPage()
{
    /*
     * Check whether user can edit roles
     */
    if (!current_user_can('connections_change_roles')) {
        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, $wp_roles;
        $form = new cnFormObjects();
        ?>
		<div class="wrap cn-roles">
			<?php 
        echo get_screen_icon('connections');
        ?>

			<h2>Connections : <?php 
        _e('Roles &amp; Capabilities', 'connections');
        ?>
</h2>

			<?php 
        $attr = array('action' => '', 'method' => 'post');
        $form->open($attr);
        $form->tokenField('update_role_settings');
        ?>

			<div id="poststuff" class="metabox-holder has-right-sidebar">

				<div class="inner-sidebar" id="side-info-column">
					<div id="submitdiv" class="postbox">
						<h3 class="hndle" style="cursor: auto;">
							<span><?php 
        _e('Save Changes or Reset', 'connections');
        ?>
</span>
						</h3>

						<div class="inside">

							<div id="minor-publishing">
								<label for="reset_all_roles">
									<input type="checkbox" id="reset_all_roles" name="reset_all" value="true">
									<?php 
        _e('Reset All Role Capabilities', 'connections');
        ?>
								</label>
							</div>

							<div id="major-publishing-actions">
								<div id="publishing-action">
									<input type="hidden" name="cn-action" value="update_role_capabilities"/>
									<input class="button-primary" type="submit" value="<?php 
        _e('Update', 'connections');
        ?>
" name="save" />
								</div>
								<div class="clear"></div>
							</div>
						</div>

					</div>
				</div>

				<div class="has-sidebar" id="post-body">
					<div class="has-sidebar-content" id="post-body-content">
						<?php 
        $editable_roles = get_editable_roles();
        foreach ($editable_roles as $role => $details) {
            $name = translate_user_role($details['name']);
            // the admininistrator should always have all capabilities
            if ($role == 'administrator') {
                continue;
            }
            $capabilies = cnRole::capabilities();
            echo '<div class="postbox">';
            echo '<h3 class="hndle" style="cursor: auto;"><span>', $name, '</span></h3>';
            echo '<div class="inside">';
            foreach ($capabilies as $capability => $capabilityName) {
                // if unregistered users are permitted to view the entry list there is no need for setting this capability
                if ($capability == 'connections_view_public' && $connections->options->getAllowPublic() == true) {
                    continue;
                }
                echo '<span style="display: block;"><label for="' . $role . '_' . $capability . '">';
                echo '<input type="hidden" name="roles[' . $role . '][capabilities][' . $capability . ']" value="false" />';
                echo '<input type="checkbox" id="' . $role . '_' . $capability . '" name="roles[' . $role . '][capabilities][' . $capability . ']" value="true" ';
                if (cnRole::hasCapability($role, $capability)) {
                    echo 'CHECKED ';
                }
                // the admininistrator should always have all capabilities
                if ($role == 'administrator') {
                    echo 'DISABLED ';
                }
                echo '/> ' . $capabilityName . '</label></span>' . "\n";
            }
            echo '<span style="display: block;"><label for="' . $role . '_reset_capabilities">';
            echo '<input type="checkbox" id="' . $role . '_reset_capabilities" name="reset[' . $role . ']" value="' . $name . '" /> ';
            echo sprintf(__('Reset %s Capabilities', 'connections'), $name) . '</label></span>' . "\n";
            echo '</div>';
            echo '</div>';
        }
        ?>
					</div>
				</div>
			</div>

			<?php 
        $form->close();
        ?>


		</div>
		<div class="clear"></div>

	<?php 
    }
}
Exemple #12
0
    /**
     * Callback to display the email the system info.
     *
     * @access public
     * @since  8.3
     * @static
     *
     * @uses   cnFormObjects()
     * @uses   _e()
     * @uses   __()
     * @uses   esc_url()
     * @uses   self_admin_url()
     * @uses   submit_button()
     */
    public static function systemInfoEmail()
    {
        if (!current_user_can('install_plugins')) {
            return;
        }
        do_action('cn_tools_email_system_info_before');
        $form = new cnFormObjects();
        ?>

		<div class="postbox">
			<h3><span><?php 
        _e('Send to:', 'connections');
        ?>
</span></h3>

			<div class="inside">

				<div id="cn-email-response"></div>

				<form id="cn-send-system-info" method="post" enctype="multipart/form-data" action="<?php 
        echo esc_url(self_admin_url('admin-ajax.php'));
        ?>
">
					<table class="form-table">
						<tr>
							<th scope="row">
								<label for="cn-email-address">
									<?php 
        _e('Email Address', 'connections');
        ?>
								</label>
							</th>
							<td>
								<input type="email" name="email" id="cn-email-address" class="regular-text" placeholder="<?php 
        _e('*****@*****.**', 'connections');
        ?>
"/>
							</td>
						</tr>
						<tr>
							<th scope="row">
								<label for="cn-email-subject">
									<?php 
        _e('Subject', 'connections');
        ?>
								</label>
							</th>
							<td>
								<input type="text" name="subject" id="cn-email-subject" class="regular-text" placeholder="<?php 
        _e('Subject', 'connections');
        ?>
"/>
							</td>
						</tr>
						<tr>
							<th scope="row">
								<label for="cn-email-message">
									<?php 
        _e('Additional Message', 'connections');
        ?>
								</label>
							</th>
							<td>
								<textarea name="message" id="cn-email-message" class="large-text" rows="10" cols="50" placeholder="<?php 
        _e('Enter additional message here.', 'connections');
        ?>
"></textarea>

								<p class="description">
									<?php 
        _e('Your system information will be attached automatically to this email.', 'connections');
        ?>
								</p>

							</td>
						</tr>
					</table>
					<input type="hidden" name="action" value="email_system_info"/>
					<?php 
        $form->tokenField('email_system_info', FALSE, '_cn_wpnonce', FALSE);
        ?>
					<?php 
        submit_button(__('Send Email', 'connections'), 'secondary', 'submit', TRUE, array('id' => 'cn-send-system-info-submit'));
        ?>
				</form>

			</div><!-- .inside -->
		</div><!-- .postbox -->

		<?php 
        do_action('cn_tools_email_system_info_after');
    }
Exemple #13
0
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 
    }
}
Exemple #14
0
function connectionsShowCategoriesPage()
{
    /*
     * Check whether user can edit categories.
     */
    if (!current_user_can('connections_edit_categories')) {
        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 {
        // Grab an instance of the Connections object.
        $instance = Connections_Directory();
        $form = new cnFormObjects();
        $taxonomy = 'category';
        $action = '';
        if (isset($_GET['cn-action'])) {
            $action = $_GET['cn-action'];
        }
        if ($action === 'edit_category') {
            $id = absint($_GET['id']);
            check_admin_referer('category_edit_' . $id);
            $term = $instance->retrieve->category($id);
            $category = new cnCategory($term);
            /**
             * Fires before the Edit Term form for all taxonomies.
             *
             * The dynamic portion of the hook name, `$taxonomy`, refers to
             * the taxonomy slug.
             *
             * @since 3.0.0
             *
             * @param object $tag      Current taxonomy term object.
             * @param string $taxonomy Current $taxonomy slug.
             */
            do_action("cn_{$taxonomy}_pre_edit_form", $term, $taxonomy);
            ?>

			<div class="wrap">
				<div class="form-wrap" style="width:600px; margin: 0 auto;">
					<h2><a name="new"></a><?php 
            _e('Edit Category', 'connections');
            ?>
</h2>

					<?php 
            $attr = array('action' => '', 'method' => 'post', 'id' => 'addcat', 'name' => 'updatecategory');
            $form->open($attr);
            $form->tokenField('update_category');
            /**
             * Fires inside the Edit Term form tag.
             *
             * The dynamic portion of the hook name, `$taxonomy`, refers to
             * the taxonomy slug.
             *
             * @since 3.7.0
             */
            do_action("cn_{$taxonomy}_term_edit_form_tag");
            ?>

					<div class="form-field form-required term-name-wrap">
						<label for="category_name"><?php 
            _e('Name', 'connections');
            ?>
</label>
						<input type="text" aria-required="true" size="40" value="<?php 
            echo esc_attr($category->getName());
            ?>
" id="category_name" name="category_name"/>
						<input type="hidden" value="<?php 
            echo esc_attr($category->getID());
            ?>
" id="category_id" name="category_id"/>

						<p><?php 
            _e('The name is how it appears on your site.', 'connections');
            ?>
</p>
					</div>

					<div class="form-field term-slug-wrap">
						<label for="category_slug"><?php 
            _e('Slug', 'connections');
            ?>
 </label>
						<input type="text" size="40" value="<?php 
            echo esc_attr($category->getSlug());
            ?>
" id="category_slug" name="category_slug"/>

						<p><?php 
            _e('The “slug” is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.', 'connections');
            ?>
</p>
					</div>

					<div class="form-field term-parent-wrap">
						<label for="category_parent"><?php 
            _e('Parent', 'connections');
            ?>
</label>

						<?php 
            cnTemplatePart::walker('term-select', array('hide_empty' => 0, 'hide_if_empty' => FALSE, 'name' => 'category_parent', 'orderby' => 'name', 'taxonomy' => 'category', 'selected' => $category->getParent(), 'exclude_tree' => $category->getID(), 'hierarchical' => TRUE, 'show_option_none' => __('None', 'connections')));
            ?>
						<p><?php 
            _e('Categories can have a hierarchy. You might have a Jazz category, and under that have children categories for Bebop and Big Band. Totally optional.', 'connections');
            ?>
</p>
					</div>


					<div class="form-field term-description-wrap">
						<?php 
            ob_start();
            /*
             * Now we're going to have to keep track of which TinyMCE plugins
             * WP core supports based on version, sigh.
             */
            if (version_compare($GLOBALS['wp_version'], '3.8.999', '<')) {
                $tinymcePlugins = array('inlinepopups', 'tabfocus', 'paste', 'wordpress', 'wplink', 'wpdialogs');
            } else {
                $tinymcePlugins = array('tabfocus', 'paste', 'wordpress', 'wplink', 'wpdialogs');
            }
            wp_editor(wp_kses_post($category->getDescription()), 'category_description', array('media_buttons' => FALSE, 'tinymce' => array('editor_selector' => 'tinymce', 'toolbar1' => 'bold, italic, underline, |, bullist, numlist, |, justifyleft, justifycenter, justifyright, alignleft, aligncenter, alignright, |, link, unlink, |, pastetext, pasteword, removeformat, |, undo, redo', 'toolbar2' => '', 'inline_styles' => TRUE, 'relative_urls' => FALSE, 'remove_linebreaks' => FALSE, 'plugins' => implode(',', $tinymcePlugins))));
            echo ob_get_clean();
            ?>
					</div>

					<?php 
            /**
             * Fires after the Edit Term form fields are displayed.
             *
             * The dynamic portion of the hook name, `$taxonomy`, refers to
             * the taxonomy slug.
             *
             * @since 3.0.0
             *
             * @param object $tag      Current taxonomy term object.
             * @param string $taxonomy Current taxonomy slug.
             */
            do_action("cn_{$taxonomy}_edit_form_fields", $term, $taxonomy);
            /**
             * Fires at the end of the Edit Term form for all taxonomies.
             *
             * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
             *
             * @since 3.0.0
             *
             * @param object $tag      Current taxonomy term object.
             * @param string $taxonomy Current taxonomy slug.
             */
            do_action("{$taxonomy}_edit_form", $term, $taxonomy);
            ?>

					<input type="hidden" name="cn-action" value="update_category"/>

					<p class="submit">
						<a class="button button-warning" href="admin.php?page=connections_categories"><?php 
            _e('Cancel', 'connections');
            ?>
</a>
						<input type="submit" name="update" id="update" class="button button-primary" value="<?php 
            _e('Update Category', 'connections');
            ?>
"/>
					</p>

					<?php 
            $form->close();
            ?>

				</div>
			</div>
		<?php 
        } else {
            /**
             * @var CN_Terms_List_Table $table
             */
            $table = cnTemplatePart::table('term-admin', array('screen' => get_current_screen()->id));
            $table->prepare_items();
            ?>
			<div class="wrap nosubsub">

				<h2>Connections : <?php 
            _e('Categories', 'connections');
            ?>
</h2>

				<form class="search-form" action="" method="get">

					<input type="hidden" name="page" value="<?php 
            echo esc_attr($_REQUEST['page']);
            ?>
"/>
					<?php 
            $table->search_box(__('Search Categories', 'connections'), 'category');
            ?>

				</form>
				<br class="clear"/>

				<div id="col-container">

					<div id="col-right">
						<div class="col-wrap">
							<?php 
            $attr = array('action' => '', 'method' => 'post');
            $form->open($attr);
            //$form->tokenField( 'bulk_delete_category' );
            ?>
							<input type="hidden" name="cn-action" value="category_bulk_actions"/>
							<?php 
            $table->display();
            $form->close();
            ?>

							<br class="clear" />

							<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 category(ies).\n  \'Cancel\' to stop, \'OK\' to delete.';
												return showNotice.warn(m);
											}
										});
									});
								})(jQuery);
								/* ]]> */
							</script>

							<div class="form-wrap">
								<p><?php 
            _e('<strong>Note:</strong><br/>Deleting a category which has been assigned to an entry will reassign that entry as <strong>Uncategorized</strong>.', 'connections');
            ?>
</p>
							</div>

							<?php 
            /**
             * Fires after the taxonomy list table.
             *
             * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
             *
             * @since 3.0.0
             *
             * @param string $taxonomy The taxonomy name.
             */
            do_action("cn_after-{$taxonomy}-table", $taxonomy);
            ?>

						</div>
					</div>
					<!-- right column -->

					<div id="col-left">
						<div class="col-wrap">

							<?php 
            /**
             * Fires before the Add Term form for all taxonomies.
             *
             * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
             *
             * @since 3.0.0
             *
             * @param string $taxonomy The taxonomy slug.
             */
            do_action("cn_{$taxonomy}_pre_add_form", $taxonomy);
            ?>

							<div class="form-wrap">
								<h3><?php 
            _e('Add New Category', 'connections');
            ?>
</h3>

								<?php 
            $attr = array('action' => '', 'method' => 'post');
            $form->open($attr);
            $form->tokenField('add_category');
            /**
             * Fires at the beginning of the Add Tag form.
             *
             * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
             *
             * @since 3.7.0
             */
            do_action("cn_{$taxonomy}_term_new_form_tag");
            ?>
								<div class="form-field form-required term-name-wrap">
									<label for="category_name"><?php 
            _e('Name', 'connections');
            ?>
</label>
									<input type="text" aria-required="true" size="40" value="" id="category_name" name="category_name"/>
									<input type="hidden" value="" id="category_id" name="category_id"/>

									<p><?php 
            _e('The name is how it appears on your site.', 'connections');
            ?>
</p>
								</div>

								<div class="form-field term-slug-wrap">
									<label for="category_slug"><?php 
            _e('Slug', 'connections');
            ?>
</label>
									<input type="text" size="40" value="" id="category_slug" name="category_slug"/>

									<p><?php 
            _e('The “slug” is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.', 'connections');
            ?>
</p>
								</div>

								<div class="form-field term-parent-wrap">
									<label for="category_parent"><?php 
            _e('Parent', 'connections');
            ?>
</label>

									<?php 
            $dropdown_args = array('hide_empty' => 0, 'hide_if_empty' => FALSE, 'taxonomy' => 'category', 'name' => 'category_parent', 'orderby' => 'name', 'hierarchical' => TRUE, 'show_option_none' => __('None', 'connections'));
            /**
             * Filter the taxonomy parent drop-down on the Edit Term page.
             *
             * @since 3.7.0
             *
             * @param array   $dropdown_args    {
             *                                  An array of taxonomy parent drop-down arguments.
             *
             * @type int|bool $hide_empty       Whether to hide terms not attached to any posts. Default 0|false.
             * @type bool     $hide_if_empty    Whether to hide the drop-down if no terms exist. Default false.
             * @type string   $taxonomy         The taxonomy slug.
             * @type string   $name             Value of the name attribute to use for the drop-down select element.
             *                                      Default 'parent'.
             * @type string   $orderby          The field to order by. Default 'name'.
             * @type bool     $hierarchical     Whether the taxonomy is hierarchical. Default true.
             * @type string   $show_option_none Label to display if there are no terms. Default 'None'.
             * }
             *
             * @param string  $taxonomy         The taxonomy slug.
             */
            $dropdown_args = apply_filters('cn_taxonomy_parent_dropdown_args', $dropdown_args, 'category');
            cnTemplatePart::walker('term-select', $dropdown_args);
            ?>

									<p><?php 
            _e('Categories can have a hierarchy. You might have a Jazz category, and under that have children categories for Bebop and Big Band. Totally optional.', 'connections');
            ?>
</p>
								</div>

								<div class="form-field term-description-wrap">
									<?php 
            ob_start();
            /*
             * Now we're going to have to keep track of which TinyMCE plugins
             * WP core supports based on version, sigh.
             */
            if (version_compare($GLOBALS['wp_version'], '3.8.999', '<')) {
                $tinymcePlugins = array('inlinepopups', 'tabfocus', 'paste', 'wordpress', 'wplink', 'wpdialogs');
            } else {
                $tinymcePlugins = array('tabfocus', 'paste', 'wordpress', 'wplink', 'wpdialogs');
            }
            wp_editor('', 'category_description', array('media_buttons' => FALSE, 'tinymce' => array('editor_selector' => 'tinymce', 'toolbar1' => 'bold, italic, underline, |, bullist, numlist, |, justifyleft, justifycenter, justifyright, alignleft, aligncenter, alignright, |, link, unlink, |, pastetext, pasteword, removeformat, |, undo, redo', 'toolbar2' => '', 'inline_styles' => TRUE, 'relative_urls' => FALSE, 'remove_linebreaks' => FALSE, 'plugins' => implode(',', $tinymcePlugins))));
            echo ob_get_clean();
            ?>

								</div>

								<input type="hidden" name="cn-action" value="add_category"/>

								<?php 
            /**
             * Fires after the Add Term form fields for hierarchical taxonomies.
             *
             * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
             *
             * @since 3.0.0
             *
             * @param string $taxonomy The taxonomy slug.
             */
            do_action("cn_{$taxonomy}_add_form_fields", $taxonomy);
            submit_button(__('Add New Category', 'connections'), 'primary', 'add');
            /**
             * Fires at the end of the Add Term form for all taxonomies.
             *
             * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
             *
             * @since 3.0.0
             *
             * @param string $taxonomy The taxonomy slug.
             */
            do_action("cn_{$taxonomy}_add_form", $taxonomy);
            ?>

								<?php 
            $form->close();
            ?>
							</div>
						</div>
					</div>
					<!-- left column -->

				</div>
				<!-- Column container -->
			</div>
		<?php 
        }
    }
}
Exemple #15
0
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' >&nbsp;</td> \n";
                    //echo "<td >&nbsp;</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 . "&nbsp;";
                            }
                            if ($address->state != NULL) {
                                echo $address->state . "&nbsp;";
                            }
                            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'>&nbsp;</td> \n";
                    //echo "<td >&nbsp;</td> \n";
                    echo "<td colspan='3'>";
                    if ($entry->getBio()) {
                        echo "<strong>Bio:</strong> " . $entry->getBio() . "<br />";
                    } else {
                        echo "&nbsp;";
                    }
                    if ($entry->getNotes()) {
                        echo "<strong>Notes:</strong> " . $entry->getNotes();
                    } else {
                        echo "&nbsp;";
                    }
                    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 
}
Exemple #16
0
/** @since version 0.7.1.0 */
function _connections_list($atts, $content = null)
{
    global $wpdb, $connections, $current_user;
    $form = new cnFormObjects();
    $convert = new cnFormatting();
    $format =& $convert;
    $template = new stdClass();
    $atts = shortcode_atts(array('id' => NULL, 'category' => NULL, 'exclude_category' => NULL, 'category_name' => NULL, 'wp_current_category' => 'false', 'allow_public_override' => 'false', 'private_override' => 'false', 'show_alphaindex' => 'false', 'repeat_alphaindex' => 'false', 'show_alphahead' => 'false', 'list_type' => NULL, 'limit' => NULL, 'offset' => NULL, 'order_by' => NULL, 'group_name' => NULL, 'last_name' => NULL, 'title' => NULL, 'organization' => NULL, 'department' => NULL, 'city' => NULL, 'state' => NULL, 'zip_code' => NULL, 'country' => NULL, 'template' => NULL, 'template_name' => NULL), $atts);
    /*
     * Convert some of the $atts values in the array to boolean.
     */
    $convert->toBoolean(&$atts['allow_public_override']);
    $convert->toBoolean(&$atts['private_override']);
    $convert->toBoolean(&$atts['show_alphaindex']);
    $convert->toBoolean(&$atts['repeat_alphaindex']);
    $convert->toBoolean(&$atts['show_alphahead']);
    $convert->toBoolean(&$atts['wp_current_category']);
    $permittedListTypes = array('individual', 'organization', 'family', 'connection_group');
    // Convert the supplied entry types $atts['list_type'] to an array.
    if (!empty($atts['list_type'])) {
        // Trim the space characters if present.
        $atts['list_type'] = str_replace(' ', '', $atts['list_type']);
        // Convert to array.
        $atts['list_type'] = explode(',', $atts['list_type']);
    }
    // Set the template type to the first in the entry type from the supplied if multiple list types are provided.
    if (!empty($atts['list_type']) && (bool) array_intersect((array) $atts['list_type'], $permittedListTypes)) {
        $templateType = $atts['list_type'][0];
    }
    /*
     * As of version 0.7.0.5 the $atts['template_name'] is deprecated.
     */
    if (isset($atts['template_name'])) {
        // First check to see if the template is in the custom template folder.
        if (is_dir(CN_CUSTOM_TEMPLATE_PATH) && is_readable(CN_CUSTOM_TEMPLATE_PATH)) {
            if (file_exists(CN_CUSTOM_TEMPLATE_PATH . '/' . $atts['template_name'] . '.php')) {
                $template->file = CN_CUSTOM_TEMPLATE_PATH . '/' . $atts['template_name'] . '.php';
            }
        }
        // If the template is not in the custom template folder, check for it in the default template folder.
        if (!isset($template->file)) {
            if (file_exists(CN_BASE_PATH . '/templates/' . $atts['template_name'] . '.php')) {
                $template->file = CN_BASE_PATH . '/templates/' . $atts['template_name'] . '.php';
            }
        }
    } else {
        $template = new cnTemplate();
        // Change the list type to family from connection_group to maintain compatibility with versions .0.7.0.4 and earlier.
        if ($atts['list_type'] === 'connection_group') {
            $atts['list_type'] = 'family';
        }
        /*
         * $atts['template'] can be either a string or an object. It is a string when set
         * with the shortcode attribute. If it is a string, the template will be loaded
         * via the cnTemplate class.
         * 
         * If the attribute is not set, it will be the object returned from the
         * cnOptions::getActiveTemplate() method which stores the default template
         * per list style.
         */
        if (isset($atts['template']) && !is_object($atts['template'])) {
            $template->load($atts['template']);
            $template->includeFunctions();
        } else {
            if (empty($templateType)) {
                $templateType = 'all';
            }
            // If no list type was specified, set the default ALL template.
            $template->init($connections->options->getActiveTemplate($templateType));
            $template->includeFunctions();
        }
    }
    // If no template is found, return an error message.
    if (!isset($template->file)) {
        return '<p style="color:red; font-weight:bold; text-align:center;">ERROR: Template "' . $atts['template_name'] . $atts['template'] . '" not found.</p>';
    }
    $atts = apply_filters('cn_list_atts', $atts);
    $results = $connections->retrieve->entries($atts);
    //print_r($connections->lastQuery);
    if (!empty($results)) {
        $results = apply_filters('cn_list_results', $results);
    }
    // Prints the template's CSS file.
    if (method_exists($template, 'printCSS')) {
        $out .= $template->printCSS();
    }
    // Prints the javascript tag in the footer if $template->js path is set
    if (method_exists($template, 'printJS')) {
        $template->printJS();
    }
    $out = apply_filters('cn_list_before', $out, $results);
    // If there are no results no need to proceed and output message.
    if (empty($results)) {
        $noResultMessage = 'No results';
        $noResultMessage = apply_filters('cn_no_result_message', $noResultMessage);
        return $out . '<p class="cn-no-results">' . $noResultMessage . '</p>';
    }
    $out .= '<a name="connections-list-head" style="float: left;"></a>' . "\n";
    /*
     * The alpha index is only displayed if set set to true and not set to repeat using the shortcode attributes.
     * If a alpha index is set to repeat, that is handled down separately.
     */
    if ($atts['show_alphaindex'] && !$atts['repeat_alphaindex']) {
        $index = "<div class='cn-alphaindex' style='text-align:right;font-size:larger;font-weight:bold'>" . $form->buildAlphaIndex() . "</div>";
        $out .= apply_filters('cn_list_index', $index, $results);
    }
    $out .= '<div class="connections-list">' . "\n";
    foreach ((array) $results as $row) {
        //$entry = new cnOutput($row);
        $entry = new cnvCard($row);
        //$vCard = new cnvCard($row);
        $vCard =& $entry;
        if (isset($continue)) {
            unset($continue);
        }
        if (isset($cities)) {
            unset($cities);
        }
        if (isset($states)) {
            unset($states);
        }
        if (isset($zipcodes)) {
            unset($zipcodes);
        }
        if (isset($countries)) {
            unset($countries);
        }
        if (isset($setAnchor)) {
            unset($setAnchor);
        }
        /*
         * Check to make sure there is data stored in the address array.
         * Cycle thru each address, building separate arrays for city, state, zip and country.
         */
        if ($entry->getAddresses()) {
            foreach ($entry->getAddresses() as $address) {
                if ($address->city != NULL) {
                    $cities[] = $address->city;
                }
                if ($address->state != NULL) {
                    $states[] = $address->state;
                }
                if ($address->zipcode != NULL) {
                    $zipcodes[] = $address->zipcode;
                }
                if ($address->country != NULL) {
                    $countries[] = $address->country;
                }
            }
        }
        /*
         * Filter out the entries that are wanted based on the
         * filter attributes that may have been used in the shortcode.
         * 
         * NOTE: The '@' operator is used to suppress PHP generated errors. This is done
         * because not every entry will have addresses to populate the arrays created above.
         * 
         * NOTE: Since the entry class returns all fields escaped, the shortcode filter
         * attribute needs to be escaped as well so the comparason between the two functions
         * as expected.
         */
        $atts['group_name'] = esc_attr($atts['group_name']);
        $atts['last_name'] = esc_attr($atts['last_name']);
        $atts['title'] = esc_attr($atts['title']);
        $atts['organization'] = esc_attr($atts['organization']);
        $atts['department'] = esc_attr($atts['department']);
        if ($entry->getFamilyName() != $atts['group_name'] && $atts['group_name'] != null) {
            $continue = true;
        }
        if ($entry->getLastName() != $atts['last_name'] && $atts['last_name'] != null) {
            $continue = true;
        }
        if ($entry->getTitle() != $atts['title'] && $atts['title'] != null) {
            $continue = true;
        }
        if ($entry->getOrganization() != $atts['organization'] && $atts['organization'] != null) {
            $continue = true;
        }
        if ($entry->getDepartment() != $atts['department'] && $atts['department'] != null) {
            $continue = true;
        }
        if (@(!in_array($atts['city'], $cities)) && $atts['city'] != null) {
            $continue = true;
        }
        if (@(!in_array($atts['state'], $states)) && $atts['state'] != null) {
            $continue = true;
        }
        if (@(!in_array($atts['zip_code'], $zipcodes)) && $atts['zip_code'] != null) {
            $continue = true;
        }
        if (@(!in_array($atts['country'], $countries)) && $atts['country'] != null) {
            $continue = true;
        }
        /*
         * If any of the above filters returned true, the script will continue to the next entry.
         */
        if ($continue == true) {
            continue;
        }
        /*
         * Checks the first letter of the last name to see if it is the next
         * letter in the alpha array and sets the anchor.
         * 
         * If the alpha index is set to repeat it will append to the anchor.
         * 
         * If the alpha head set to true it will append the alpha head to the anchor.
         */
        $currentLetter = strtoupper(mb_substr($entry->getSortColumn(), 0, 1));
        if ($currentLetter != $previousLetter && $atts['id'] == null) {
            if ($atts['show_alphaindex']) {
                $setAnchor = '<a class="cn-index-head" name="' . $currentLetter . '"></a>';
            }
            if ($atts['show_alphaindex'] && $atts['repeat_alphaindex']) {
                $setAnchor .= "<div class='cn-alphaindex' style='text-align:right;font-size:larger;font-weight:bold'>" . $form->buildAlphaIndex() . "</div>";
            }
            if ($atts['show_alphahead']) {
                $setAnchor .= '<h4 class="cn-alphahead">' . $currentLetter . '</h4>';
            }
            $previousLetter = $currentLetter;
        } else {
            $setAnchor = null;
        }
        /*
         * The anchor and/or the alpha head is displayed if set to true using the shortcode attributes.
         */
        if ($atts['show_alphaindex'] || $atts['show_alphahead']) {
            $out .= $setAnchor;
        }
        $alternate == '' ? $alternate = '-alternate' : ($alternate = '');
        $out .= '<div class="cn-list-row' . $alternate . ' vcard ' . $template->slug . ' ' . $entry->getCategoryClass(TRUE) . '">' . "\n";
        $out = apply_filters('cn_entry_before', $out, $entry);
        ob_start();
        include $template->file;
        $out .= ob_get_contents();
        ob_end_clean();
        $out = apply_filters('cn_entry_after', $out, $entry);
        $out .= '</div>' . "\n";
    }
    $out .= '<div class="clear"></div>' . "\n";
    $out .= '</div>' . "\n";
    $out = apply_filters('cn_list_after', $out, $results);
    return $out;
}
Exemple #17
0
function connectionsShowDashboardPage()
{
    /*
     * Check whether user can view the Dashboard
     */
    if (!current_user_can('connections_view_dashboard')) {
        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;
        $form = new cnFormObjects();
        ?>
		<div class="wrap">

			<h2>Connections : <?php 
        _e('Dashboard', 'connections');
        ?>
</h2>

			<div id="dashboard-widgets-wrap">

				<div id="dashboard-widgets" class="metabox-holder columns-<?php 
        echo 1 == get_current_screen()->get_columns() ? '1' : '2';
        ?>
">

					<div class="postbox-container">
						<?php 
        do_meta_boxes($connections->pageHook->dashboard, 'left', NULL);
        ?>
					</div>

					<div class="postbox-container">
						<?php 
        do_meta_boxes($connections->pageHook->dashboard, 'right', NULL);
        ?>
					</div>

				</div><!-- #dashboard-widgets -->

			</div><!-- .dashboard-widgets-wrap -->

		</div><!-- .wrap -->

		<?php 
        $attr = array('action' => '', 'method' => 'get');
        $form->open($attr);
        /* Used to save closed metaboxes and their order */
        wp_nonce_field('meta-box-order', 'meta-box-order-nonce', FALSE);
        wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', FALSE);
        $form->close();
        ?>

		<div class="clear"></div>

	<?php 
    }
}
Exemple #18
0
 /**
  * Veryfy and process requested actions in the admin.
  */
 private function controllers()
 {
     // Exit the method if $_GET['page'] isn't set.
     if (!isset($_GET['page'])) {
         return;
     }
     if (!isset($_GET['action'])) {
         return;
     }
     global $connections;
     include_once dirname(__FILE__) . '/includes/inc.processes.php';
     $form = new cnFormObjects();
     switch ($_GET['page']) {
         case 'connections':
             if ($_GET['action']) {
                 switch ($_GET['action']) {
                     case 'add':
                         /*
                          * Check whether the current user can add an entry.
                          */
                         if (current_user_can('connections_add_entry')) {
                             check_admin_referer($form->getNonce('add_entry'), '_cn_wpnonce');
                             processEntry($_POST, 'add');
                             wp_redirect('admin.php?page=connections&action=add_new&display_messages=true');
                         } else {
                             $connections->setErrorMessage('capability_add');
                         }
                         break;
                     case 'update':
                         /*
                          * Check whether the current user can edit an entry.
                          */
                         if (current_user_can('connections_edit_entry')) {
                             check_admin_referer($form->getNonce('update_entry'), '_cn_wpnonce');
                             processEntry($_POST, 'update');
                             wp_redirect('admin.php?page=connections&display_messages=true');
                         } else {
                             $connections->setErrorMessage('capability_edit');
                         }
                         break;
                     case 'delete':
                         /*
                          * Check whether the current user delete an entry.
                          */
                         if (current_user_can('connections_delete_entry')) {
                             processDeleteEntry();
                             wp_redirect('admin.php?page=connections&display_messages=true');
                         } else {
                             $connections->setErrorMessage('capability_delete');
                         }
                         break;
                     case 'filter':
                         check_admin_referer('filter');
                         processSetUserFilter();
                         break;
                     case 'do':
                         switch ($_POST['action']) {
                             case 'delete':
                                 /*
                                  * Check whether the current user delete an entry.
                                  */
                                 if (current_user_can('connections_delete_entry')) {
                                     check_admin_referer($form->getNonce('bulk_action'), '_cn_wpnonce');
                                     processDeleteEntries();
                                     wp_redirect('admin.php?page=connections&display_messages=true');
                                 } else {
                                     $connections->setErrorMessage('capability_delete');
                                 }
                                 break;
                             case 'public':
                             case 'private':
                             case 'unlisted':
                                 /*
                                  * Check whether the current user can edit entries.
                                  */
                                 if (current_user_can('connections_edit_entry')) {
                                     check_admin_referer($form->getNonce('bulk_action'), '_cn_wpnonce');
                                     processSetEntryVisibility();
                                     wp_redirect('admin.php?page=connections&display_messages=true');
                                 } else {
                                     $connections->setErrorMessage('capability_edit');
                                 }
                                 break;
                         }
                         if (isset($_POST['filter'])) {
                             check_admin_referer($form->getNonce('bulk_action'), '_cn_wpnonce');
                             processSetUserFilter();
                             wp_redirect('admin.php?page=connections&display_messages=true');
                         }
                         break;
                 }
             }
             break;
         case 'connections_add':
             /*
              * Check whether user can add entries
              */
             if (current_user_can('connections_add_entry')) {
                 if ($_POST['save'] && $_GET['action'] === 'add') {
                     check_admin_referer($form->getNonce('add_entry'), '_cn_wpnonce');
                     processEntry($_POST, 'add');
                     wp_redirect('admin.php?page=connections_add&display_messages=true');
                 }
             } else {
                 $connections->setErrorMessage('capability_add');
             }
             break;
         case 'connections_categories':
             /*
              * Check whether user can edit Settings
              */
             if (current_user_can('connections_edit_categories')) {
                 if ($_GET['action']) {
                     switch ($_GET['action']) {
                         case 'add':
                             check_admin_referer($form->getNonce('add_category'), '_cn_wpnonce');
                             processAddCategory();
                             wp_redirect('admin.php?page=connections_categories&display_messages=true');
                             break;
                         case 'update':
                             check_admin_referer($form->getNonce('update_category'), '_cn_wpnonce');
                             processUpdateCategory();
                             wp_redirect('admin.php?page=connections_categories&display_messages=true');
                             break;
                         case 'delete':
                             processDeleteCategory('delete');
                             wp_redirect('admin.php?page=connections_categories&display_messages=true');
                             break;
                         case 'bulk_delete':
                             check_admin_referer($form->getNonce('bulk_delete_category'), '_cn_wpnonce');
                             processDeleteCategory('bulk_delete');
                             wp_redirect('admin.php?page=connections_categories&display_messages=true');
                             break;
                     }
                 }
             } else {
                 $connections->setErrorMessage('capability_categories');
             }
             break;
         case 'connections_settings':
             /*
              * Check whether user can edit Settings
              */
             if (current_user_can('connections_change_settings')) {
                 if ($_POST['save'] && $_GET['action'] === 'update_settings') {
                     check_admin_referer($form->getNonce('update_settings'), '_cn_wpnonce');
                     updateSettings();
                     wp_redirect('admin.php?page=connections_settings&display_messages=true');
                 }
             } else {
                 $connections->setErrorMessage('capability_settings');
             }
             break;
         case 'connections_templates':
             /*
              * Check whether user can manage Templates
              */
             if (current_user_can('connections_manage_template')) {
                 if ($_GET['action']) {
                     switch ($_GET['action']) {
                         case 'activate':
                             processActivateTemplate();
                             !isset($_GET['type']) ? $tab = 'all' : ($tab = esc_attr($_GET['type']));
                             wp_redirect('admin.php?page=connections_templates&type=' . $tab . '&display_messages=true');
                             break;
                         case 'install':
                             check_admin_referer($form->getNonce('install_template'), '_cn_wpnonce');
                             processInstallTemplate();
                             !isset($_GET['type']) ? $tab = 'all' : ($tab = esc_attr($_GET['type']));
                             wp_redirect('admin.php?page=connections_templates&type=' . $tab . '&display_messages=true');
                             break;
                         case 'delete':
                             processDeleteTemplate();
                             !isset($_GET['type']) ? $tab = 'all' : ($tab = esc_attr($_GET['type']));
                             wp_redirect('admin.php?page=connections_templates&type=' . $tab . '&display_messages=true');
                             break;
                     }
                 }
             } else {
                 // @TODO: Create template specific error message.
                 $connections->setErrorMessage('capability_settings');
             }
             break;
         case 'connections_roles':
             /*
              * Check whether user can edit roles
              */
             if (current_user_can('connections_change_roles')) {
                 if ($_POST['save'] && $_GET['action'] === 'update_role_settings') {
                     check_admin_referer($form->getNonce('update_role_settings'), '_cn_wpnonce');
                     updateRoleSettings();
                     wp_redirect('admin.php?page=connections_roles&display_messages=true');
                 }
             } else {
                 $connections->setErrorMessage('capability_roles');
             }
             break;
     }
 }
Exemple #19
0
function connectionsShowCategoriesPage()
{
    /*
     * Check whether user can edit catgories.
     */
    if (!current_user_can('connections_edit_categories')) {
        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();
        $categoryObjects = new cnCategoryObjects();
        if (isset($_GET['action'])) {
            $action = $_GET['action'];
        } else {
            $action = NULL;
        }
        if ($action === 'edit') {
            $id = esc_attr($_GET['id']);
            check_admin_referer('category_edit_' . $id);
            ?>
			<div class="wrap">
				<div class="form-wrap" style="width:600px; margin: 0 auto;">
					<h2><a name="new"></a>Edit Category</h2>
			
					<?php 
            $attr = array('action' => 'admin.php?page=connections_categories&action=update', 'method' => 'post', 'id' => 'addcat', 'name' => 'updatecategory');
            $form->open($attr);
            $form->tokenField('update_category');
            $categoryObjects->showForm($connections->retrieve->category($id));
            ?>
					
					<p class="submit"><a class="button button-warning" href="admin.php?page=connections_categories">Cancel</a> <input class="button-primary" type="submit" value="Update Category" name="update" class="button"/></p>
					
					<?php 
            $form->close();
            ?>
			
				</div>
			</div>
			<?php 
        } else {
            ?>
				<div class="wrap nosubsub">
					<div class="icon32" id="icon-connections"><br/></div>
					<h2>Connections : Categories</h2>
					<?php 
            echo $connections->displayMessages();
            ?>
					<div id="col-container">
					
						<div id="col-right">
							<div class="col-wrap">
								<?php 
            $attr = array('action' => 'admin.php?page=connections_categories&action=bulk_delete', 'method' => 'post');
            $form->open($attr);
            $form->tokenField('bulk_delete_category');
            ?>
								
									<div class="tablenav">
										<div class="alignleft actions">
											<select name="action">
												<option selected="selected" value="">Bulk Actions</option>
												<option value="delete">Delete</option>
											</select>
											<input type="submit" class="button-secondary action" id="doaction" name="doaction" value="Apply"/>
										</div>
										
										<br class="clear"/>
									</div>
									
									<div class="clear"/></div>
								
									<table cellspacing="0" class="widefat fixed">
										<thead>
											<tr>
												<th class="manage-column column-cb check-column" id="cb" scope="col"><input type="checkbox"/></th>
												<th class="manage-column column-name" id="name" scope="col">Name</th>
												<th class="manage-column column-description" id="description" scope="col">Description</th>
												<th class="manage-column column-slug" id="slug" scope="col">Slug</th>
												<th class="manage-column column-posts" id="posts" scope="col">Info</th>
											</tr>
										</thead>
									
										<tfoot>
											<tr>
												<th class="manage-column column-cb check-column" scope="col"><input type="checkbox"/></th>
												<th class="manage-column column-name" scope="col">Name</th>
												<th class="manage-column column-description" scope="col">Description</th>
												<th class="manage-column column-slug" scope="col">Slug</th>
												<th class="manage-column column-posts" scope="col">Info</th>
											</tr>
										</tfoot>
									
										<tbody class="list:cat" id="the-list">
											<?php 
            echo $categoryObjects->buildCategoryRow('table', $connections->retrieve->categories());
            ?>
										</tbody>
									</table>
								<?php 
            $form->close();
            ?>
								
								<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 category(ies).\n  \'Cancel\' to stop, \'OK\' to delete.';
													return showNotice.warn(m);
												}
											});
										});
									})(jQuery);
									/* ]]> */
								</script>
								
								<div class="form-wrap">
								<p><strong>Note:</strong><br/>Deleting a category which has been assigned to an entry will reassign that entry as <strong>Uncategorized</strong>.</p>
								</div>
							
							</div>
						</div><!-- right column -->
						
						<div id="col-left">
							<div class="col-wrap">
								<div class="form-wrap">
									<h3>Add Category</h3>
										<?php 
            $attr = array('action' => 'admin.php?page=connections_categories&action=add', 'method' => 'post', 'id' => 'addcat', 'name' => 'addcat');
            $form->open($attr);
            $form->tokenField('add_category');
            $categoryObjects->showForm();
            ?>
										<p class="submit"><input type="submit" value="Save Category" name="add" class="button"/></p>
									<?php 
            $form->close();
            ?>
								</div>
							</div>
						</div><!-- left column -->
					
					</div><!-- Column container -->
				</div>
			<?php 
        }
    }
}
Exemple #20
0
function connectionsShowSettingsPage()
{
	/*
	 * Check whether user can edit Settings
	 */
	if (!current_user_can('connections_change_settings'))
	{
		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();
		
		$connections->displayMessages();
	?>
		<div class="wrap">
			<div id="icon-connections" class="icon32">
		        <br>
		    </div>
			
			<h2>Connections : Settings</h2>
			
			<?php 
				$attr = array(
							 'action' => 'admin.php?page=connections_settings&action=update_settings',
							 'method' => 'post',
							 );
				
				$form->open($attr);
				$form->tokenField('update_settings');
			?>
			
				<div class="form-wrap">
					<div class="form-field connectionsform">
						<table class="form-table">
							<tbody>
							
								<tr valign="top">
									<th scope="row">
										Public Entries
									</th>
									<td>
										<label for="allow_public">
											<input type="checkbox" value="true" name="settings[allow_public]" id="allow_public" 
												<?php if ($connections->options->getAllowPublic()) echo 'CHECKED ' ?>
											/>
											Allow unregistered visitors and users not logged in to view entries<br />
											<small>(When disabled, use roles to define which roles may view the public entries.)</small>
										</label>
										
										<label for="allow_public_override">
											<input type="checkbox" value="true" name="settings[allow_public_override]" id="allow_public_override" 
												<?php if ($connections->options->getAllowPublicOverride()) echo 'CHECKED ' ?>
												<?php if ($connections->options->getAllowPublic()) echo 'DISABLED ' ?>
											/>
											Allow shortcode attribute override
										</label>
									</td>
								</tr>
								
							</tbody>
						</table>
					</div>
					
					<div class="form-field connectionsform">
						<table class="form-table">
							<tbody>
							
								<tr valign="top">
									<th scope="row">
										Private Entries
									</th>
									<td>
										<label for="allow_private_override">
											<input type="hidden" value="false" name="settings[allow_private_override]"/>
											<input type="checkbox" value="true" name="settings[allow_private_override]" id="allow_private_override" 
												<?php if ($connections->options->getAllowPrivateOverride()) echo 'CHECKED ' ?>
											/>
											Allow shortcode attribute override
										</label>
									</td>
								</tr>
								
							</tbody>
						</table>
					</div>
				
					<div class="form-field connectionsform">
						<h3>Thumbnail Image Settings</h3>
						<table class="form-table">
							<tbody>
								
								<tr valign="top">
									<th scope="row">
										<label for="image_thumbnail_quality">JPEG Quality</label>
									</th>
									<td>
										<input type="text" class="small-text" value="<?php echo $connections->options->getImgThumbQuality() ?>" id="image_thumbnail_quality" name="settings[image][thumbnail][quality]"/>%
									</td>
									<td rowspan="4" width="50%">
										<p>Changing the Quality setting will affect the image quality as well the file size. If you require smaller file sizes and can accept lower image quality, reduce the value.</p>
										<p>The values entered for the width and height will be the final size of the image. If the image is smaller, white space will be added to the image with the image centered. If the image is larger in either dimension it will be scaled down. The crop setting defines how the image will be scaled down.</p>
										<p>Crop will use the image's smaller dimension and scale it to fit and then crop the excess image from both sides or top and bottom equally of the larger dimension.</p>
										<p>Shrink will use the image's larger dimension and scale it to fit and then add white space equally to both sides or top and bottom equally to the smaller dimension.</p>
										<p>None will scale both image dimensions to fit the entered values un-proportionally.</p>
										<p><strong>NOTE: </strong>Although these options are available they are not recommended to be changed.</p>
										<p><strong>NOTE: </strong>Changes will only be applied to images uploaded after the change was saved. This will not affect images uploaded previously.</p>
										<p><strong>Default Values: </strong>Quality: 80%; Width: 80px; Height: 54px; Crop</p>
									</td>
								</tr>
								
								<tr valign="top">
									<th scope="row">
										<label for="image_thumbnail_x">Width</label>
									</th>
									<td>
										<input type="text" class="small-text" value="<?php echo $connections->options->getImgThumbX() ?>" id="image_thumbnail_x" name="settings[image][thumbnail][x]"/>px
									</td>
								</tr>				
								
								<tr valign="top">
									<th scope="row">
										<label for="image_thumbnail_y">Height</label>
									</th>
									<td>
										<input type="text" class="small-text" value="<?php echo $connections->options->getImgThumbY() ?>" id="image_thumbnail_y" name="settings[image][thumbnail][y]"/>px
									</td>
								</tr>
								
								<tr valign="top">
									<th scope="row">
										Crop
									</th>
									<td>
										<?php echo $form->buildRadio('settings[image][thumbnail][crop]', 'image_thumbnail_crop', array('Crop (maintain aspect ratio)' => 'crop', 'Shrink (maintain aspect ratio)' => 'fill', 'None' => 'none'), $connections->options->getImgThumbCrop()); ?>
									</td>
								</tr>
								
							</tbody>
						</table>
					</div>
								
								
					<div class="form-field connectionsform">
						<h3>Entry Image Settings</h3>
						<table class="form-table">
							<tbody>
								
								<tr valign="top">
									<th scope="row">
										<label for="image_entry_quality">JPEG Quality</label>
									</th>
									<td>
										<input type="text" class="small-text" value="<?php echo $connections->options->getImgEntryQuality() ?>" id="image_entry_quality" name="settings[image][entry][quality]"/>%
									</td>
									<td rowspan="4" width="50%">
										<p>Changing the Quality setting will affect the image quality as well the file size. If you require smaller file sizes and can accept lower image quality, reduce the value.</p>
										<p>The values entered for the width and height will be the final size of the image. If the image is smaller, white space will be added to the image with the image centered. If the image is larger in either dimension it will be scaled down. The crop setting defines how the image will be scaled down.</p>
										<p>Crop will use the image's smaller dimension and scale it to fit and then crop the excess image from both sides or top and bottom equally of the larger dimension.</p>
										<p>Shrink will use the image's larger dimension and scale it to fit and then add white space equally to both sides or top and bottom equally to the smaller dimension.</p>
										<p>None will scale both image dimensions to fit the entered values un-proportionally.</p>
										<p><strong>NOTE: </strong>Changes will only be applied to images uploaded after the change was saved. This will not affect images uploaded previously.</p>
										<p><strong>Default Values: </strong>Quality: 80%; Width: 225px; Height: 150px; Crop</p>
									</td>
								</tr>
								
								<tr valign="top">
									<th scope="row">
										<label for="image_entry_x">Width</label>
									</th>
									<td>
										<input type="text" class="small-text" value="<?php echo $connections->options->getImgEntryX() ?>" id="image_entry_x" name="settings[image][entry][x]"/>px
									</td>
								</tr>				
								
								<tr valign="top">
									<th scope="row">
										<label for="image_entry_y">Height</label>
									</th>
									<td>
										<input type="text" class="small-text" value="<?php echo $connections->options->getImgEntryY() ?>" id="image_entry_y" name="settings[image][entry][y]"/>px
									</td>
								</tr>
								
								<tr valign="top">
									<th scope="row">
										Crop
									</th>
									<td>
										<?php echo $form->buildRadio('settings[image][entry][crop]', 'image_entry_crop', array('Crop (maintain aspect ratio)' => 'crop', 'Shrink (maintain aspect ratio)' => 'fill', 'None' => 'none'), $connections->options->getImgEntryCrop()); ?>
									</td>
								</tr>
								
							</tbody>
						</table>
					</div>
								
					<div class="form-field connectionsform">
						<h3>Profile Image Settings</h3>
						<table class="form-table">
							<tbody>
								
								<tr valign="top">
									<th scope="row">
										<label for="image_profile_quality">JPEG Quality</label>
									</th>
									<td>
										<input type="text" class="small-text" value="<?php echo $connections->options->getImgProfileQuality() ?>" id="image_profile_quality" name="settings[image][profile][quality]"/>%
									</td>
									<td rowspan="4" width="50%">
										<p>Changing the Quality setting will affect the image quality as well the file size. If you require smaller file sizes and can accept lower image quality, reduce the value.</p>
										<p>The values entered for the width and height will be the final size of the image. If the image is smaller, white space will be added to the image with the image centered. If the image is larger in either dimension it will be scaled down. The crop setting defines how the image will be scaled down.</p>
										<p>Crop will use the image's smaller dimension and scale it to fit and then crop the excess image from both sides or top and bottom equally of the larger dimension.</p>
										<p>Shrink will use the image's larger dimension and scale it to fit and then add white space equally to both sides or top and bottom equally to the smaller dimension.</p>
										<p>None will scale both image dimensions to fit the entered values un-proportionally.</p>
										<p><strong>NOTE: </strong>Changes will only be applied to images uploaded after the change was saved. This will not affect images uploaded previously.</p>
										<p><strong>Default Values: </strong>Quality: 80%; Width: 300px; Height: 225px; Crop</p>
									</td>
								</tr>
								
								<tr valign="top">
									<th scope="row">
										<label for="image_profile_x">Width</label>
									</th>
									<td>
										<input type="text" class="small-text" value="<?php echo $connections->options->getImgProfileX() ?>" id="image_profile_x" name="settings[image][profile][x]"/>px
									</td>
								</tr>				
								
								<tr valign="top">
									<th scope="row">
										<label for="image_profile_y">Height</label>
									</th>
									<td>
										<input type="text" class="small-text" value="<?php echo $connections->options->getImgProfileY() ?>" id="image_profile_y" name="settings[image][profile][y]"/>px
									</td>
								</tr>
								
								<tr valign="top">
									<th scope="row">
										Crop
									</th>
									<td>
										<?php echo $form->buildRadio('settings[image][profile][crop]', 'image_profile_crop', array('Crop (maintain aspect ratio)' => 'crop', 'Shrink (maintain aspect ratio)' => 'fill', 'None' => 'none'), $connections->options->getImgProfileCrop()); ?>
									</td>
								</tr>
							
							</tbody>
						</table>
					</div>
					
					
					<div class="form-field connectionsform">
						<h3>Logo Image Settings</h3>
						<table class="form-table">
							<tbody>
								
								<tr valign="top">
									<th scope="row">
										<label for="logo_thumbnail_quality">JPEG Quality</label>
									</th>
									<td>
										<input type="text" class="small-text" value="<?php echo $connections->options->getImgLogoQuality() ?>" id="logo_thumbnail_quality" name="settings[image][logo][quality]"/>%
									</td>
									<td rowspan="4" width="50%">
										<p>Changing the Quality setting will affect the image quality as well the file size. If you require smaller file sizes and can accept lower image quality, reduce the value.</p>
										<p>The values entered for the width and height will be the final size of the image. If the image is smaller, white space will be added to the image with the image centered. If the image is larger in either dimension it will be scaled down. The crop setting defines how the image will be scaled down.</p>
										<p>Crop will use the image's smaller dimension and scale it to fit and then crop the excess image from both sides or top and bottom equally of the larger dimension.</p>
										<p>Shrink will use the image's larger dimension and scale it to fit and then add white space equally to both sides or top and bottom equally to the smaller dimension.</p>
										<p>None will scale both image dimensions to fit the entered values un-proportionally.</p>
										<p><strong>NOTE: </strong>Although these options are available they are not recommended to be changed.</p>
										<p><strong>NOTE: </strong>Changes will only be applied to images uploaded after the change was saved. This will not affect images uploaded previously.</p>
										<p><strong>Default Values: </strong>Quality: 80%; Width: 225px; Height: 150px; Crop</p>
									</td>
								</tr>
								
								<tr valign="top">
									<th scope="row">
										<label for="logo_x">Width</label>
									</th>
									<td>
										<input type="text" class="small-text" value="<?php echo $connections->options->getImgLogoX() ?>" id="logo_x" name="settings[image][logo][x]"/>px
									</td>
								</tr>				
								
								<tr valign="top">
									<th scope="row">
										<label for="logo_y">Height</label>
									</th>
									<td>
										<input type="text" class="small-text" value="<?php echo $connections->options->getImgLogoY() ?>" id="logo_y" name="settings[image][logo][y]"/>px
									</td>
								</tr>
								
								<tr valign="top">
									<th scope="row">
										Crop
									</th>
									<td>
										<?php echo $form->buildRadio('settings[image][logo][crop]', 'logo_crop', array('Crop (maintain aspect ratio)' => 'crop', 'Shrink (maintain aspect ratio)' => 'fill', 'None' => 'none'), $connections->options->getImgLogoCrop()); ?>
									</td>
								</tr>
								
							</tbody>
						</table>
					</div>
					
					
				</div>
			
			<p class="submit"><input class="button-primary" type="submit" value="Save Changes" name="save" /></p>
			
			<?php $form->close(); ?>
			
		</div>
		<div class="clear"></div>
	
	<?php }
}
 /**
  * Update the role settings.
  *
  * @access private
  * @since 0.7.5
  * @uses current_user_can()
  * @uses check_admin_referer()
  * @uses wp_redirect()
  * @uses get_admin_url()
  * @uses get_current_blog_id()
  * @return void
  */
 public static function updateRoleCapabilities()
 {
     /** @var $wp_roles WP_Roles */
     global $wp_roles;
     $form = new cnFormObjects();
     /*
      * Check whether user can edit roles
      */
     if (current_user_can('connections_change_roles')) {
         check_admin_referer($form->getNonce('update_role_settings'), '_cn_wpnonce');
         if (isset($_POST['roles'])) {
             // Cycle thru each role available because checkboxes do not report a value when not checked.
             foreach ($wp_roles->get_names() as $role => $name) {
                 if (!isset($_POST['roles'][$role])) {
                     continue;
                 }
                 foreach ($_POST['roles'][$role]['capabilities'] as $capability => $grant) {
                     // the administrator should always have all capabilities
                     if ($role == 'administrator') {
                         continue;
                     }
                     if ($grant == 'true') {
                         cnRole::add(esc_attr($role), esc_attr($capability));
                     } else {
                         cnRole::remove(esc_attr($role), esc_attr($capability));
                     }
                 }
             }
         }
         if (isset($_POST['reset'])) {
             cnRole::reset(array_map('esc_attr', $_POST['reset']));
         }
         if (isset($_POST['reset_all'])) {
             cnRole::reset();
         }
         cnMessage::set('success', 'role_settings_updated');
         wp_redirect(get_admin_url(get_current_blog_id(), 'admin.php?page=connections_roles'));
         exit;
     } else {
         cnMessage::set('error', 'capability_roles');
     }
 }
 /**
  * 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 &#8220;%s&#8221;', '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;
 }