├── README └── crmpress ├── footer.php ├── functions.php ├── header.php ├── home.php ├── images ├── bg-overlay.png ├── bg.png ├── bgt.png ├── content-bg.png ├── favicon.png ├── logo.png ├── nav-left.png ├── nav-right.png └── tape.png ├── index.php ├── lib ├── admin │ ├── dashboard.php │ ├── default-categories.php │ ├── images │ │ ├── archive.png │ │ ├── audio.png │ │ ├── bt_close.png │ │ ├── bt_login.png │ │ ├── bt_open.png │ │ ├── bt_register.png │ │ ├── code.png │ │ ├── default.png │ │ ├── document.png │ │ ├── favicon.png │ │ ├── interactive.png │ │ ├── spreadsheet.png │ │ ├── tab_b.png │ │ ├── tab_l.png │ │ ├── tab_m.png │ │ ├── tab_r.png │ │ ├── text.png │ │ └── video.png │ ├── menu-labelling.php │ ├── postscreen.php │ └── removals.php ├── build │ ├── content.php │ ├── footer.php │ ├── header.php │ ├── home.php │ └── post.php ├── classes │ └── metabox │ │ ├── README.txt │ │ ├── example-functions.php │ │ ├── images │ │ ├── ico-delete.png │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ ├── ui-bg_highlight-soft_75_cccccc_1x100.png │ │ ├── ui-icons_222222_256x240.png │ │ ├── ui-icons_2e83ff_256x240.png │ │ ├── ui-icons_454545_256x240.png │ │ ├── ui-icons_888888_256x240.png │ │ └── ui-icons_cd0a0a_256x240.png │ │ ├── init.php │ │ ├── jquery.cmbScripts.js │ │ ├── metabox-setup.php │ │ └── style.css ├── css │ ├── admin-css.css │ └── mobilize-css.php ├── functions │ ├── register-nav.php │ ├── register-sidebar.php │ └── register-taxonomies.php ├── init.php ├── js │ ├── includes.js │ ├── mobilize-js.php │ └── slide.js ├── metabox │ ├── README.txt │ ├── images │ │ ├── ico-delete.png │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ ├── ui-bg_highlight-soft_75_cccccc_1x100.png │ │ ├── ui-icons_222222_256x240.png │ │ ├── ui-icons_2e83ff_256x240.png │ │ ├── ui-icons_454545_256x240.png │ │ ├── ui-icons_888888_256x240.png │ │ └── ui-icons_cd0a0a_256x240.png │ ├── init.php │ ├── jquery.cmbScripts.js │ ├── metabox-setup.php │ └── style.css ├── resources │ ├── core-functions.php │ ├── file-type-uploads.php │ ├── icon-dir.php │ └── notes.php ├── theme.php └── widgets │ ├── widget-active-projects.php │ ├── widget-activity-graph.php │ ├── widget-forwarded.php │ ├── widget-inquiry-result.php │ ├── widget-inquiry.php │ ├── widget-old-prospects.php │ ├── widget-other-stats.php │ ├── widget-poc.php │ ├── widget-project-sources.php │ └── widget-referral.php ├── screenshot.png └── style.css /README: -------------------------------------------------------------------------------- 1 | It's time to take the wonderful TwentyTen CRM and turn it into a standalone theme. Enter CRM Press. 2 | 3 | This repo is for the development of the CRM Press theme. 4 | 5 | Authors: 6 | 7 | @author Bill Erickson 8 | @author Andrew Norcross 9 | @author Jared Atchison 10 | @author Thomas Griffin 11 | 12 | CHANGELOG 13 | 14 | ---------- 15 | 1.1.1 16 | ---------- 17 | 18 | -added support for automatic updates 19 | 20 | ---------- 21 | 1.1 22 | ---------- 23 | 24 | -minor bug fixes 25 | -added in functionality to the dashboard widget; it is now populated by active/scheduled projects and prospects 26 | 27 | ---------- 28 | 1.0 29 | ---------- 30 | 31 | -Initial release into the wild with some bug fixes -------------------------------------------------------------------------------- /crmpress/footer.php: -------------------------------------------------------------------------------- 1 | 15 | 16 | -------------------------------------------------------------------------------- /crmpress/functions.php: -------------------------------------------------------------------------------- 1 | 16 | 17 | ' . get_bloginfo( 'name' ) . ' Project Information'; 81 | 82 | echo '
'; 83 | echo '

Active Projects

'; 84 | echo '
    '; 85 | $active = new WP_Query( 'category_name=active-project&posts_per_page=20' ); 86 | while ( $active->have_posts() ) : $active->the_post(); 87 | $revenue = get_custom_field( $prefix . 'revenue' ); 88 | $expense = get_custom_field( $prefix . 'expense' ); 89 | $budget = $revenue - $expense; 90 | $status = get_custom_field( $prefix . 'status_summary' ); 91 | $url = get_custom_field( $prefix . 'client_url' ); 92 | echo '
  • '; ?> 93 |

    94 | Status:
    95 | Budget: - = $
    96 | Website: 97 | '; 98 | endwhile; 99 | echo '
'; 100 | 101 | wp_reset_query(); 102 | 103 | echo '
'; 104 | 105 | echo '
'; 106 | echo '

Scheduled Projects

'; 107 | echo '
    '; 108 | $schedule = new WP_Query( 'category_name=scheduled-project&posts_per_page=10' ); 109 | while ( $schedule->have_posts() ) : $schedule->the_post(); 110 | $revenue = get_custom_field( $prefix . 'revenue' ); 111 | $expense = get_custom_field( $prefix . 'expense' ); 112 | $budget = $revenue - $expense; 113 | $status = get_custom_field( $prefix . 'status_summary' ); 114 | $action = get_custom_field( $prefix . 'actionitem' ); 115 | echo '
  • '; ?> 116 |

    117 | Status:
    118 | Budget: - = $
    119 | Action Item: 120 | '; 121 | endwhile; wp_reset_query(); 122 | echo '
'; 123 | echo '
'; 124 | 125 | echo '
'; 126 | echo '

Prospects

'; 127 | echo '
    '; 128 | $prospect = new WP_Query( 'category_name=prospect&posts_per_page=10' ); 129 | while ( $prospect->have_posts() ) : $prospect->the_post(); 130 | $email = get_custom_field( $prefix . 'client_email' ); 131 | $url = get_custom_field( $prefix . 'client_url' ); 132 | $status = get_custom_field( $prefix . 'project_status' ); 133 | echo '
  • '; ?> 134 |

    135 | Status:
    136 | Email:
    137 | Website: 138 | '; 139 | endwhile; wp_reset_query(); 140 | echo '
'; 141 | echo '
'; 142 | 143 | echo '
'; 144 | 145 | } 146 | } -------------------------------------------------------------------------------- /crmpress/lib/admin/default-categories.php: -------------------------------------------------------------------------------- 1 | labels; 23 | $labels->name = 'Contacts'; 24 | $labels->singular_name = 'Contact'; 25 | $labels->add_new = 'Add Contact'; 26 | $labels->add_new_item = 'Add Contact'; 27 | $labels->edit_item = 'Edit Contacts'; 28 | $labels->new_item = 'Contact'; 29 | $labels->view_item = 'View Contact'; 30 | $labels->search_items = 'Search Contacts'; 31 | $labels->not_found = 'No Contacts found'; 32 | $labels->not_found_in_trash = 'No Contacts found in Trash'; 33 | 34 | } 35 | 36 | add_action( 'admin_menu', 'crmpress_change_post_menu_label' ); 37 | /** 38 | * 39 | * This function changes the default admin menu labelling of 'Post' to 'Contact'. 40 | * 41 | * @since 1.0 42 | * 43 | */ 44 | function crmpress_change_post_menu_label() { 45 | 46 | global $menu, $submenu; 47 | 48 | $menu[5][0] = 'Contacts'; 49 | $menu[10][0] = 'Files'; 50 | $submenu['edit.php'][5][0] = 'Contacts'; 51 | $submenu['edit.php'][10][0] = 'Add Contacts'; 52 | $submenu['edit.php'][15][0] = 'Status'; 53 | echo ''; 54 | 55 | } 56 | 57 | add_action( 'gettext', 'crmpress_change_title_text' ); 58 | /** 59 | * 60 | * This function changes the default Post Title text on the Edit/Add New Post screen. 61 | * 62 | * @since 1.0 63 | * 64 | */ 65 | function crmpress_change_title_text( $translation ) { 66 | 67 | global $post; 68 | 69 | if ( isset( $post ) ) { 70 | switch ( $post->post_type ) { 71 | case 'post' : 72 | if ( $translation == 'Enter title here' ) return 'Enter Contact Name Here'; 73 | break; 74 | } 75 | } 76 | 77 | return $translation; 78 | 79 | } 80 | 81 | add_filter( 'custom_menu_order', 'crmpress_custom_menu_order' ); 82 | add_filter( 'menu_order', 'crmpress_custom_menu_order' ); 83 | /** 84 | * 85 | * This function reorders the admin menu. 86 | * 87 | * @since 1.0 88 | * 89 | */ 90 | function crmpress_custom_menu_order( $menu_ord ) { 91 | 92 | if ( !$menu_ord ) return true; 93 | return array( 94 | 'index.php', // this represents the dashboard link 95 | 'edit.php', //the posts tab 96 | 'upload.php', // the media manager 97 | 'edit.php?post_type=page', //the posts tab 98 | ); 99 | 100 | } -------------------------------------------------------------------------------- /crmpress/lib/admin/postscreen.php: -------------------------------------------------------------------------------- 1 | '; 21 | $new_columns['title'] = _x('Contact Name', 'column name'); 22 | $new_columns['status'] = __('Status'); 23 | $new_columns['poc'] = __('Point Of Contact'); 24 | $new_columns['source'] = __('Source'); 25 | $new_columns['date'] = _x('Date', 'column name'); 26 | return $new_columns; 27 | 28 | } 29 | 30 | add_action( 'manage_posts_custom_column', 'crmpress_manage_columns', 10, 2 ); 31 | /** 32 | * 33 | * This function adds taxonomies to the new post column. 34 | * 35 | * @since 1.0 36 | * 37 | */ 38 | function crmpress_manage_columns( $column_name, $id ) { 39 | 40 | global $post; 41 | 42 | switch ( $column_name ) { 43 | case 'status': 44 | $category = get_the_category(); 45 | echo $category[0]->cat_name; 46 | break; 47 | case 'poc': 48 | echo get_the_term_list( $post->ID, 'poc', '', ', ', '' ); 49 | break; 50 | case 'source': 51 | echo get_the_term_list( $post->ID, 'sources', '', ', ', '' ); 52 | break; 53 | default: 54 | break; 55 | } // end switch 56 | 57 | } -------------------------------------------------------------------------------- /crmpress/lib/admin/removals.php: -------------------------------------------------------------------------------- 1 | Widgets section. 75 | * 76 | * @since 1.0 77 | * 78 | */ 79 | function crmpress_remove_widgets() { 80 | 81 | //unregister_widget( 'WP_Widget_Pages' ); 82 | //unregister_widget( 'WP_Widget_Calendar' ); 83 | unregister_widget( 'WP_Widget_Archives' ); 84 | unregister_widget( 'WP_Widget_Links' ); 85 | //unregister_widget( 'WP_Widget_Meta' ); 86 | //unregister_widget( 'WP_Widget_Search' ); 87 | unregister_widget( 'WP_Widget_Categories' ); 88 | //unregister_widget( 'WP_Widget_Recent_Posts' ); 89 | //unregister_widget( 'WP_Widget_Recent_Comments' ); 90 | unregister_widget( 'WP_Widget_RSS' ); 91 | unregister_widget( 'WP_Widget_Tag_Cloud' ); 92 | 93 | } 94 | 95 | /** 96 | * 97 | * This remove_action calls below remove unnecessary header items that are outputted by WordPress. 98 | * 99 | * @since 1.0 100 | * 101 | */ 102 | remove_action( 'wp_head', 'wlwmanifest_link' ); 103 | remove_action( 'wp_head', 'rsd_link' ); 104 | remove_action( 'wp_head', 'index_rel_link' ); 105 | remove_action( 'wp_head', 'parent_post_rel_link' ); 106 | remove_action( 'wp_head', 'start_post_rel_link' ); 107 | remove_action( 'wp_head', 'adjacent_posts_rel_link' ); -------------------------------------------------------------------------------- /crmpress/lib/build/content.php: -------------------------------------------------------------------------------- 1 | '; 29 | echo '
'; 30 | 31 | do_action( 'crmpress_before_content_sidebar_wrapper' ); 32 | 33 | echo ''; 113 | echo '
'; 114 | echo '
'; 115 | 116 | } -------------------------------------------------------------------------------- /crmpress/lib/build/footer.php: -------------------------------------------------------------------------------- 1 | '; // HTML 5 footer tag 23 | echo '
'; 24 | 25 | } 26 | 27 | add_action( 'crmpress_credits', 'crmpress_do_credits' ); 28 | /** 29 | * 30 | * This function outputs the credits to the CRM Press theme. 31 | * 32 | * @since 1.0 33 | * 34 | */ 35 | function crmpress_do_credits() { 36 | 37 | ?> 38 |

39 | '; 74 | echo ''; // HTML 5 footer tag 75 | 76 | } 77 | 78 | add_action( 'crmpress_after_wireframe', 'crmpress_structure_end' ); 79 | /** 80 | * 81 | * This function outputs the ending structure of the CRM Press theme. 82 | * 83 | * The following hooks are included in this action: 84 | * 85 | * wp_footer, crmpress_after_html 86 | * 87 | * @since 1.0 88 | * 89 | */ 90 | function crmpress_structure_end() { 91 | 92 | echo ''; // HTML 5 section tag 93 | wp_footer(); // Output this so plugins and other people don't get in a tizzy 94 | echo ''; 95 | 96 | do_action( 'crmpress_after_html' ); 97 | 98 | } -------------------------------------------------------------------------------- /crmpress/lib/build/header.php: -------------------------------------------------------------------------------- 1 | 25 | ', 'crmpress' ) ); ?> 26 | > 27 | 28 | 29 | 30 | items and such ?> 31 | tags. 39 | * 40 | * This is a modified version of the format used in the Twenty Eleven theme. 41 | * 42 | * @since 1.0 43 | * 44 | */ 45 | function crmpress_do_title() { 46 | 47 | ?> 48 | <?php 49 | 50 | global $page, $paged; 51 | 52 | wp_title( '|', true, 'right' ); 53 | 54 | // add the blog name 55 | bloginfo( 'name' ); 56 | 57 | // add the blog description for the home/front page 58 | $site_description = get_bloginfo( 'description', 'display' ); 59 | if ( $site_description && ( is_home() || is_front_page() ) ) 60 | echo " | $site_description"; 61 | 62 | // add a page number if necessary 63 | if ( $paged >= 2 || $page >= 2 ) 64 | echo ' | ' . sprintf( __( 'Page %s', 'twentyeleven' ), max( $paged, $page ) ); 65 | 66 | ?> 67 | tags. This also outputs our stylesheet for the theme. 75 | * 76 | * The following hooks are added to this function by default: 77 | * 78 | * crmpress_link_output 79 | * 80 | * @since 1.0 81 | * 82 | */ 83 | function crmpress_do_link_tags() { 84 | 85 | ?> 86 | 87 | 88 | 89 | 90 | tags or JavaScript ?> 91 | 112 | > 113 | '; // HTML 5 section tag 115 | 116 | } 117 | 118 | add_action( 'crmpress_header', 'crmpress_header_structure_start', 3 ); 119 | /** 120 | * 121 | * This function outputs the beginning structure of the CRM Press header. 122 | * 123 | * We add a low priority to this action to make sure that it fires before anything else in the crmpress_header hook. 124 | * 125 | * @since 1.0 126 | * 127 | */ 128 | function crmpress_header_structure_start() { 129 | 130 | echo ''; // HTML 5 header tag 231 | 232 | } -------------------------------------------------------------------------------- /crmpress/lib/build/home.php: -------------------------------------------------------------------------------- 1 | -1, 27 | 'posts_per_page' => -1 28 | ); 29 | 30 | $all = new WP_Query( apply_filters( 'crmpress_home_loop_args', __( $args, 'crmpress' ) ) ); 31 | global $prefix; 32 | 33 | do_action( 'crmpress_pre_stat_loop' ); 34 | 35 | global $total; 36 | $total = 0; 37 | while ( $all->have_posts() ) : $all->the_post(); global $post, $meta, $prefix; 38 | $meta = get_post_custom( $post->ID ); 39 | $total++; 40 | do_action( 'crmpress_stat_loop' ); 41 | endwhile; 42 | 43 | wp_reset_query(); 44 | 45 | } 46 | 47 | /** 48 | * 49 | * This function outputs the loop structure for our home template. 50 | * 51 | * The following hooks/filters are added to this function by default: 52 | * 53 | * crmpress_home_loop_args, crmpress_pre_stat_loop, crmpress_stat_loop 54 | * 55 | * @since 1.0 56 | * 57 | */ 58 | function crmpress_home_widgets() { 59 | 60 | ?> 61 |
    62 | 63 | Widgets > Home Row 1 and add some widgets. You may add up to three widgets in this sidebar.', 'crmpress' ); ?> 64 | 65 |
66 |
67 | 68 |
    69 | 70 | Widgets > Home Row 2 and add some widgets. You may add up to three widgets in this sidebar.', 'crmpress' ); ?> 71 | 72 |
73 |
74 | 75 |
    76 | 77 | Widgets > Home Row 3 and add some widgets. You may add up to three widgets in this sidebar.', 'crmpress' ); ?> 78 | 79 |
80 |
81 | ID ) && !is_single() ) { 25 | echo '

'; ?> 26 | 27 | '; ?> 28 | ID ) ) { 31 | echo '
'; 32 | echo '

'; 33 | echo the_title(); 34 | echo '

'; 35 | edit_post_link( __( '(Edit this entry)', 'crmpress' ), '' ); 36 | echo '
'; 37 | } 38 | 39 | } 40 | 41 | add_action( 'crmpress_before_post_content', 'crmpress_post_meta_information' ); 42 | /** 43 | * 44 | * This function outputs the single post content. 45 | * 46 | * The following hooks are added to this function by default: 47 | * 48 | * crmpress_extra_custom_fields 49 | * 50 | * @since 1.0 51 | * 52 | */ 53 | function crmpress_post_meta_information() { 54 | 55 | global $post, $prefix; 56 | 57 | $email = get_custom_field( $prefix . 'client_email' ); 58 | $phone = get_custom_field( $prefix . 'client_phone' ); 59 | $url = get_custom_field( $prefix . 'client_url' ); 60 | $other_referral = get_custom_field( $prefix . 'other_referral' ); 61 | $result = get_custom_field( $prefix . 'project_status' ); 62 | $summary = get_custom_field( $prefix . 'status_summary' ); 63 | $action = get_custom_field( $prefix . 'actionitem' ); 64 | $forward = get_custom_field( $prefix . 'forwarded_to' ); 65 | $reason = get_custom_field( $prefix . 'reason' ); 66 | $revenue = get_custom_field( $prefix . 'revenue' ); 67 | $expense = get_custom_field( $prefix . 'expense' ); 68 | $start = get_custom_field( $prefix . 'start_date' ); 69 | $end = get_custom_field( $prefix . 'end_date' ); 70 | do_action( 'crmpress_extra_custom_fields' ); // Hook to add extra custom fields 71 | 72 | echo '
'; 73 | echo '

Client Information

'; 74 | echo '

'; 75 | echo 'Prospect ID: ' . $post->ID . '
'; 76 | echo 'Status: '; the_terms( $post->ID, 'category', '', '' ); echo '
'; 77 | if ( $email ) echo 'Email: ' . $email . '
'; 78 | if ( $url ) echo 'URL: ' . $url . '
'; 79 | if ( $phone ) echo 'Phone: ' . $phone . '
'; 80 | if ( $other_referral ) echo 'Other Referral: ' . $other_referral . '
'; 81 | echo 'Source: '; the_terms( $post->ID, 'sources', '', '', '' ); echo '
'; 82 | echo 'Point of Contact: '; the_terms( $post->ID, 'poc', '', ' · ', '' ); echo '
'; 83 | if ( $action ) echo 'Timeline: ' . $action . '
'; 84 | echo '

'; 85 | echo '
'; 86 | 87 | echo '
'; 88 | echo '

Project Information

'; 89 | echo '

'; 90 | if ( $result ) echo 'Result: ' . $result . '
'; 91 | if ( $forward ) echo 'Forwarded to: ' . $forward . '
'; 92 | if ( $reason ) echo 'Reason: ' . $reason . '
'; 93 | if ( $revenue ) echo 'Revenue: $' . number_format( $revenue ) . '
'; 94 | if ( $expense) echo 'Expense: $' . number_format( $expense ) . '
'; 95 | if ( $start ) echo 'Start Date: ' . date( 'F j, Y', strtotime( $start ) ) . '
'; 96 | if ( $end ) echo 'End Date: ' . date( 'F j, Y', strtotime( $end ) ) . '
'; 97 | if ( $summary ) echo 'Status: ' . $summary . '
'; 98 | echo '

'; 99 | echo '
'; 100 | 101 | echo '
'; 102 | echo '

Attachments

'; 103 | echo '

'; 104 | $args = array( 105 | 'post_type' => 'attachment', 106 | 'numberposts' => null, 107 | 'post_status' => null, 108 | 'post_parent' => $post->ID 109 | ); 110 | $attachments = get_posts( $args ); 111 | if ( $attachments ) { 112 | echo '

    '; 113 | foreach ( $attachments as $attachment ) { 114 | echo '
  • ' . wp_get_attachment_link( $attachment->ID, array( 32,32 ), 0, 1, false ); 115 | echo ''; 116 | echo wp_get_attachment_link( $attachment->ID, '' , false, false, $attachment->post_title ); 117 | echo '
  • '; 118 | } 119 | echo '
'; 120 | } else { 121 | echo '

There are no attachments at this time.

'; 122 | } 123 | echo '
'; 124 | 125 | if ( $content = $post->post_content ) { 126 | echo '
'; 127 | echo '

Project Notes

'; 128 | the_content(); 129 | echo '
'; 130 | } 131 | 132 | echo '
'; 133 | 134 | } 135 | 136 | 137 | 138 | 139 | -------------------------------------------------------------------------------- /crmpress/lib/classes/metabox/README.txt: -------------------------------------------------------------------------------- 1 | === Custom Metaboxes and Fields === 2 | Contributors: Andrew Norcross (@norcross / andrewnorcross.com) mainly.. 3 | Jared Atchison (@jaredatch / jaredatchison.com) 4 | Version: 0.4 5 | Requires at least: 3.0 6 | Tested up to: 3.1 RC4 7 | 8 | == Description == 9 | 10 | This will create metaboxes with custom fields that will blow your mind. 11 | 12 | == Installation == 13 | 14 | This script is easy to install. If you can't figure it out you probably shouldn't be using it. 15 | 16 | 1. Place `metabox` directory inside your (activated) theme. E.g. inside /themes/twentyten/. 17 | 2. Edit theme's function.php to include /metabox/init.php. 18 | 3. See example-functions.php for further guidance. 19 | 20 | == Frequently Asked Questions == 21 | 22 | None yet. 23 | 24 | == Changelog == 25 | 26 | = 0.4 = 27 | * Think we have a release that is mostly working. We'll say the initial release :) 28 | 29 | 30 | -------------------------------------------------------------------------------- /crmpress/lib/classes/metabox/example-functions.php: -------------------------------------------------------------------------------- 1 | 'test_metabox', 9 | 'title' => 'Test Metabox', 10 | 'pages' => array('page'), // post type 11 | 'context' => 'normal', 12 | 'priority' => 'high', 13 | 'show_names' => true, // Show field names on the left 14 | 'fields' => array( 15 | array( 16 | 'name' => 'Test Text', 17 | 'desc' => 'field description (optional)', 18 | 'id' => $prefix . 'test_text', 19 | 'type' => 'text' 20 | ), 21 | array( 22 | 'name' => 'Test Text Small', 23 | 'desc' => 'field description (optional)', 24 | 'id' => $prefix . 'test_textsmall', 25 | 'type' => 'text_small' 26 | ), 27 | array( 28 | 'name' => 'Test Text Medium', 29 | 'desc' => 'field description (optional)', 30 | 'id' => $prefix . 'test_textmedium', 31 | 'type' => 'text_medium' 32 | ), 33 | array( 34 | 'name' => 'Test Date Picker', 35 | 'desc' => 'field description (optional)', 36 | 'id' => $prefix . 'test_textdate', 37 | 'type' => 'text_date' 38 | ), 39 | array( 40 | 'name' => 'Test Money', 41 | 'desc' => 'field description (optional)', 42 | 'id' => $prefix . 'test_textmoney', 43 | 'type' => 'text_money' 44 | ), 45 | array( 46 | 'name' => 'Test Text Area', 47 | 'desc' => 'field description (optional)', 48 | 'id' => $prefix . 'test_textarea', 49 | 'type' => 'textarea' 50 | ), 51 | array( 52 | 'name' => 'Test Text Area Small', 53 | 'desc' => 'field description (optional)', 54 | 'id' => $prefix . 'test_textareasmall', 55 | 'type' => 'textarea_small' 56 | ), 57 | array( 58 | 'name' => 'Test Title Weeeee', 59 | 'desc' => 'This is a title description', 60 | 'type' => 'title' 61 | ), 62 | array( 63 | 'name' => 'Test Select', 64 | 'desc' => 'field description (optional)', 65 | 'id' => $prefix . 'test_select', 66 | 'type' => 'select', 67 | 'options' => array( 68 | array('name' => 'Option One', 'value' => 'standard'), 69 | array('name' => 'Option Two', 'value' => 'custom'), 70 | array('name' => 'Option Three', 'value' => 'none') 71 | ) 72 | ), 73 | array( 74 | 'name' => 'Test Radio inline', 75 | 'desc' => 'field description (optional)', 76 | 'id' => $prefix . 'test_radio', 77 | 'type' => 'radio_inline', 78 | 'options' => array( 79 | array('name' => 'Option One', 'value' => 'standard'), 80 | array('name' => 'Option Two', 'value' => 'custom'), 81 | array('name' => 'Option Three', 'value' => 'none') 82 | ) 83 | ), 84 | array( 85 | 'name' => 'Test Radio', 86 | 'desc' => 'field description (optional)', 87 | 'id' => $prefix . 'test_radio', 88 | 'type' => 'radio', 89 | 'options' => array( 90 | array('name' => 'Option One', 'value' => 'standard'), 91 | array('name' => 'Option Two', 'value' => 'custom'), 92 | array('name' => 'Option Three', 'value' => 'none') 93 | ) 94 | ), 95 | array( 96 | 'name' => 'Test Checkbox', 97 | 'desc' => 'field description (optional)', 98 | 'id' => $prefix . 'test_checkbox', 99 | 'type' => 'checkbox' 100 | ), 101 | array( 102 | 'name' => 'Test Multi Checkbox', 103 | 'desc' => 'field description (optional)', 104 | 'id' => $prefix . 'test_multicheckbox', 105 | 'type' => 'multicheck', 106 | 'options' => array( 107 | 'check1' => 'Check One', 108 | 'check2' => 'Check Two', 109 | 'check3' => 'Check Three', 110 | ) 111 | ), 112 | array( 113 | 'name' => 'Test wysiwyg', 114 | 'desc' => 'field description (optional)', 115 | 'id' => $prefix . 'test_wysiwyg', 116 | 'type' => 'wysiwyg' 117 | ), 118 | array( 119 | 'name' => 'Test Image', 120 | 'desc' => 'Upload an image or enter an URL.', 121 | 'id' => $prefix . 'test_image', 122 | 'type' => 'file' 123 | ), 124 | ) 125 | ); -------------------------------------------------------------------------------- /crmpress/lib/classes/metabox/images/ico-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thomasgriffin/CRM-Press/93a6be2910c3cc1b1a68c050b9e547cf42a0dd3a/crmpress/lib/classes/metabox/images/ico-delete.png -------------------------------------------------------------------------------- /crmpress/lib/classes/metabox/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thomasgriffin/CRM-Press/93a6be2910c3cc1b1a68c050b9e547cf42a0dd3a/crmpress/lib/classes/metabox/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /crmpress/lib/classes/metabox/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thomasgriffin/CRM-Press/93a6be2910c3cc1b1a68c050b9e547cf42a0dd3a/crmpress/lib/classes/metabox/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /crmpress/lib/classes/metabox/images/ui-bg_glass_55_fbf9ee_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thomasgriffin/CRM-Press/93a6be2910c3cc1b1a68c050b9e547cf42a0dd3a/crmpress/lib/classes/metabox/images/ui-bg_glass_55_fbf9ee_1x400.png -------------------------------------------------------------------------------- /crmpress/lib/classes/metabox/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thomasgriffin/CRM-Press/93a6be2910c3cc1b1a68c050b9e547cf42a0dd3a/crmpress/lib/classes/metabox/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /crmpress/lib/classes/metabox/images/ui-bg_glass_75_dadada_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thomasgriffin/CRM-Press/93a6be2910c3cc1b1a68c050b9e547cf42a0dd3a/crmpress/lib/classes/metabox/images/ui-bg_glass_75_dadada_1x400.png -------------------------------------------------------------------------------- /crmpress/lib/classes/metabox/images/ui-bg_glass_75_e6e6e6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thomasgriffin/CRM-Press/93a6be2910c3cc1b1a68c050b9e547cf42a0dd3a/crmpress/lib/classes/metabox/images/ui-bg_glass_75_e6e6e6_1x400.png -------------------------------------------------------------------------------- /crmpress/lib/classes/metabox/images/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thomasgriffin/CRM-Press/93a6be2910c3cc1b1a68c050b9e547cf42a0dd3a/crmpress/lib/classes/metabox/images/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /crmpress/lib/classes/metabox/images/ui-bg_highlight-soft_75_cccccc_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thomasgriffin/CRM-Press/93a6be2910c3cc1b1a68c050b9e547cf42a0dd3a/crmpress/lib/classes/metabox/images/ui-bg_highlight-soft_75_cccccc_1x100.png -------------------------------------------------------------------------------- /crmpress/lib/classes/metabox/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thomasgriffin/CRM-Press/93a6be2910c3cc1b1a68c050b9e547cf42a0dd3a/crmpress/lib/classes/metabox/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /crmpress/lib/classes/metabox/images/ui-icons_2e83ff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thomasgriffin/CRM-Press/93a6be2910c3cc1b1a68c050b9e547cf42a0dd3a/crmpress/lib/classes/metabox/images/ui-icons_2e83ff_256x240.png -------------------------------------------------------------------------------- /crmpress/lib/classes/metabox/images/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thomasgriffin/CRM-Press/93a6be2910c3cc1b1a68c050b9e547cf42a0dd3a/crmpress/lib/classes/metabox/images/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /crmpress/lib/classes/metabox/images/ui-icons_888888_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thomasgriffin/CRM-Press/93a6be2910c3cc1b1a68c050b9e547cf42a0dd3a/crmpress/lib/classes/metabox/images/ui-icons_888888_256x240.png -------------------------------------------------------------------------------- /crmpress/lib/classes/metabox/images/ui-icons_cd0a0a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thomasgriffin/CRM-Press/93a6be2910c3cc1b1a68c050b9e547cf42a0dd3a/crmpress/lib/classes/metabox/images/ui-icons_cd0a0a_256x240.png -------------------------------------------------------------------------------- /crmpress/lib/classes/metabox/init.php: -------------------------------------------------------------------------------- 1 | _meta_box = $meta_box; 68 | 69 | $upload = false; 70 | foreach ( $meta_box['fields'] as $field ) { 71 | if ( $field['type'] == 'file' || $field['type'] == 'file_list' ) { 72 | $upload = true; 73 | break; 74 | } 75 | } 76 | 77 | $current_page = substr(strrchr($_SERVER['PHP_SELF'], '/'), 1, -4); 78 | 79 | if ( $upload && ( $current_page == 'page' || $current_page == 'page-new' || $current_page == 'post' || $current_page == 'post-new' ) ) { 80 | add_action('admin_head', array(&$this, 'add_post_enctype')); 81 | } 82 | 83 | add_action( 'admin_menu', array(&$this, 'add') ); 84 | add_action( 'save_post', array(&$this, 'save') ); 85 | } 86 | 87 | function add_post_enctype() { 88 | echo ' 89 | '; 95 | } 96 | 97 | /// Add metaboxes 98 | function add() { 99 | $this->_meta_box['context'] = empty($this->_meta_box['context']) ? 'normal' : $this->_meta_box['context']; 100 | $this->_meta_box['priority'] = empty($this->_meta_box['priority']) ? 'high' : $this->_meta_box['priority']; 101 | foreach ($this->_meta_box['pages'] as $page) { 102 | add_meta_box($this->_meta_box['id'], $this->_meta_box['title'], array(&$this, 'show'), $page, $this->_meta_box['context'], $this->_meta_box['priority']); 103 | } 104 | } 105 | 106 | // Show fields 107 | function show() { 108 | global $post; 109 | 110 | // Use nonce for verification 111 | echo ''; 112 | echo ''; 113 | 114 | foreach ( $this->_meta_box['fields'] as $field ) { 115 | // Set up blank values for empty ones 116 | if ( !isset($field['desc']) ) $field['desc'] = ''; 117 | if ( !isset($field['std']) ) $field['std'] = ''; 118 | 119 | $meta = get_post_meta( $post->ID, $field['id'], 'multicheck' != $field['type'] /* If multicheck this can be multiple values */ ); 120 | 121 | echo ''; 122 | 123 | if ( $field['type'] == "title" ) { 124 | echo ''; 128 | } 129 | echo '',''; 247 | } 248 | echo '
'; 125 | } else { 126 | if( $this->_meta_box['show_names'] == true ) { 127 | echo ''; 130 | } 131 | 132 | switch ( $field['type'] ) { 133 | case 'text': 134 | echo '', 135 | '

', $field['desc'], '

'; 136 | break; 137 | case 'text_small': 138 | echo '', $field['desc'], ''; 139 | break; 140 | case 'text_medium': 141 | echo '', $field['desc'], ''; 142 | break; 143 | case 'text_date': 144 | echo '', $field['desc'], ''; 145 | break; 146 | case 'text_money': 147 | echo '$ ', $field['desc'], ''; 148 | break; 149 | case 'textarea': 150 | echo '', 151 | '

', $field['desc'], '

'; 152 | break; 153 | case 'textarea_small': 154 | echo '', 155 | '

', $field['desc'], '

'; 156 | break; 157 | case 'select': 158 | echo ''; 163 | echo '

', $field['desc'], '

'; 164 | break; 165 | case 'radio_inline': 166 | echo '
'; 167 | foreach ($field['options'] as $option) { 168 | echo '
', $option['name'], '
'; 169 | } 170 | echo '
'; 171 | echo '

', $field['desc'], '

'; 172 | break; 173 | case 'radio': 174 | foreach ($field['options'] as $option) { 175 | echo '

', $option['name'].'

'; 176 | } 177 | echo '

', $field['desc'], '

'; 178 | break; 179 | case 'checkbox': 180 | echo ''; 181 | echo '', $field['desc'], ''; 182 | break; 183 | case 'multicheck': 184 | echo '
    '; 185 | foreach ( $field['options'] as $value => $name ) { 186 | // Append `[]` to the name to get multiple values 187 | // Use in_array() to check whether the current option should be checked 188 | echo '
  • '; 189 | } 190 | echo '
'; 191 | echo '', $field['desc'], ''; 192 | break; 193 | case 'title': 194 | echo '
', $field['name'], '
'; 195 | echo '

', $field['desc'], '

'; 196 | break; 197 | case 'wysiwyg': 198 | echo ''; 199 | echo '

', $field['desc'], '

'; 200 | break; 201 | case 'file_list': 202 | echo ''; 203 | echo ''; 204 | echo '

', $field['desc'], '

'; 205 | $args = array( 206 | 'post_type' => 'attachment', 207 | 'numberposts' => null, 208 | 'post_status' => null, 209 | 'post_parent' => $post->ID 210 | ); 211 | $attachments = get_posts($args); 212 | if ($attachments) { 213 | echo '
    '; 214 | foreach ($attachments as $attachment) { 215 | echo '
  • '.wp_get_attachment_link($attachment->ID, 'thumbnail', 0, 0, 'Download'); 216 | echo ''; 217 | echo apply_filters('the_title', ' '.$attachment->post_title); 218 | echo '
  • '; 219 | } 220 | echo '
'; 221 | } 222 | break; 223 | case 'file': 224 | echo ''; 225 | echo ''; 226 | echo '

', $field['desc'], '

'; 227 | echo '
'; 228 | if ( $meta != '' ) { 229 | $check_image = preg_match( '/(^.*\.jpg|jpeg|png|gif|ico*)/i', $meta ); 230 | if ( $check_image ) { 231 | echo '
'; 232 | echo ''; 233 | echo 'Remove Image'; 234 | echo '
'; 235 | } else { 236 | $parts = explode( "/", $meta ); 237 | for( $i = 0; $i < sizeof( $parts ); ++$i ) { 238 | $title = $parts[$i]; 239 | } 240 | echo 'File: ', $title, '    (Download / Remove)'; 241 | } 242 | } 243 | echo '
'; 244 | break; 245 | } 246 | echo '
'; 249 | } 250 | 251 | // Save data from metabox 252 | function save( $post_id) { 253 | // verify nonce 254 | if ( ! isset( $_POST['wp_meta_box_nonce'] ) || !wp_verify_nonce($_POST['wp_meta_box_nonce'], basename(__FILE__))) { 255 | return $post_id; 256 | } 257 | 258 | // check autosave 259 | if ( defined('DOING_AUTOSAVE' ) && DOING_AUTOSAVE) { 260 | return $post_id; 261 | } 262 | 263 | // check permissions 264 | if ( 'page' == $_POST['post_type'] ) { 265 | if ( !current_user_can( 'edit_page', $post_id ) ) { 266 | return $post_id; 267 | } 268 | } elseif ( !current_user_can( 'edit_post', $post_id ) ) { 269 | return $post_id; 270 | } 271 | 272 | foreach ( $this->_meta_box['fields'] as $field ) { 273 | $name = $field['id']; 274 | $old = get_post_meta( $post_id, $name, 'multicheck' != $field['type'] /* If multicheck this can be multiple values */ ); 275 | $new = isset( $_POST[$field['id']] ) ? $_POST[$field['id']] : null; 276 | 277 | if ( $field['type'] == 'wysiwyg' ) { 278 | $new = wpautop($new); 279 | } 280 | 281 | if ( ($field['type'] == 'textarea') || ($field['type'] == 'textarea_small') ) { 282 | $new = htmlspecialchars($new); 283 | } 284 | 285 | // validate meta value 286 | if ( isset($field['validate_func']) ) { 287 | $ok = call_user_func(array('cmb_Meta_Box_Validate', $field['validate_func']), $new); 288 | if ( $ok === false ) { // pass away when meta value is invalid 289 | continue; 290 | } 291 | } elseif ( 'multicheck' == $field['type'] ) { 292 | // Do the saving in two steps: first get everything we don't have yet 293 | // Then get everything we should not have anymore 294 | if ( empty( $new ) ) { 295 | $new = array(); 296 | } 297 | $aNewToAdd = array_diff( $new, $old ); 298 | $aOldToDelete = array_diff( $old, $new ); 299 | foreach ( $aNewToAdd as $newToAdd ) { 300 | add_post_meta( $post_id, $name, $newToAdd, false ); 301 | } 302 | foreach ( $aOldToDelete as $oldToDelete ) { 303 | delete_post_meta( $post_id, $name, $oldToDelete ); 304 | } 305 | } elseif ($new && $new != $old) { 306 | update_post_meta($post_id, $name, $new); 307 | } elseif ('' == $new && $old && $field['type'] != 'file') { 308 | delete_post_meta($post_id, $name, $old); 309 | } 310 | } 311 | } 312 | } 313 | 314 | 315 | /** 316 | * Adding scripts and styles 317 | */ 318 | 319 | function cmb_scripts( $hook ) { 320 | if ( $hook == 'post.php' OR $hook == 'post-new.php' OR $hook == 'page-new.php' OR $hook == 'page.php' ) { 321 | wp_enqueue_script( 'jquery-ui-core' ); // Make sure and use elements form the 1.7.3 UI - not 1.8.9 322 | wp_enqueue_script( 'media-upload' ); 323 | wp_enqueue_script( 'thickbox' ); 324 | wp_register_script( 'cmb-scripts', get_bloginfo('stylesheet_directory').'/lib/metabox/jquery.cmbScripts.js', array('jquery','media-upload','thickbox')); 325 | wp_enqueue_script( 'cmb-scripts' ); 326 | wp_enqueue_style( 'thickbox' ); 327 | wp_enqueue_style( 'jquery-custom-ui' ); 328 | add_action( 'admin_head', 'cmb_styles_inline' ); 329 | } 330 | } 331 | add_action( 'admin_enqueue_scripts', 'cmb_scripts',10,1 ); 332 | 333 | function cmb_styles_inline() { 334 | echo ''; 335 | // For some reason this script doesn't like to register 336 | ?> 337 | 362 | 'client_information', 16 | 'title' => 'Client Information', 17 | 'pages' => array( 'post' ), // post type 18 | 'context' => 'normal', 19 | 'priority' => 'high', 20 | 'show_names' => true, // Show field names left of input 21 | 'fields' => array( 22 | array( 23 | 'name' => 'Client Email', 24 | 'id' => $prefix . 'client_email', 25 | 'desc' => 'Client Email', 26 | 'type' => 'text', 27 | ), 28 | array( 29 | 'name' => 'Client Phone', 30 | 'id' => $prefix . 'client_phone', 31 | 'desc' => 'Client Phone', 32 | 'type' => 'text', 33 | ), 34 | array( 35 | 'name' => 'Client URL', 36 | 'id' => $prefix . 'client_url', 37 | 'desc' => 'Client URL', 38 | 'type' => 'text', 39 | ), 40 | array( 41 | 'name' => 'Other Referral', 42 | 'id' => $prefix . 'other_referral', 43 | 'desc' => 'Other Referral Source', 44 | 'type' => 'text', 45 | ) 46 | ) 47 | ); 48 | 49 | $meta_boxes[] = array( 50 | 'id' => 'project_information', 51 | 'title' => 'Project Information', 52 | 'pages' => array( 'post' ), // post type 53 | 'context' => 'normal', 54 | 'priority' => 'high', 55 | 'show_names' => true, // Show field names left of input 56 | 'fields' => array( 57 | array( 58 | 'name' => 'Project Status', 59 | 'id' => $prefix . 'project_status', 60 | 'type' => 'radio_inline', 61 | 'options' => array( 62 | array( 'name' => 'In Progress', 'value' => 'in progress' ), 63 | array( 'name' => 'No Response', 'value' => 'no response' ), 64 | array( 'name' => 'Forwarded Away', 'value' => 'forwarded away' ), 65 | array( 'name' => 'Quoted and Lost', 'value' => 'quoted and lost' ), 66 | array( 'name' => 'Quoted and Won', 'value' => 'quoted and won' ) 67 | ) 68 | ), 69 | array( 70 | 'name' => 'Status Summary', 71 | 'id' => $prefix . 'status_summary', 72 | 'type' => 'text', 73 | ), 74 | array( 75 | 'name' => 'Action Item', 76 | 'id' => $prefix . 'actionitem', 77 | 'type' => 'select', 78 | 'options' => array( 79 | array( 'name' => '', 'value' => '' ), 80 | array( 'name' => 'Awaiting Start Date', 'value' => 'awaiting start date' ), 81 | array( 'name' => 'Awaiting Client Approval', 'value' => 'awaiting approval' ), 82 | array( 'name' => 'Sending Contract', 'value' => 'sending contract' ), 83 | array( 'name' => 'Sending Deposit Invoice', 'value' => 'sending deposit invoice' ), 84 | array( 'name' => 'Awaiting Content', 'value' => 'awaiting content' ), 85 | ) 86 | ), 87 | array( 88 | 'name' => 'Reason', 89 | 'id' => $prefix . 'reason', 90 | 'type' => 'select', 91 | 'options' => array( 92 | array( 'name' => '', 'value' => '' ), 93 | array( 'name' => 'accepted project', 'value' => 'accepted project' ), 94 | array( 'name' => 'project too small', 'value' => 'project too small' ), 95 | array( 'name' => 'not interested', 'value' => 'not interested' ), 96 | array( 'name' => 'outside expertise', 'value' => 'outside expertise' ), 97 | array( 'name' => 'timeframe too short', 'value' => 'timeframe too short' ) 98 | ) 99 | ), 100 | array( 101 | 'name' => 'Revenue', 102 | 'id' => $prefix . 'revenue', 103 | 'type' => 'text_money', 104 | ), 105 | array( 106 | 'name' => 'Expense', 107 | 'id' => $prefix . 'expense', 108 | 'type' => 'text_money', 109 | ), 110 | array( 111 | 'name' => 'Start Date', 112 | 'id' => $prefix . 'start_date', 113 | 'desc' => 'Start Date (YYYY-MM-DD)', 114 | 'type' => 'text_date', 115 | ), 116 | array( 117 | 'name' => 'End Date', 118 | 'id' => $prefix . 'end_date', 119 | 'desc' => 'End Date (YYYY-MM-DD)', 120 | 'type' => 'text_date', 121 | ), 122 | array( 123 | 'name' => 'File Upload', 124 | 'id' => $prefix . 'img_upload', 125 | 'desc' => 'Attach files', 126 | 'type' => 'file_list', 127 | ), 128 | ) 129 | ); 130 | 131 | $meta_boxes[] = array( 132 | 'id' => 'crm_notes', 133 | 'title' => 'Notes', 134 | 'pages' => array( 'post' ), // post type 135 | 'context' => 'normal', 136 | 'priority' => 'high', 137 | 'show_names' => false, // Show field names left of input 138 | 'fields' => array() 139 | ); -------------------------------------------------------------------------------- /crmpress/lib/classes/metabox/style.css: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery UI CSS Framework 3 | * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) 4 | * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. 5 | */ 6 | 7 | /* Layout helpers 8 | ----------------------------------*/ 9 | .ui-helper-hidden { display: none; } 10 | .ui-helper-hidden-accessible { position: absolute; left: -99999999px; } 11 | .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } 12 | .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } 13 | .ui-helper-clearfix { display: inline-block; } 14 | /* required comment for clearfix to work in Opera \*/ 15 | * html .ui-helper-clearfix { height:1%; } 16 | .ui-helper-clearfix { display:block; } 17 | /* end clearfix */ 18 | .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } 19 | 20 | 21 | /* Interaction Cues 22 | ----------------------------------*/ 23 | .ui-state-disabled { cursor: default !important; } 24 | 25 | 26 | /* Icons 27 | ----------------------------------*/ 28 | 29 | /* states and images */ 30 | .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } 31 | 32 | 33 | /* Misc visuals 34 | ----------------------------------*/ 35 | 36 | /* Overlays */ 37 | .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } 38 | 39 | /* 40 | * jQuery UI CSS Framework 41 | * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) 42 | * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. 43 | * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px 44 | */ 45 | 46 | 47 | /* Component containers 48 | ----------------------------------*/ 49 | .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; } 50 | .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } 51 | .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } 52 | .ui-widget-content a { color: #222222; } 53 | .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } 54 | .ui-widget-header a { color: #222222; } 55 | 56 | /* Interaction states 57 | ----------------------------------*/ 58 | .ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; outline: none; } 59 | .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; outline: none; } 60 | .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; outline: none; } 61 | .ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; outline: none; } 62 | .ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; outline: none; } 63 | .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; outline: none; text-decoration: none; } 64 | 65 | /* Interaction Cues 66 | ----------------------------------*/ 67 | .ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; } 68 | .ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; } 69 | .ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; } 70 | .ui-state-error a, .ui-widget-content .ui-state-error a { color: #cd0a0a; } 71 | .ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #cd0a0a; } 72 | .ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } 73 | .ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; } 74 | .ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } 75 | 76 | /* Icons 77 | ----------------------------------*/ 78 | 79 | /* states and images */ 80 | .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } 81 | .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } 82 | .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } 83 | .ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); } 84 | .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } 85 | .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } 86 | .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } 87 | .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); } 88 | 89 | /* positioning */ 90 | .ui-icon-carat-1-n { background-position: 0 0; } 91 | .ui-icon-carat-1-ne { background-position: -16px 0; } 92 | .ui-icon-carat-1-e { background-position: -32px 0; } 93 | .ui-icon-carat-1-se { background-position: -48px 0; } 94 | .ui-icon-carat-1-s { background-position: -64px 0; } 95 | .ui-icon-carat-1-sw { background-position: -80px 0; } 96 | .ui-icon-carat-1-w { background-position: -96px 0; } 97 | .ui-icon-carat-1-nw { background-position: -112px 0; } 98 | .ui-icon-carat-2-n-s { background-position: -128px 0; } 99 | .ui-icon-carat-2-e-w { background-position: -144px 0; } 100 | .ui-icon-triangle-1-n { background-position: 0 -16px; } 101 | .ui-icon-triangle-1-ne { background-position: -16px -16px; } 102 | .ui-icon-triangle-1-e { background-position: -32px -16px; } 103 | .ui-icon-triangle-1-se { background-position: -48px -16px; } 104 | .ui-icon-triangle-1-s { background-position: -64px -16px; } 105 | .ui-icon-triangle-1-sw { background-position: -80px -16px; } 106 | .ui-icon-triangle-1-w { background-position: -96px -16px; } 107 | .ui-icon-triangle-1-nw { background-position: -112px -16px; } 108 | .ui-icon-triangle-2-n-s { background-position: -128px -16px; } 109 | .ui-icon-triangle-2-e-w { background-position: -144px -16px; } 110 | .ui-icon-arrow-1-n { background-position: 0 -32px; } 111 | .ui-icon-arrow-1-ne { background-position: -16px -32px; } 112 | .ui-icon-arrow-1-e { background-position: -32px -32px; } 113 | .ui-icon-arrow-1-se { background-position: -48px -32px; } 114 | .ui-icon-arrow-1-s { background-position: -64px -32px; } 115 | .ui-icon-arrow-1-sw { background-position: -80px -32px; } 116 | .ui-icon-arrow-1-w { background-position: -96px -32px; } 117 | .ui-icon-arrow-1-nw { background-position: -112px -32px; } 118 | .ui-icon-arrow-2-n-s { background-position: -128px -32px; } 119 | .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } 120 | .ui-icon-arrow-2-e-w { background-position: -160px -32px; } 121 | .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } 122 | .ui-icon-arrowstop-1-n { background-position: -192px -32px; } 123 | .ui-icon-arrowstop-1-e { background-position: -208px -32px; } 124 | .ui-icon-arrowstop-1-s { background-position: -224px -32px; } 125 | .ui-icon-arrowstop-1-w { background-position: -240px -32px; } 126 | .ui-icon-arrowthick-1-n { background-position: 0 -48px; } 127 | .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } 128 | .ui-icon-arrowthick-1-e { background-position: -32px -48px; } 129 | .ui-icon-arrowthick-1-se { background-position: -48px -48px; } 130 | .ui-icon-arrowthick-1-s { background-position: -64px -48px; } 131 | .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } 132 | .ui-icon-arrowthick-1-w { background-position: -96px -48px; } 133 | .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } 134 | .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } 135 | .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } 136 | .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } 137 | .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } 138 | .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } 139 | .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } 140 | .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } 141 | .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } 142 | .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } 143 | .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } 144 | .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } 145 | .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } 146 | .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } 147 | .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } 148 | .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } 149 | .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } 150 | .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } 151 | .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } 152 | .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } 153 | .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } 154 | .ui-icon-arrow-4 { background-position: 0 -80px; } 155 | .ui-icon-arrow-4-diag { background-position: -16px -80px; } 156 | .ui-icon-extlink { background-position: -32px -80px; } 157 | .ui-icon-newwin { background-position: -48px -80px; } 158 | .ui-icon-refresh { background-position: -64px -80px; } 159 | .ui-icon-shuffle { background-position: -80px -80px; } 160 | .ui-icon-transfer-e-w { background-position: -96px -80px; } 161 | .ui-icon-transferthick-e-w { background-position: -112px -80px; } 162 | .ui-icon-folder-collapsed { background-position: 0 -96px; } 163 | .ui-icon-folder-open { background-position: -16px -96px; } 164 | .ui-icon-document { background-position: -32px -96px; } 165 | .ui-icon-document-b { background-position: -48px -96px; } 166 | .ui-icon-note { background-position: -64px -96px; } 167 | .ui-icon-mail-closed { background-position: -80px -96px; } 168 | .ui-icon-mail-open { background-position: -96px -96px; } 169 | .ui-icon-suitcase { background-position: -112px -96px; } 170 | .ui-icon-comment { background-position: -128px -96px; } 171 | .ui-icon-person { background-position: -144px -96px; } 172 | .ui-icon-print { background-position: -160px -96px; } 173 | .ui-icon-trash { background-position: -176px -96px; } 174 | .ui-icon-locked { background-position: -192px -96px; } 175 | .ui-icon-unlocked { background-position: -208px -96px; } 176 | .ui-icon-bookmark { background-position: -224px -96px; } 177 | .ui-icon-tag { background-position: -240px -96px; } 178 | .ui-icon-home { background-position: 0 -112px; } 179 | .ui-icon-flag { background-position: -16px -112px; } 180 | .ui-icon-calendar { background-position: -32px -112px; } 181 | .ui-icon-cart { background-position: -48px -112px; } 182 | .ui-icon-pencil { background-position: -64px -112px; } 183 | .ui-icon-clock { background-position: -80px -112px; } 184 | .ui-icon-disk { background-position: -96px -112px; } 185 | .ui-icon-calculator { background-position: -112px -112px; } 186 | .ui-icon-zoomin { background-position: -128px -112px; } 187 | .ui-icon-zoomout { background-position: -144px -112px; } 188 | .ui-icon-search { background-position: -160px -112px; } 189 | .ui-icon-wrench { background-position: -176px -112px; } 190 | .ui-icon-gear { background-position: -192px -112px; } 191 | .ui-icon-heart { background-position: -208px -112px; } 192 | .ui-icon-star { background-position: -224px -112px; } 193 | .ui-icon-link { background-position: -240px -112px; } 194 | .ui-icon-cancel { background-position: 0 -128px; } 195 | .ui-icon-plus { background-position: -16px -128px; } 196 | .ui-icon-plusthick { background-position: -32px -128px; } 197 | .ui-icon-minus { background-position: -48px -128px; } 198 | .ui-icon-minusthick { background-position: -64px -128px; } 199 | .ui-icon-close { background-position: -80px -128px; } 200 | .ui-icon-closethick { background-position: -96px -128px; } 201 | .ui-icon-key { background-position: -112px -128px; } 202 | .ui-icon-lightbulb { background-position: -128px -128px; } 203 | .ui-icon-scissors { background-position: -144px -128px; } 204 | .ui-icon-clipboard { background-position: -160px -128px; } 205 | .ui-icon-copy { background-position: -176px -128px; } 206 | .ui-icon-contact { background-position: -192px -128px; } 207 | .ui-icon-image { background-position: -208px -128px; } 208 | .ui-icon-video { background-position: -224px -128px; } 209 | .ui-icon-script { background-position: -240px -128px; } 210 | .ui-icon-alert { background-position: 0 -144px; } 211 | .ui-icon-info { background-position: -16px -144px; } 212 | .ui-icon-notice { background-position: -32px -144px; } 213 | .ui-icon-help { background-position: -48px -144px; } 214 | .ui-icon-check { background-position: -64px -144px; } 215 | .ui-icon-bullet { background-position: -80px -144px; } 216 | .ui-icon-radio-off { background-position: -96px -144px; } 217 | .ui-icon-radio-on { background-position: -112px -144px; } 218 | .ui-icon-pin-w { background-position: -128px -144px; } 219 | .ui-icon-pin-s { background-position: -144px -144px; } 220 | .ui-icon-play { background-position: 0 -160px; } 221 | .ui-icon-pause { background-position: -16px -160px; } 222 | .ui-icon-seek-next { background-position: -32px -160px; } 223 | .ui-icon-seek-prev { background-position: -48px -160px; } 224 | .ui-icon-seek-end { background-position: -64px -160px; } 225 | .ui-icon-seek-first { background-position: -80px -160px; } 226 | .ui-icon-stop { background-position: -96px -160px; } 227 | .ui-icon-eject { background-position: -112px -160px; } 228 | .ui-icon-volume-off { background-position: -128px -160px; } 229 | .ui-icon-volume-on { background-position: -144px -160px; } 230 | .ui-icon-power { background-position: 0 -176px; } 231 | .ui-icon-signal-diag { background-position: -16px -176px; } 232 | .ui-icon-signal { background-position: -32px -176px; } 233 | .ui-icon-battery-0 { background-position: -48px -176px; } 234 | .ui-icon-battery-1 { background-position: -64px -176px; } 235 | .ui-icon-battery-2 { background-position: -80px -176px; } 236 | .ui-icon-battery-3 { background-position: -96px -176px; } 237 | .ui-icon-circle-plus { background-position: 0 -192px; } 238 | .ui-icon-circle-minus { background-position: -16px -192px; } 239 | .ui-icon-circle-close { background-position: -32px -192px; } 240 | .ui-icon-circle-triangle-e { background-position: -48px -192px; } 241 | .ui-icon-circle-triangle-s { background-position: -64px -192px; } 242 | .ui-icon-circle-triangle-w { background-position: -80px -192px; } 243 | .ui-icon-circle-triangle-n { background-position: -96px -192px; } 244 | .ui-icon-circle-arrow-e { background-position: -112px -192px; } 245 | .ui-icon-circle-arrow-s { background-position: -128px -192px; } 246 | .ui-icon-circle-arrow-w { background-position: -144px -192px; } 247 | .ui-icon-circle-arrow-n { background-position: -160px -192px; } 248 | .ui-icon-circle-zoomin { background-position: -176px -192px; } 249 | .ui-icon-circle-zoomout { background-position: -192px -192px; } 250 | .ui-icon-circle-check { background-position: -208px -192px; } 251 | .ui-icon-circlesmall-plus { background-position: 0 -208px; } 252 | .ui-icon-circlesmall-minus { background-position: -16px -208px; } 253 | .ui-icon-circlesmall-close { background-position: -32px -208px; } 254 | .ui-icon-squaresmall-plus { background-position: -48px -208px; } 255 | .ui-icon-squaresmall-minus { background-position: -64px -208px; } 256 | .ui-icon-squaresmall-close { background-position: -80px -208px; } 257 | .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } 258 | .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } 259 | .ui-icon-grip-solid-vertical { background-position: -32px -224px; } 260 | .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } 261 | .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } 262 | .ui-icon-grip-diagonal-se { background-position: -80px -224px; } 263 | 264 | 265 | /* Misc visuals 266 | ----------------------------------*/ 267 | 268 | /* Corner radius */ 269 | .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; } 270 | .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; } 271 | .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; } 272 | .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; } 273 | .ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; } 274 | .ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; } 275 | .ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; } 276 | .ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; } 277 | .ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; } 278 | 279 | /* Overlays */ 280 | .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } 281 | .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; }/* Datepicker 282 | ----------------------------------*/ 283 | .ui-datepicker { width: 17em; padding: .2em .2em 0; } 284 | .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } 285 | .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } 286 | .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } 287 | .ui-datepicker .ui-datepicker-prev { left:2px; } 288 | .ui-datepicker .ui-datepicker-next { right:2px; } 289 | .ui-datepicker .ui-datepicker-prev-hover { left:1px; } 290 | .ui-datepicker .ui-datepicker-next-hover { right:1px; } 291 | .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } 292 | .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } 293 | .ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; } 294 | .ui-datepicker select.ui-datepicker-month-year {width: 100%;} 295 | .ui-datepicker select.ui-datepicker-month, 296 | .ui-datepicker select.ui-datepicker-year { width: 49%;} 297 | .ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; } 298 | .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } 299 | .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } 300 | .ui-datepicker td { border: 0; padding: 1px; } 301 | .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } 302 | .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } 303 | .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } 304 | .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } 305 | 306 | /* with multiple calendars */ 307 | .ui-datepicker.ui-datepicker-multi { width:auto; } 308 | .ui-datepicker-multi .ui-datepicker-group { float:left; } 309 | .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } 310 | .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } 311 | .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } 312 | .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } 313 | .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } 314 | .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } 315 | .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } 316 | .ui-datepicker-row-break { clear:both; width:100%; } 317 | 318 | /* RTL support */ 319 | .ui-datepicker-rtl { direction: rtl; } 320 | .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } 321 | .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } 322 | .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } 323 | .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } 324 | .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } 325 | .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } 326 | .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } 327 | .ui-datepicker-rtl .ui-datepicker-group { float:right; } 328 | .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } 329 | .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } 330 | 331 | /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ 332 | .ui-datepicker-cover { 333 | display: none; /*sorry for IE5*/ 334 | display/**/: block; /*sorry for IE5*/ 335 | position: absolute; /*must have*/ 336 | z-index: -1; /*must have*/ 337 | filter: mask(); /*must have*/ 338 | top: -4px; /*must have*/ 339 | left: -4px; /*must have*/ 340 | width: 200px; /*must have*/ 341 | height: 200px; /*must have*/ 342 | } 343 | 344 | /* Slider 345 | ----------------------------------*/ 346 | .ui-slider { position: relative; text-align: left; } 347 | .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } 348 | .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; } 349 | 350 | .ui-slider-horizontal { height: .8em; } 351 | .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } 352 | .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } 353 | .ui-slider-horizontal .ui-slider-range-min { left: 0; } 354 | .ui-slider-horizontal .ui-slider-range-max { right: 0; } 355 | 356 | .ui-slider-vertical { width: .8em; height: 100px; } 357 | .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } 358 | .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } 359 | .ui-slider-vertical .ui-slider-range-min { bottom: 0; } 360 | .ui-slider-vertical .ui-slider-range-max { top: 0; } 361 | 362 | /* css for timepicker */ 363 | .ui-timepicker-div .ui-widget-header{ margin-bottom: 8px; } 364 | .ui-timepicker-div dl{ text-align: left; } 365 | .ui-timepicker-div dl dt{ height: 25px; } 366 | .ui-timepicker-div dl dd{ margin: -25px 0 10px 65px; } 367 | .ui-timepicker-div td { font-size: 90%; } 368 | -------------------------------------------------------------------------------- /crmpress/lib/css/admin-css.css: -------------------------------------------------------------------------------- 1 | #crmpress-dashboard-widget { width: 100%; } 2 | #crmpress-dashboard-widget h2.dash-title { text-align: center; margin-bottom: 25px; font-weight: bold; font-size: 28px; } 3 | #crmpress-dashboard-widget .active-projects { float: left; width: 330px; padding-right: 20px; } 4 | #crmpress-dashboard-widget .active-projects h2 { color: #0CB636; margin-bottom: 15px; } 5 | #crmpress-dashboard-widget .active-projects h3, #crmpress-dashboard-widget .scheduled-projects h3, #crmpress-dashboard-widget .prospects h3 { background: transparent; padding-left: 0; cursor: default; margin-bottom: 10px; } 6 | #crmpress-dashboard-widget .active-projects h3 a, #crmpress-dashboard-widget .scheduled-projects h3 a, #crmpress-dashboard-widget .prospects h3 a { text-decoration: none; } 7 | #crmpress-dashboard-widget li { line-height: 170%; font-size: 13px; } 8 | #crmpress-dashboard-widget .scheduled-projects { float: left; width: 330px; padding-right: 20px; } 9 | #crmpress-dashboard-widget .scheduled-projects h2 { color: #ef980e; margin-bottom: 15px; } 10 | #crmpress-dashboard-widget .prospects { float: left; width: 330px; } 11 | #crmpress-dashboard-widget .prospects h2 { color: #ef430e; margin-bottom: 15px; } 12 | 13 | 14 | -------------------------------------------------------------------------------- /crmpress/lib/css/mobilize-css.php: -------------------------------------------------------------------------------- 1 | Menus 19 | * 20 | * @since 1.0 21 | * 22 | */ 23 | function crmpress_fallback_primary_nav() { 24 | 25 | echo ''; 33 | 34 | } -------------------------------------------------------------------------------- /crmpress/lib/functions/register-sidebar.php: -------------------------------------------------------------------------------- 1 | 'Home Row 1', 13 | 'id' => 'home-row-1', 14 | 'before_widget' => '
  • ', 15 | 'after_widget' => '
  • ', 16 | 'before_title' => '

    ', 17 | 'after_title' => '

    ' 18 | ) ); 19 | 20 | if ( function_exists( 'register_sidebar' ) ) 21 | register_sidebar( array( 22 | 'name' => 'Home Row 2', 23 | 'id' => 'home-row-2', 24 | 'before_widget' => '
  • ', 25 | 'after_widget' => '
  • ', 26 | 'before_title' => '

    ', 27 | 'after_title' => '

    ' 28 | ) ); 29 | 30 | if ( function_exists( 'register_sidebar' ) ) 31 | register_sidebar( array( 32 | 'name' => 'Home Row 3', 33 | 'id' => 'home-row-3', 34 | 'before_widget' => '
  • ', 35 | 'after_widget' => '
  • ', 36 | 'before_title' => '

    ', 37 | 'after_title' => '

    ' 38 | ) ); -------------------------------------------------------------------------------- /crmpress/lib/functions/register-taxonomies.php: -------------------------------------------------------------------------------- 1 | true, 26 | 'labels' => array( 27 | 'name' => 'Points of Contact', 28 | 'singular_name' => 'Point of Contact' 29 | ), 30 | 'query_var' => true, 31 | 'rewrite' => true 32 | ); 33 | register_taxonomy( 'poc', 'post', apply_filters( 'crmpress_poc_tax_args', __( $poc_args, 'crmpress' ) ) ); 34 | 35 | $sources_args = array( 36 | 'hierarchical' => true, 37 | 'labels' => array( 38 | 'name' => 'Sources', 39 | 'singlular_name' => 'Source' 40 | ), 41 | 'query_var' => true, 42 | 'rewrite' => true 43 | ); 44 | register_taxonomy( 'sources', 'post', apply_filters( 'crmpress_sources_tax_args', __( $sources_args, 'crmpress') ) ); 45 | 46 | } -------------------------------------------------------------------------------- /crmpress/lib/init.php: -------------------------------------------------------------------------------- 1 | _meta_box = $meta_box; 68 | 69 | $upload = false; 70 | foreach ( $meta_box['fields'] as $field ) { 71 | if ( $field['type'] == 'file' || $field['type'] == 'file_list' ) { 72 | $upload = true; 73 | break; 74 | } 75 | } 76 | 77 | $current_page = substr(strrchr($_SERVER['PHP_SELF'], '/'), 1, -4); 78 | 79 | if ( $upload && ( $current_page == 'page' || $current_page == 'page-new' || $current_page == 'post' || $current_page == 'post-new' ) ) { 80 | add_action('admin_head', array(&$this, 'add_post_enctype')); 81 | } 82 | 83 | add_action( 'admin_menu', array(&$this, 'add') ); 84 | add_action( 'save_post', array(&$this, 'save') ); 85 | } 86 | 87 | function add_post_enctype() { 88 | echo ' 89 | '; 95 | } 96 | 97 | /// Add metaboxes 98 | function add() { 99 | $this->_meta_box['context'] = empty($this->_meta_box['context']) ? 'normal' : $this->_meta_box['context']; 100 | $this->_meta_box['priority'] = empty($this->_meta_box['priority']) ? 'high' : $this->_meta_box['priority']; 101 | foreach ($this->_meta_box['pages'] as $page) { 102 | add_meta_box($this->_meta_box['id'], $this->_meta_box['title'], array(&$this, 'show'), $page, $this->_meta_box['context'], $this->_meta_box['priority']); 103 | } 104 | } 105 | 106 | // Show fields 107 | function show() { 108 | global $post; 109 | 110 | // Use nonce for verification 111 | echo ''; 112 | echo ''; 113 | 114 | foreach ( $this->_meta_box['fields'] as $field ) { 115 | // Set up blank values for empty ones 116 | if ( !isset($field['desc']) ) $field['desc'] = ''; 117 | if ( !isset($field['std']) ) $field['std'] = ''; 118 | 119 | $meta = get_post_meta( $post->ID, $field['id'], 'multicheck' != $field['type'] /* If multicheck this can be multiple values */ ); 120 | 121 | echo ''; 122 | 123 | if ( $field['type'] == "title" ) { 124 | echo ''; 128 | } 129 | echo '',''; 247 | } 248 | echo '
    '; 125 | } else { 126 | if( $this->_meta_box['show_names'] == true ) { 127 | echo ''; 130 | } 131 | 132 | switch ( $field['type'] ) { 133 | case 'text': 134 | echo '', 135 | '

    ', $field['desc'], '

    '; 136 | break; 137 | case 'text_small': 138 | echo '', $field['desc'], ''; 139 | break; 140 | case 'text_medium': 141 | echo '', $field['desc'], ''; 142 | break; 143 | case 'text_date': 144 | echo '', $field['desc'], ''; 145 | break; 146 | case 'text_money': 147 | echo '$ ', $field['desc'], ''; 148 | break; 149 | case 'textarea': 150 | echo '', 151 | '

    ', $field['desc'], '

    '; 152 | break; 153 | case 'textarea_small': 154 | echo '', 155 | '

    ', $field['desc'], '

    '; 156 | break; 157 | case 'select': 158 | echo ''; 163 | echo '

    ', $field['desc'], '

    '; 164 | break; 165 | case 'radio_inline': 166 | echo '
    '; 167 | foreach ($field['options'] as $option) { 168 | echo '
    ', $option['name'], '
    '; 169 | } 170 | echo '
    '; 171 | echo '

    ', $field['desc'], '

    '; 172 | break; 173 | case 'radio': 174 | foreach ($field['options'] as $option) { 175 | echo '

    ', $option['name'].'

    '; 176 | } 177 | echo '

    ', $field['desc'], '

    '; 178 | break; 179 | case 'checkbox': 180 | echo ''; 181 | echo '', $field['desc'], ''; 182 | break; 183 | case 'multicheck': 184 | echo '
      '; 185 | foreach ( $field['options'] as $value => $name ) { 186 | // Append `[]` to the name to get multiple values 187 | // Use in_array() to check whether the current option should be checked 188 | echo '
    • '; 189 | } 190 | echo '
    '; 191 | echo '', $field['desc'], ''; 192 | break; 193 | case 'title': 194 | echo '
    ', $field['name'], '
    '; 195 | echo '

    ', $field['desc'], '

    '; 196 | break; 197 | case 'wysiwyg': 198 | echo ''; 199 | echo '

    ', $field['desc'], '

    '; 200 | break; 201 | case 'file_list': 202 | echo ''; 203 | echo ''; 204 | echo '

    ', $field['desc'], '

    '; 205 | $args = array( 206 | 'post_type' => 'attachment', 207 | 'numberposts' => null, 208 | 'post_status' => null, 209 | 'post_parent' => $post->ID 210 | ); 211 | $attachments = get_posts($args); 212 | if ($attachments) { 213 | echo '
      '; 214 | foreach ($attachments as $attachment) { 215 | echo '
    • '.wp_get_attachment_link($attachment->ID, 'thumbnail', 0, 0, 'Download'); 216 | echo ''; 217 | echo apply_filters('the_title', ' '.$attachment->post_title); 218 | echo '
    • '; 219 | } 220 | echo '
    '; 221 | } 222 | break; 223 | case 'file': 224 | echo ''; 225 | echo ''; 226 | echo '

    ', $field['desc'], '

    '; 227 | echo '
    '; 228 | if ( $meta != '' ) { 229 | $check_image = preg_match( '/(^.*\.jpg|jpeg|png|gif|ico*)/i', $meta ); 230 | if ( $check_image ) { 231 | echo '
    '; 232 | echo ''; 233 | echo 'Remove Image'; 234 | echo '
    '; 235 | } else { 236 | $parts = explode( "/", $meta ); 237 | for( $i = 0; $i < sizeof( $parts ); ++$i ) { 238 | $title = $parts[$i]; 239 | } 240 | echo 'File: ', $title, '    (Download / Remove)'; 241 | } 242 | } 243 | echo '
    '; 244 | break; 245 | } 246 | echo '
    '; 249 | } 250 | 251 | // Save data from metabox 252 | function save( $post_id) { 253 | // verify nonce 254 | if ( ! isset( $_POST['wp_meta_box_nonce'] ) || !wp_verify_nonce($_POST['wp_meta_box_nonce'], basename(__FILE__))) { 255 | return $post_id; 256 | } 257 | 258 | // check autosave 259 | if ( defined('DOING_AUTOSAVE' ) && DOING_AUTOSAVE) { 260 | return $post_id; 261 | } 262 | 263 | // check permissions 264 | if ( 'page' == $_POST['post_type'] ) { 265 | if ( !current_user_can( 'edit_page', $post_id ) ) { 266 | return $post_id; 267 | } 268 | } elseif ( !current_user_can( 'edit_post', $post_id ) ) { 269 | return $post_id; 270 | } 271 | 272 | foreach ( $this->_meta_box['fields'] as $field ) { 273 | $name = $field['id']; 274 | $old = get_post_meta( $post_id, $name, 'multicheck' != $field['type'] /* If multicheck this can be multiple values */ ); 275 | $new = isset( $_POST[$field['id']] ) ? $_POST[$field['id']] : null; 276 | 277 | if ( $field['type'] == 'wysiwyg' ) { 278 | $new = wpautop($new); 279 | } 280 | 281 | if ( ($field['type'] == 'textarea') || ($field['type'] == 'textarea_small') ) { 282 | $new = htmlspecialchars($new); 283 | } 284 | 285 | // validate meta value 286 | if ( isset($field['validate_func']) ) { 287 | $ok = call_user_func(array('cmb_Meta_Box_Validate', $field['validate_func']), $new); 288 | if ( $ok === false ) { // pass away when meta value is invalid 289 | continue; 290 | } 291 | } elseif ( 'multicheck' == $field['type'] ) { 292 | // Do the saving in two steps: first get everything we don't have yet 293 | // Then get everything we should not have anymore 294 | if ( empty( $new ) ) { 295 | $new = array(); 296 | } 297 | $aNewToAdd = array_diff( $new, $old ); 298 | $aOldToDelete = array_diff( $old, $new ); 299 | foreach ( $aNewToAdd as $newToAdd ) { 300 | add_post_meta( $post_id, $name, $newToAdd, false ); 301 | } 302 | foreach ( $aOldToDelete as $oldToDelete ) { 303 | delete_post_meta( $post_id, $name, $oldToDelete ); 304 | } 305 | } elseif ($new && $new != $old) { 306 | update_post_meta($post_id, $name, $new); 307 | } elseif ('' == $new && $old && $field['type'] != 'file') { 308 | delete_post_meta($post_id, $name, $old); 309 | } 310 | } 311 | } 312 | } 313 | 314 | 315 | /** 316 | * Adding scripts and styles 317 | */ 318 | 319 | function cmb_scripts( $hook ) { 320 | if ( $hook == 'post.php' OR $hook == 'post-new.php' OR $hook == 'page-new.php' OR $hook == 'page.php' ) { 321 | wp_enqueue_script( 'jquery-ui-core' ); // Make sure and use elements form the 1.7.3 UI - not 1.8.9 322 | wp_enqueue_script( 'media-upload' ); 323 | wp_enqueue_script( 'thickbox' ); 324 | wp_register_script( 'cmb-scripts', get_stylesheet_directory_uri() . '/lib/metabox/jquery.cmbScripts.js', array('jquery','media-upload','thickbox')); 325 | wp_enqueue_script( 'cmb-scripts' ); 326 | wp_enqueue_style( 'thickbox' ); 327 | wp_enqueue_style( 'jquery-custom-ui' ); 328 | add_action( 'admin_head', 'cmb_styles_inline' ); 329 | } 330 | } 331 | add_action( 'admin_enqueue_scripts', 'cmb_scripts',10,1 ); 332 | 333 | function cmb_styles_inline() { 334 | echo ''; 335 | // For some reason this script doesn't like to register 336 | ?> 337 | 362 | 'client_information', 16 | 'title' => 'Client Information', 17 | 'pages' => array( 'post' ), // post type 18 | 'context' => 'normal', 19 | 'priority' => 'high', 20 | 'show_names' => true, // Show field names left of input 21 | 'fields' => array( 22 | array( 23 | 'name' => 'Client Email', 24 | 'id' => $prefix . 'client_email', 25 | 'desc' => 'Client Email', 26 | 'type' => 'text', 27 | ), 28 | array( 29 | 'name' => 'Client Phone', 30 | 'id' => $prefix . 'client_phone', 31 | 'desc' => 'Client Phone', 32 | 'type' => 'text', 33 | ), 34 | array( 35 | 'name' => 'Client URL', 36 | 'id' => $prefix . 'client_url', 37 | 'desc' => 'Client URL', 38 | 'type' => 'text', 39 | ), 40 | array( 41 | 'name' => 'Other Referral', 42 | 'id' => $prefix . 'other_referral', 43 | 'desc' => 'Other Referral Source', 44 | 'type' => 'text', 45 | ) 46 | ) 47 | ); 48 | 49 | $meta_boxes[] = array( 50 | 'id' => 'project_information', 51 | 'title' => 'Project Information', 52 | 'pages' => array( 'post' ), // post type 53 | 'context' => 'normal', 54 | 'priority' => 'high', 55 | 'show_names' => true, // Show field names left of input 56 | 'fields' => array( 57 | array( 58 | 'name' => 'Project Status', 59 | 'id' => $prefix . 'project_status', 60 | 'type' => 'radio_inline', 61 | 'options' => array( 62 | array( 'name' => 'In Progress', 'value' => 'in progress' ), 63 | array( 'name' => 'No Response', 'value' => 'no response' ), 64 | array( 'name' => 'Forwarded Away', 'value' => 'forwarded away' ), 65 | array( 'name' => 'Quoted and Lost', 'value' => 'quoted and lost' ), 66 | array( 'name' => 'Quoted and Won', 'value' => 'quoted and won' ) 67 | ) 68 | ), 69 | array( 70 | 'name' => 'Status Summary', 71 | 'id' => $prefix . 'status_summary', 72 | 'type' => 'text', 73 | ), 74 | array( 75 | 'name' => 'Action Item', 76 | 'id' => $prefix . 'actionitem', 77 | 'type' => 'select', 78 | 'options' => array( 79 | array( 'name' => '', 'value' => '' ), 80 | array( 'name' => 'Awaiting Start Date', 'value' => 'awaiting start date' ), 81 | array( 'name' => 'Awaiting Client Approval', 'value' => 'awaiting approval' ), 82 | array( 'name' => 'Sending Contract', 'value' => 'sending contract' ), 83 | array( 'name' => 'Sending Deposit Invoice', 'value' => 'sending deposit invoice' ), 84 | array( 'name' => 'Awaiting Content', 'value' => 'awaiting content' ), 85 | ) 86 | ), 87 | array( 88 | 'name' => 'Reason', 89 | 'id' => $prefix . 'reason', 90 | 'type' => 'select', 91 | 'options' => array( 92 | array( 'name' => '', 'value' => '' ), 93 | array( 'name' => 'accepted project', 'value' => 'accepted project' ), 94 | array( 'name' => 'project too small', 'value' => 'project too small' ), 95 | array( 'name' => 'not interested', 'value' => 'not interested' ), 96 | array( 'name' => 'outside expertise', 'value' => 'outside expertise' ), 97 | array( 'name' => 'timeframe too short', 'value' => 'timeframe too short' ) 98 | ) 99 | ), 100 | array( 101 | 'name' => 'Revenue', 102 | 'id' => $prefix . 'revenue', 103 | 'type' => 'text_money', 104 | ), 105 | array( 106 | 'name' => 'Expense', 107 | 'id' => $prefix . 'expense', 108 | 'type' => 'text_money', 109 | ), 110 | array( 111 | 'name' => 'Start Date', 112 | 'id' => $prefix . 'start_date', 113 | 'desc' => 'Start Date (YYYY-MM-DD)', 114 | 'type' => 'text_date', 115 | ), 116 | array( 117 | 'name' => 'End Date', 118 | 'id' => $prefix . 'end_date', 119 | 'desc' => 'End Date (YYYY-MM-DD)', 120 | 'type' => 'text_date', 121 | ), 122 | array( 123 | 'name' => 'File Upload', 124 | 'id' => $prefix . 'img_upload', 125 | 'desc' => 'Attach files', 126 | 'type' => 'file_list', 127 | ), 128 | ) 129 | ); 130 | 131 | $meta_boxes[] = array( 132 | 'id' => 'crm_notes', 133 | 'title' => 'Notes', 134 | 'pages' => array( 'post' ), // post type 135 | 'context' => 'normal', 136 | 'priority' => 'high', 137 | 'show_names' => false, // Show field names left of input 138 | 'fields' => array() 139 | ); -------------------------------------------------------------------------------- /crmpress/lib/metabox/style.css: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery UI CSS Framework 3 | * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) 4 | * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. 5 | */ 6 | 7 | /* Layout helpers 8 | ----------------------------------*/ 9 | .ui-helper-hidden { display: none; } 10 | .ui-helper-hidden-accessible { position: absolute; left: -99999999px; } 11 | .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } 12 | .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } 13 | .ui-helper-clearfix { display: inline-block; } 14 | /* required comment for clearfix to work in Opera \*/ 15 | * html .ui-helper-clearfix { height:1%; } 16 | .ui-helper-clearfix { display:block; } 17 | /* end clearfix */ 18 | .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } 19 | 20 | 21 | /* Interaction Cues 22 | ----------------------------------*/ 23 | .ui-state-disabled { cursor: default !important; } 24 | 25 | 26 | /* Icons 27 | ----------------------------------*/ 28 | 29 | /* states and images */ 30 | .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } 31 | 32 | 33 | /* Misc visuals 34 | ----------------------------------*/ 35 | 36 | /* Overlays */ 37 | .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } 38 | 39 | /* 40 | * jQuery UI CSS Framework 41 | * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) 42 | * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. 43 | * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px 44 | */ 45 | 46 | 47 | /* Component containers 48 | ----------------------------------*/ 49 | .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; } 50 | .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } 51 | .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } 52 | .ui-widget-content a { color: #222222; } 53 | .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } 54 | .ui-widget-header a { color: #222222; } 55 | 56 | /* Interaction states 57 | ----------------------------------*/ 58 | .ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; outline: none; } 59 | .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; outline: none; } 60 | .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; outline: none; } 61 | .ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; outline: none; } 62 | .ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; outline: none; } 63 | .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; outline: none; text-decoration: none; } 64 | 65 | /* Interaction Cues 66 | ----------------------------------*/ 67 | .ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; } 68 | .ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; } 69 | .ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; } 70 | .ui-state-error a, .ui-widget-content .ui-state-error a { color: #cd0a0a; } 71 | .ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #cd0a0a; } 72 | .ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } 73 | .ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; } 74 | .ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } 75 | 76 | /* Icons 77 | ----------------------------------*/ 78 | 79 | /* states and images */ 80 | .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } 81 | .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } 82 | .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } 83 | .ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); } 84 | .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } 85 | .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } 86 | .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } 87 | .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); } 88 | 89 | /* positioning */ 90 | .ui-icon-carat-1-n { background-position: 0 0; } 91 | .ui-icon-carat-1-ne { background-position: -16px 0; } 92 | .ui-icon-carat-1-e { background-position: -32px 0; } 93 | .ui-icon-carat-1-se { background-position: -48px 0; } 94 | .ui-icon-carat-1-s { background-position: -64px 0; } 95 | .ui-icon-carat-1-sw { background-position: -80px 0; } 96 | .ui-icon-carat-1-w { background-position: -96px 0; } 97 | .ui-icon-carat-1-nw { background-position: -112px 0; } 98 | .ui-icon-carat-2-n-s { background-position: -128px 0; } 99 | .ui-icon-carat-2-e-w { background-position: -144px 0; } 100 | .ui-icon-triangle-1-n { background-position: 0 -16px; } 101 | .ui-icon-triangle-1-ne { background-position: -16px -16px; } 102 | .ui-icon-triangle-1-e { background-position: -32px -16px; } 103 | .ui-icon-triangle-1-se { background-position: -48px -16px; } 104 | .ui-icon-triangle-1-s { background-position: -64px -16px; } 105 | .ui-icon-triangle-1-sw { background-position: -80px -16px; } 106 | .ui-icon-triangle-1-w { background-position: -96px -16px; } 107 | .ui-icon-triangle-1-nw { background-position: -112px -16px; } 108 | .ui-icon-triangle-2-n-s { background-position: -128px -16px; } 109 | .ui-icon-triangle-2-e-w { background-position: -144px -16px; } 110 | .ui-icon-arrow-1-n { background-position: 0 -32px; } 111 | .ui-icon-arrow-1-ne { background-position: -16px -32px; } 112 | .ui-icon-arrow-1-e { background-position: -32px -32px; } 113 | .ui-icon-arrow-1-se { background-position: -48px -32px; } 114 | .ui-icon-arrow-1-s { background-position: -64px -32px; } 115 | .ui-icon-arrow-1-sw { background-position: -80px -32px; } 116 | .ui-icon-arrow-1-w { background-position: -96px -32px; } 117 | .ui-icon-arrow-1-nw { background-position: -112px -32px; } 118 | .ui-icon-arrow-2-n-s { background-position: -128px -32px; } 119 | .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } 120 | .ui-icon-arrow-2-e-w { background-position: -160px -32px; } 121 | .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } 122 | .ui-icon-arrowstop-1-n { background-position: -192px -32px; } 123 | .ui-icon-arrowstop-1-e { background-position: -208px -32px; } 124 | .ui-icon-arrowstop-1-s { background-position: -224px -32px; } 125 | .ui-icon-arrowstop-1-w { background-position: -240px -32px; } 126 | .ui-icon-arrowthick-1-n { background-position: 0 -48px; } 127 | .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } 128 | .ui-icon-arrowthick-1-e { background-position: -32px -48px; } 129 | .ui-icon-arrowthick-1-se { background-position: -48px -48px; } 130 | .ui-icon-arrowthick-1-s { background-position: -64px -48px; } 131 | .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } 132 | .ui-icon-arrowthick-1-w { background-position: -96px -48px; } 133 | .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } 134 | .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } 135 | .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } 136 | .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } 137 | .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } 138 | .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } 139 | .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } 140 | .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } 141 | .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } 142 | .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } 143 | .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } 144 | .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } 145 | .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } 146 | .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } 147 | .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } 148 | .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } 149 | .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } 150 | .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } 151 | .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } 152 | .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } 153 | .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } 154 | .ui-icon-arrow-4 { background-position: 0 -80px; } 155 | .ui-icon-arrow-4-diag { background-position: -16px -80px; } 156 | .ui-icon-extlink { background-position: -32px -80px; } 157 | .ui-icon-newwin { background-position: -48px -80px; } 158 | .ui-icon-refresh { background-position: -64px -80px; } 159 | .ui-icon-shuffle { background-position: -80px -80px; } 160 | .ui-icon-transfer-e-w { background-position: -96px -80px; } 161 | .ui-icon-transferthick-e-w { background-position: -112px -80px; } 162 | .ui-icon-folder-collapsed { background-position: 0 -96px; } 163 | .ui-icon-folder-open { background-position: -16px -96px; } 164 | .ui-icon-document { background-position: -32px -96px; } 165 | .ui-icon-document-b { background-position: -48px -96px; } 166 | .ui-icon-note { background-position: -64px -96px; } 167 | .ui-icon-mail-closed { background-position: -80px -96px; } 168 | .ui-icon-mail-open { background-position: -96px -96px; } 169 | .ui-icon-suitcase { background-position: -112px -96px; } 170 | .ui-icon-comment { background-position: -128px -96px; } 171 | .ui-icon-person { background-position: -144px -96px; } 172 | .ui-icon-print { background-position: -160px -96px; } 173 | .ui-icon-trash { background-position: -176px -96px; } 174 | .ui-icon-locked { background-position: -192px -96px; } 175 | .ui-icon-unlocked { background-position: -208px -96px; } 176 | .ui-icon-bookmark { background-position: -224px -96px; } 177 | .ui-icon-tag { background-position: -240px -96px; } 178 | .ui-icon-home { background-position: 0 -112px; } 179 | .ui-icon-flag { background-position: -16px -112px; } 180 | .ui-icon-calendar { background-position: -32px -112px; } 181 | .ui-icon-cart { background-position: -48px -112px; } 182 | .ui-icon-pencil { background-position: -64px -112px; } 183 | .ui-icon-clock { background-position: -80px -112px; } 184 | .ui-icon-disk { background-position: -96px -112px; } 185 | .ui-icon-calculator { background-position: -112px -112px; } 186 | .ui-icon-zoomin { background-position: -128px -112px; } 187 | .ui-icon-zoomout { background-position: -144px -112px; } 188 | .ui-icon-search { background-position: -160px -112px; } 189 | .ui-icon-wrench { background-position: -176px -112px; } 190 | .ui-icon-gear { background-position: -192px -112px; } 191 | .ui-icon-heart { background-position: -208px -112px; } 192 | .ui-icon-star { background-position: -224px -112px; } 193 | .ui-icon-link { background-position: -240px -112px; } 194 | .ui-icon-cancel { background-position: 0 -128px; } 195 | .ui-icon-plus { background-position: -16px -128px; } 196 | .ui-icon-plusthick { background-position: -32px -128px; } 197 | .ui-icon-minus { background-position: -48px -128px; } 198 | .ui-icon-minusthick { background-position: -64px -128px; } 199 | .ui-icon-close { background-position: -80px -128px; } 200 | .ui-icon-closethick { background-position: -96px -128px; } 201 | .ui-icon-key { background-position: -112px -128px; } 202 | .ui-icon-lightbulb { background-position: -128px -128px; } 203 | .ui-icon-scissors { background-position: -144px -128px; } 204 | .ui-icon-clipboard { background-position: -160px -128px; } 205 | .ui-icon-copy { background-position: -176px -128px; } 206 | .ui-icon-contact { background-position: -192px -128px; } 207 | .ui-icon-image { background-position: -208px -128px; } 208 | .ui-icon-video { background-position: -224px -128px; } 209 | .ui-icon-script { background-position: -240px -128px; } 210 | .ui-icon-alert { background-position: 0 -144px; } 211 | .ui-icon-info { background-position: -16px -144px; } 212 | .ui-icon-notice { background-position: -32px -144px; } 213 | .ui-icon-help { background-position: -48px -144px; } 214 | .ui-icon-check { background-position: -64px -144px; } 215 | .ui-icon-bullet { background-position: -80px -144px; } 216 | .ui-icon-radio-off { background-position: -96px -144px; } 217 | .ui-icon-radio-on { background-position: -112px -144px; } 218 | .ui-icon-pin-w { background-position: -128px -144px; } 219 | .ui-icon-pin-s { background-position: -144px -144px; } 220 | .ui-icon-play { background-position: 0 -160px; } 221 | .ui-icon-pause { background-position: -16px -160px; } 222 | .ui-icon-seek-next { background-position: -32px -160px; } 223 | .ui-icon-seek-prev { background-position: -48px -160px; } 224 | .ui-icon-seek-end { background-position: -64px -160px; } 225 | .ui-icon-seek-first { background-position: -80px -160px; } 226 | .ui-icon-stop { background-position: -96px -160px; } 227 | .ui-icon-eject { background-position: -112px -160px; } 228 | .ui-icon-volume-off { background-position: -128px -160px; } 229 | .ui-icon-volume-on { background-position: -144px -160px; } 230 | .ui-icon-power { background-position: 0 -176px; } 231 | .ui-icon-signal-diag { background-position: -16px -176px; } 232 | .ui-icon-signal { background-position: -32px -176px; } 233 | .ui-icon-battery-0 { background-position: -48px -176px; } 234 | .ui-icon-battery-1 { background-position: -64px -176px; } 235 | .ui-icon-battery-2 { background-position: -80px -176px; } 236 | .ui-icon-battery-3 { background-position: -96px -176px; } 237 | .ui-icon-circle-plus { background-position: 0 -192px; } 238 | .ui-icon-circle-minus { background-position: -16px -192px; } 239 | .ui-icon-circle-close { background-position: -32px -192px; } 240 | .ui-icon-circle-triangle-e { background-position: -48px -192px; } 241 | .ui-icon-circle-triangle-s { background-position: -64px -192px; } 242 | .ui-icon-circle-triangle-w { background-position: -80px -192px; } 243 | .ui-icon-circle-triangle-n { background-position: -96px -192px; } 244 | .ui-icon-circle-arrow-e { background-position: -112px -192px; } 245 | .ui-icon-circle-arrow-s { background-position: -128px -192px; } 246 | .ui-icon-circle-arrow-w { background-position: -144px -192px; } 247 | .ui-icon-circle-arrow-n { background-position: -160px -192px; } 248 | .ui-icon-circle-zoomin { background-position: -176px -192px; } 249 | .ui-icon-circle-zoomout { background-position: -192px -192px; } 250 | .ui-icon-circle-check { background-position: -208px -192px; } 251 | .ui-icon-circlesmall-plus { background-position: 0 -208px; } 252 | .ui-icon-circlesmall-minus { background-position: -16px -208px; } 253 | .ui-icon-circlesmall-close { background-position: -32px -208px; } 254 | .ui-icon-squaresmall-plus { background-position: -48px -208px; } 255 | .ui-icon-squaresmall-minus { background-position: -64px -208px; } 256 | .ui-icon-squaresmall-close { background-position: -80px -208px; } 257 | .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } 258 | .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } 259 | .ui-icon-grip-solid-vertical { background-position: -32px -224px; } 260 | .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } 261 | .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } 262 | .ui-icon-grip-diagonal-se { background-position: -80px -224px; } 263 | 264 | 265 | /* Misc visuals 266 | ----------------------------------*/ 267 | 268 | /* Corner radius */ 269 | .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; } 270 | .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; } 271 | .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; } 272 | .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; } 273 | .ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; } 274 | .ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; } 275 | .ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; } 276 | .ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; } 277 | .ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; } 278 | 279 | /* Overlays */ 280 | .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } 281 | .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; }/* Datepicker 282 | ----------------------------------*/ 283 | .ui-datepicker { width: 17em; padding: .2em .2em 0; } 284 | .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } 285 | .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } 286 | .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } 287 | .ui-datepicker .ui-datepicker-prev { left:2px; } 288 | .ui-datepicker .ui-datepicker-next { right:2px; } 289 | .ui-datepicker .ui-datepicker-prev-hover { left:1px; } 290 | .ui-datepicker .ui-datepicker-next-hover { right:1px; } 291 | .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } 292 | .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } 293 | .ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; } 294 | .ui-datepicker select.ui-datepicker-month-year {width: 100%;} 295 | .ui-datepicker select.ui-datepicker-month, 296 | .ui-datepicker select.ui-datepicker-year { width: 49%;} 297 | .ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; } 298 | .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } 299 | .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } 300 | .ui-datepicker td { border: 0; padding: 1px; } 301 | .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } 302 | .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } 303 | .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } 304 | .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } 305 | 306 | /* with multiple calendars */ 307 | .ui-datepicker.ui-datepicker-multi { width:auto; } 308 | .ui-datepicker-multi .ui-datepicker-group { float:left; } 309 | .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } 310 | .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } 311 | .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } 312 | .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } 313 | .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } 314 | .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } 315 | .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } 316 | .ui-datepicker-row-break { clear:both; width:100%; } 317 | 318 | /* RTL support */ 319 | .ui-datepicker-rtl { direction: rtl; } 320 | .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } 321 | .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } 322 | .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } 323 | .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } 324 | .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } 325 | .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } 326 | .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } 327 | .ui-datepicker-rtl .ui-datepicker-group { float:right; } 328 | .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } 329 | .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } 330 | 331 | /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ 332 | .ui-datepicker-cover { 333 | display: none; /*sorry for IE5*/ 334 | display/**/: block; /*sorry for IE5*/ 335 | position: absolute; /*must have*/ 336 | z-index: -1; /*must have*/ 337 | filter: mask(); /*must have*/ 338 | top: -4px; /*must have*/ 339 | left: -4px; /*must have*/ 340 | width: 200px; /*must have*/ 341 | height: 200px; /*must have*/ 342 | } 343 | 344 | /* Slider 345 | ----------------------------------*/ 346 | .ui-slider { position: relative; text-align: left; } 347 | .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } 348 | .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; } 349 | 350 | .ui-slider-horizontal { height: .8em; } 351 | .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } 352 | .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } 353 | .ui-slider-horizontal .ui-slider-range-min { left: 0; } 354 | .ui-slider-horizontal .ui-slider-range-max { right: 0; } 355 | 356 | .ui-slider-vertical { width: .8em; height: 100px; } 357 | .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } 358 | .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } 359 | .ui-slider-vertical .ui-slider-range-min { bottom: 0; } 360 | .ui-slider-vertical .ui-slider-range-max { top: 0; } 361 | 362 | /* css for timepicker */ 363 | .ui-timepicker-div .ui-widget-header{ margin-bottom: 8px; } 364 | .ui-timepicker-div dl{ text-align: left; } 365 | .ui-timepicker-div dl dt{ height: 25px; } 366 | .ui-timepicker-div dl dd{ margin: -25px 0 10px 65px; } 367 | .ui-timepicker-div td { font-size: 90%; } 368 | -------------------------------------------------------------------------------- /crmpress/lib/resources/core-functions.php: -------------------------------------------------------------------------------- 1 | ID, $field, true ); 38 | if ( $value ) return esc_attr( $value ); 39 | else return false; 40 | 41 | } -------------------------------------------------------------------------------- /crmpress/lib/resources/file-type-uploads.php: -------------------------------------------------------------------------------- 1 | 37 | 40 | 49 | 'widget_active_projects', 'description' => 'Shows all posts in the Active Project category' ); 14 | 15 | /* Widget control settings. */ 16 | $control_ops = array( 'id_base' => 'active-project-widget' ); 17 | 18 | /* Create the widget. */ 19 | $this->WP_Widget( 'active-project-widget', 'Active Projects', $widget_ops, $control_ops ); 20 | } 21 | 22 | function widget( $args, $instance ) { 23 | extract( $args ); 24 | echo $before_widget; 25 | echo $before_title.'Active Projects'.$after_title; 26 | 27 | $active = new WP_Query('category_name=active-project&posts_per_page=-1&showposts=-1'); 28 | $count = 0; 29 | global $prefix; 30 | if ($active->have_posts()): 31 | echo '
      '; 32 | while ($active->have_posts()): $active->the_post(); global $post; $count++;?> 33 |

    1. 34 | Status: '.$status.'
      '; 35 | $started = get_custom_field($prefix.'start_date'); if ($started) echo 'Started: '.date('F j, Y', strtotime($started)).'
      '; 36 | $revenue = get_custom_field($prefix.'revenue'); 37 | $expense = get_custom_field($prefix.'expense'); 38 | if ($revenue) echo 'Budget: $' . (number_format($revenue - $expense)) . '
    2. '; 39 | endwhile; 40 | if ($count < 1) echo "

      Don't worry. I'm sure a few of those prospects listed in the left column will make the jump over here soon.

      Or, maybe you haven't set up your categories yet. This area shows posts in the Active Projects category, so create a category with a slug 'active-project'.

      "; 41 | echo '
    '; 42 | else: 43 | echo "

    Don't worry. I'm sure a few of those prospects listed in the left column will make the jump over here soon.

    Or, maybe you haven't set up your categories yet. This area shows posts in the Active Projects category, so create a category with a slug 'active-project'.

    "; 44 | endif; 45 | wp_reset_query(); 46 | 47 | echo $after_widget; 48 | } 49 | 50 | 51 | } -------------------------------------------------------------------------------- /crmpress/lib/widgets/widget-activity-graph.php: -------------------------------------------------------------------------------- 1 | 'widget_activity_graph', 'description' => 'Graphs the number of contacts added by date' ); 18 | 19 | /* Widget control settings. */ 20 | $control_ops = array( 'id_base' => 'activity-graph-widget' ); 21 | 22 | /* Create the widget. */ 23 | $this->WP_Widget( 'activity-graph-widget', 'Activity Graph', $widget_ops, $control_ops ); 24 | } 25 | 26 | function widget( $args, $instance ) { 27 | extract( $args ); 28 | echo $before_widget; 29 | echo $before_title.'Activity Graph'.$after_title; 30 | 31 | 32 | global $wpdb, $wp_locale; 33 | 34 | $name = ''; 35 | $width = '280'; 36 | $height = '120'; 37 | $count = '12'; 38 | $linecolor = '3D7930'; 39 | $fillcolor = 'C5D4B5'; 40 | $filltrans = 'BB'; 41 | $bgcolor = 'FFFFFF'; 42 | $bgtrans = ''; 43 | $r = ''; 44 | $limit = ''; 45 | 46 | $where = apply_filters( 'getarchives_where', "WHERE post_type = 'post' AND post_status = 'publish'", $r ); 47 | $join = apply_filters( 'getarchives_join', "", $r ); 48 | 49 | $query = "SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC $limit"; 50 | $key = md5($query); 51 | $cache = wp_cache_get( 'wp_get_archives' , 'general'); 52 | 53 | if ( !isset( $cache[ $key ] ) ) { 54 | $arcresults = $wpdb->get_results($query); 55 | $cache[ $key ] = $arcresults; 56 | wp_cache_set( 'wp_get_archives', $cache, 'general' ); 57 | } else { 58 | $arcresults = $cache[ $key ]; 59 | } 60 | 61 | foreach( (array) $arcresults as $arcresult ) { 62 | $archivemonths[] = $text = sprintf(__('%1$s %2$d'), substr( $wp_locale->get_month($arcresult->month), 0, 3 ) , $arcresult->year ); 63 | $archivecounts[] = $arcresult->posts; 64 | }; 65 | 66 | // cut the "last" n entries, default above is 12 67 | $archivemonths = array_slice( $archivemonths, 0, esc_attr( $count ) ); 68 | $archivecounts = array_slice( $archivecounts, 0, esc_attr( $count ) ); 69 | 70 | // reverse the arrays 71 | $archivemonths = array_reverse( $archivemonths ); 72 | $archivecounts = array_reverse( $archivecounts ); 73 | 74 | //find max val 75 | $archivemax = max( $archivecounts ); 76 | 77 | $chart_code = ''; 114 | 115 | echo $chart_code; 116 | 117 | 118 | echo $after_widget; 119 | } 120 | 121 | 122 | } -------------------------------------------------------------------------------- /crmpress/lib/widgets/widget-forwarded.php: -------------------------------------------------------------------------------- 1 | 'widget_forwarded', 'description' => 'Breaks down forwarded away inquiries by reason ' ); 14 | 15 | /* Widget control settings. */ 16 | $control_ops = array( 'id_base' => 'forwarded-widget' ); 17 | 18 | /* Create the widget. */ 19 | $this->WP_Widget( 'forwarded-widget', 'Reason for Forwarding Away', $widget_ops, $control_ops ); 20 | } 21 | 22 | function widget( $args, $instance ) { 23 | extract( $args ); 24 | echo $before_widget; 25 | echo $before_title.'Reason for Forwarding Away'.$after_title; 26 | 27 | global $forwarded_away; 28 | if (!empty($forwarded_away)) { 29 | echo '
      '; 30 | $forwarded_away_count = array_count_values($forwarded_away); 31 | $forwarded_away_total = count($forwarded_away); 32 | foreach ($forwarded_away_count as $key=>$value) echo '
    • '.$key.': '.crm_percent($value, $forwarded_away_total).'
    • '; 33 | echo '
    '; 34 | } 35 | 36 | echo $after_widget; 37 | } 38 | 39 | 40 | } 41 | 42 | 43 | add_action('crmpress_stat_loop', 'crmpress_forwarded_loop'); 44 | function crmpress_forwarded_loop() { 45 | global $post, $meta, $forwarded_away, $prefix; 46 | if(isset($meta[$prefix.'project_status'][0])) { 47 | $status = $meta[$prefix.'project_status'][0]; 48 | if(isset($meta[$prefix.'reason'][0])) $reason = $meta[$prefix.'reason'][0]; 49 | if ($status == 'forwarded away' && isset($reason)) $forwarded_away[] = $reason; 50 | } 51 | } -------------------------------------------------------------------------------- /crmpress/lib/widgets/widget-inquiry-result.php: -------------------------------------------------------------------------------- 1 | 'widget_inquiry_result', 'description' => 'Breaks down inquiries by result ' ); 14 | 15 | /* Widget control settings. */ 16 | $control_ops = array( 'id_base' => 'inquiry-result-widget' ); 17 | 18 | /* Create the widget. */ 19 | $this->WP_Widget( 'inquiry-result-widget', 'Result of Inquiry', $widget_ops, $control_ops ); 20 | } 21 | 22 | function widget( $args, $instance ) { 23 | extract( $args ); 24 | echo $before_widget; 25 | echo $before_title.'Result of Inquiry'.$after_title; 26 | 27 | global $project_result; 28 | if(!empty($project_result)) { 29 | echo '
      '; 30 | $project_result_count = array_count_values($project_result); 31 | $total_project_result = count($project_result); 32 | foreach ($project_result_count as $key=>$value) echo '
    • '.$key.': '.crm_percent($value, $total_project_result).'
    • '; 33 | echo '
    '; 34 | } 35 | 36 | echo $after_widget; 37 | } 38 | 39 | 40 | } 41 | 42 | add_action('crmpress_stat_loop', 'crmpress_inquiry_result_loop'); 43 | function crmpress_inquiry_result_loop() { 44 | global $project_result, $post, $meta, $prefix; 45 | if(isset($meta[$prefix.'project_status'][0])) $project_result[] = $meta[$prefix.'project_status'][0]; 46 | } -------------------------------------------------------------------------------- /crmpress/lib/widgets/widget-inquiry.php: -------------------------------------------------------------------------------- 1 | 'widget_inquiry', 'description' => 'Breaks down inquiries by source ' ); 14 | 15 | /* Widget control settings. */ 16 | $control_ops = array( 'id_base' => 'inquiry-widget' ); 17 | 18 | /* Create the widget. */ 19 | $this->WP_Widget( 'inquiry-widget', 'Source of Inquiry', $widget_ops, $control_ops ); 20 | } 21 | 22 | function widget( $args, $instance ) { 23 | extract( $args ); 24 | echo $before_widget; 25 | echo $before_title.'Source of Inquiry'.$after_title; 26 | 27 | echo '
      '; 28 | global $total; 29 | $sources = get_categories('taxonomy=sources&orderby=count&order=DESC'); 30 | foreach ($sources as $source) echo '
    • ' . $source->name .': '. crm_percent($source->count, $total) . '
    • '; 31 | echo '
    '; 32 | 33 | echo $after_widget; 34 | } 35 | 36 | 37 | } -------------------------------------------------------------------------------- /crmpress/lib/widgets/widget-old-prospects.php: -------------------------------------------------------------------------------- 1 | 'widget_old_prospects', 'description' => 'Shows posts that are 10 days or older and in the Prospect category' ); 14 | 15 | /* Widget control settings. */ 16 | $control_ops = array( 'id_base' => 'old-prospects-widget' ); 17 | 18 | /* Create the widget. */ 19 | $this->WP_Widget( 'old-prospects-widget', 'Old Prospects', $widget_ops, $control_ops ); 20 | } 21 | 22 | function widget( $args, $instance ) { 23 | extract( $args ); 24 | echo $before_widget; 25 | echo $before_title.'10 Day Old Prospects'.$after_title; 26 | 27 | $old = new WP_Query('category_name=prospect&showposts=-1&posts_per_page=-1&order=ASC'); 28 | $count = 0; 29 | global $prefix; 30 | if ($old->have_posts()): 31 | echo '
      '; 32 | while ($old->have_posts()): $old->the_post(); 33 | global $post; 34 | if ($post->post_date > date('Y-m-d', strtotime('-10 days'))) continue; ?> 35 |
    1. , 36 | Status: '.$status; ?> 37 |
      Source: ID, 'sources', '', ', ', '' ); $list = ''; if ($sources) { foreach ($sources as $data) $list .= $data->name.', '; echo $list; } echo '
      '; 38 | $email = get_custom_field($prefix.'client_email'); if ($email) echo 'Email: '.$email; echo '
      '; 39 | $phone = get_custom_field($prefix.'client_phone'); if ($phone) echo 'Phone: '.$phone; echo '
      '; 40 | ?> 41 |
    2. 42 | WooHoo! You're either really fast at responding to prospects, or you haven't set up your categories yet.

      This area shows posts that are 10 days or older and in the 'Prospect' category. If you haven't done so already, create a category with the slug 'prospect'.

      "; 47 | 48 | echo '
    '; 49 | else: 50 | echo "

    WooHoo! You're either really fast at responding to prospects, or you haven't set up your categories yet.

    This area shows posts that are 10 days or older and in the 'Prospect' category. If you haven't done so already, create a category with the slug 'prospect'.

    "; 51 | 52 | endif; 53 | wp_reset_query(); 54 | 55 | echo $after_widget; 56 | } 57 | 58 | 59 | } -------------------------------------------------------------------------------- /crmpress/lib/widgets/widget-other-stats.php: -------------------------------------------------------------------------------- 1 | 'widget_other_stats', 'description' => 'Open prospects, active projects, inquiries in past 7 and 30 days' ); 14 | 15 | /* Widget control settings. */ 16 | $control_ops = array( 'id_base' => 'other-stats-widget' ); 17 | 18 | /* Create the widget. */ 19 | $this->WP_Widget( 'other-stats-widget', 'Other Stats', $widget_ops, $control_ops ); 20 | } 21 | 22 | function widget( $args, $instance ) { 23 | extract( $args ); 24 | echo $before_widget; 25 | echo $before_title.'Other Stats'.$after_title; 26 | 27 | global $active_projects, $thirty_days, $seven_days; 28 | 29 | $prospects = get_term_by('slug', 'prospect', 'category'); if (isset($prospects)) echo 'Open Prospects: ' . $prospects->count . '
    '; 30 | if (isset($active_projects)) echo 'Active Projects: '. $active_projects .'
    '; 31 | if (isset($thirty_days)) echo 'Inquires over past 30 days: '. $thirty_days .'
    '; 32 | if (isset($seven_days)) echo 'Inquiries over past 7 days: '. $seven_days .'
    '; 33 | 34 | 35 | echo $after_widget; 36 | } 37 | 38 | 39 | } 40 | 41 | add_action('crmpress_stat_loop', 'crmpress_other_stats_loop'); 42 | function crmpress_other_stats_loop() { 43 | global $post, $active_projects, $thirty_days, $seven_days; 44 | if (in_category('active-project')) $active_projects++; 45 | if ($post->post_date > date('Y-m-d', strtotime('-30 days'))) $thirty_days++; 46 | if ($post->post_date > date('Y-m-d', strtotime('-7 days'))) $seven_days++; 47 | 48 | } -------------------------------------------------------------------------------- /crmpress/lib/widgets/widget-poc.php: -------------------------------------------------------------------------------- 1 | 'widget_poc', 'description' => 'Breaks down contacts by original point of contact ' ); 14 | 15 | /* Widget control settings. */ 16 | $control_ops = array( 'id_base' => 'poc-widget' ); 17 | 18 | /* Create the widget. */ 19 | $this->WP_Widget( 'poc-widget', 'Point of Contact', $widget_ops, $control_ops ); 20 | } 21 | 22 | function widget( $args, $instance ) { 23 | extract( $args ); 24 | echo $before_widget; 25 | echo $before_title.'Original Point of Contact'.$after_title; 26 | 27 | echo '
      '; 28 | global $total; 29 | $categories = get_categories('taxonomy=poc&orderby=count&order=DESC'); 30 | foreach ($categories as $category) echo '
    • '.$category->name.': '. crm_percent($category->count, $total) . '
    • '; 31 | echo '
    '; 32 | 33 | echo $after_widget; 34 | } 35 | 36 | 37 | } -------------------------------------------------------------------------------- /crmpress/lib/widgets/widget-project-sources.php: -------------------------------------------------------------------------------- 1 | 'widget_project_sources', 'description' => 'Breaks down projects won by source ' ); 14 | 15 | /* Widget control settings. */ 16 | $control_ops = array( 'id_base' => 'project-sources-widget' ); 17 | 18 | /* Create the widget. */ 19 | $this->WP_Widget( 'project-sources-widget', 'Sources of Projects', $widget_ops, $control_ops ); 20 | } 21 | 22 | function widget( $args, $instance ) { 23 | extract( $args ); 24 | echo $before_widget; 25 | echo $before_title.'Sources of Projects'.$after_title; 26 | 27 | global $projects; 28 | if( !empty($projects)) { 29 | echo '
      '; 30 | $project_count = array_count_values($projects); 31 | $total_projects = count($projects); 32 | foreach ($project_count as $key=> $value) echo '
    • '.$key.': '.crm_percent($value, $total_projects).'
    • '; 33 | echo '
    '; 34 | } 35 | 36 | echo $after_widget; 37 | } 38 | 39 | 40 | } 41 | 42 | add_action('crmpress_stat_loop', 'crmpress_project_sources_loop'); 43 | function crmpress_project_sources_loop() { 44 | global $post, $meta, $projects, $prefix; 45 | $sources_of_projects = get_the_terms( $post->ID, 'sources', '', ', ', '' ); 46 | if(isset($meta[$prefix.'project_status'][0]) && $meta[$prefix.'project_status'][0] == 'quoted and won') { 47 | foreach ($sources_of_projects as $source) $projects[] = $source->name; 48 | } 49 | 50 | } -------------------------------------------------------------------------------- /crmpress/lib/widgets/widget-referral.php: -------------------------------------------------------------------------------- 1 | 'widget_referral', 'description' => ' Displays "other referral source" that has sent more than one referral ' ); 14 | 15 | /* Widget control settings. */ 16 | $control_ops = array( 'id_base' => 'referral-widget' ); 17 | 18 | /* Create the widget. */ 19 | $this->WP_Widget( 'referral-widget', 'Other Referrals', $widget_ops, $control_ops ); 20 | } 21 | 22 | function widget( $args, $instance ) { 23 | extract( $args ); 24 | echo $before_widget; 25 | echo $before_title.'Other Referrals'.$after_title; 26 | 27 | global $referrals; 28 | 29 | if (!empty($referrals)) { 30 | echo '
      '; 31 | $others = array_count_values($referrals); 32 | foreach ($others as $key=>$value) if ($value > 1) echo '
    • '.$key.': '.$value.'
    • '; 33 | echo '
    '; 34 | } 35 | 36 | echo $after_widget; 37 | } 38 | 39 | 40 | } 41 | 42 | add_action('crmpress_stat_loop', 'crmpress_referral_loop'); 43 | function crmpress_referral_loop() { 44 | global $meta, $referrals, $prefix; 45 | if (isset($meta[$prefix.'other_referral'][0])) $referrals[] = $meta[$prefix.'other_referral'][0]; 46 | 47 | } -------------------------------------------------------------------------------- /crmpress/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thomasgriffin/CRM-Press/93a6be2910c3cc1b1a68c050b9e547cf42a0dd3a/crmpress/screenshot.png -------------------------------------------------------------------------------- /crmpress/style.css: -------------------------------------------------------------------------------- 1 | /* 2 | Theme Name: CRM Press 3 | Theme URI: https://github.com/thomasgriffin/CRM-Press 4 | Description: CRM Press is the standalone version of the TwentyTen CRM / Genesis CRM by Bill Erickson and is by far the best WordPress CRM on the planet. 5 | Author: Thomas Griffin 6 | Author URI: http://thomasgriffinmedia.com/ 7 | Version: 1.1.1 8 | License: GNU General Public License v2.0 9 | License URI: http://www.opensource.org/licenses/gpl-license.php 10 | Github Theme URI: https://github.com/thomasgriffin/CRM-Press 11 | */ 12 | 13 | /** 14 | * 15 | * DO NOT EDIT THIS FILE! 16 | * If you wish to make customizations, please create a child theme and do so from there. 17 | * 18 | */ 19 | 20 | /* :..[ CSS Reset ]..: */ 21 | 22 | html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } 23 | 24 | /* :..[ Global Elements ]..: */ 25 | 26 | body { background: #f7f7f7 url('images/bg.png') scroll 0 0; font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; line-height: 22px; color: #626a73; padding: 0; margin: 0 auto; font-weight: normal; text-shadow: 0 1px #fff; } 27 | em { font-style: italic; } 28 | strong { font-weight: bold; } 29 | p { margin: 0 0 15px; } 30 | ol, ul { padding: 0 20px; } 31 | a, a:visited { color: #3b4855; -moz-transition: color .15s linear; -webkit-transition: color .15s linear; -o-transition: color .15s linear; transition: color .15s linear; outline: none; text-decoration: none; } 32 | a:hover { color: #232d37; } 33 | blockquote { background: #f5f5f5; padding: 5px 40px 20px; font-style: italic; color: #555; margin-bottom: 15px; } 34 | code { font-family: Consolas, sans-serif; background: #F0F8FF; color: #555; } 35 | pre { font-family: Consolas, sans-serif; overflow: auto; padding: 20px; margin-bottom: 15px; background: #F0F8FF; color: #555; } 36 | abbr { border-bottom: 1px dotted #dadada; cursor: help; } 37 | table { display: table; width: 100%; margin-bottom: 15px; } 38 | address { margin-bottom: 15px; font-weight: bold; } 39 | dl { margin-bottom: 15px; } 40 | dt { font-weight: bold; } 41 | dd { margin-left: 15px; } 42 | .clear { clear: both; } 43 | 44 | /* :..[ Container Elements ]..: */ 45 | 46 | #wrapper { width: 960px; margin: 0 auto; padding: 0; } 47 | #inner-wrapper { } 48 | 49 | /* :..[ Headings ]..: */ 50 | 51 | h1, h2, h3, h4, h5, h6 { color: #232d37; clear: both; } 52 | h1.entry-title, h2.entry-title { font-size: 20px; clear: none; text-align: center; margin-bottom: 0; } 53 | h1 { font-size: 18px; margin: 15px 0; } 54 | h2 { font-size: 16px; margin: 15px 0; } 55 | h3 { font-size: 14px; margin: 15px 0; } 56 | h4 { font-size: 13px; margin: 10px 0; } 57 | 58 | /* :..[ Header ]..: */ 59 | 60 | #header { width: 100%; height: auto; padding: 25px 0; position: relative; clear: both; text-shadow: 0 1px #fff; } 61 | .site-title { width: 450px; float: left; display: inline; } 62 | #logo { font-size: 26px; text-shadow: 0 1px #fff; margin: 0; } 63 | .site-description { float: left; font-size: 13px; font-style: italic; } 64 | 65 | /* :..[ Navigation ]..: */ 66 | 67 | #navigation { float: right; display: inline; width: auto; height: auto; margin-top: 8px; } 68 | #navigation .menu { list-style: none; margin: 0; padding: 0; } 69 | #navigation .menu li { list-style: none; float: left; } 70 | #navigation .menu li a { padding: 10px; } 71 | #navigation .menu li.last a { padding-right: 0; } 72 | 73 | /* :..[ Content ]..: */ 74 | 75 | #main-content { width: 100%; margin: 25px 0; clear: both; overflow: hidden; background: #fff; } 76 | .content-sidebar-wrapper { border: 1px solid #cbced1; } 77 | #content { margin: 15px; } 78 | #content a { font-weight: bold; text-decoration: underline; } 79 | .content-shadow { background: url('images/content-bg.png') no-repeat scroll 50% 100%; width: 960px; margin: -25px auto 0; height: 15px; z-index: -9999px; } 80 | 81 | /* :..[ Home Content ]..: */ 82 | 83 | .home-row { width: 100%; padding: 20px 0; clear: both; list-style: none; float: left; border-bottom: 1px solid #d6d9dc; } 84 | .home-row.first { padding-top: 0; } 85 | .home-row .widget { float: left; list-style: none; width: 290px; margin-right: 11px; border: 1px solid #cbced1; padding: 5px; background: #f3f6f8; } 86 | .home-row .widget ol, .home-row .widget ul { margin: 0; } 87 | .home-row .widget.last { margin-right: 0; } 88 | .home-row .widget-wrap { background: #fff; padding: 5px; } 89 | .home-row .widget h3 { text-align: center; font-size: 18px; } 90 | 91 | /* :..[ Single Post Content ]..: */ 92 | 93 | .headline { margin-bottom: 15px; } 94 | .headline .edit-link { text-align: center; margin-bottom: 0; font-size: 11px; } 95 | .column-one, .column-two, .column-three { width: 290px; float: left; } 96 | .column-one, .column-two { margin-right: 19px; border-right: 1px solid #d6d9dc; } 97 | 98 | 99 | /* :..[ Individual Widget Styling ]..: */ 100 | 101 | /* :..[ Active Projects Widget ]..: */ 102 | 103 | .widget_active_projects li { margin-bottom: 15px; } 104 | 105 | /* :..[ Footer ]..: */ 106 | 107 | #footer { text-shadow: 0 1px #fff; width: 100%; clear: both; padding: 5px 0; } 108 | #footer .credit { text-align: right; } --------------------------------------------------------------------------------