wp/wp-content/plugins/page-columnist/page-columnist.php
author ymh <ymh.work@gmail.com>
Wed, 06 Nov 2013 03:21:17 +0000
changeset 0 d970ebf37754
permissions -rw-r--r--
first import
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
/***************************************************************************************************************************************************
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
Plugin Name:  Page Columnist
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
Plugin URI: http://www.code-styling.de/english/development/wordpress-plugin-page-columnist-en
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
Description:  A simple way to get single posts and static pages content arranged in column layout, supports also overview page behavior.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
Author: Heiko Rabe
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
Author URI: http://www.code-styling.de/
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
Version: 1.7.3
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
***************************************************************************************************************************************************
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
 License:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
 =======
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
 Copyright 2009 Heiko Rabe  (email : info@code-styling.de)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
 This program is free software; you can redistribute it and/or modify
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
 it under the terms of the GNU General Public License as published by
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
 the Free Software Foundation; either version 2 of the License, or
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
 (at your option) any later version.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
 This program is distributed in the hope that it will be useful,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
 but WITHOUT ANY WARRANTY; without even the implied warranty of
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
 GNU General Public License for more details.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
 You should have received a copy of the GNU General Public License
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
 along with this program; if not, write to the Free Software
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
****************************************************************************************************************************************************/
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
//avoid direct calls to this file, because now WP core and framework has been used
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
if (!function_exists ('add_action')) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
		header('Status: 403 Forbidden');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
		header('HTTP/1.1 403 Forbidden');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
		exit();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
//WordPress definitions
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
if ( !defined('WP_CONTENT_URL') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
	define('WP_CONTENT_URL', get_option('siteurl') . '/wp-content');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
if ( !defined('WP_CONTENT_DIR') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
	define('WP_CONTENT_DIR', ABSPATH . 'wp-content');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
if ( !defined('WP_PLUGIN_URL') ) 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
	define('WP_PLUGIN_URL', WP_CONTENT_URL.'/plugins');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
if ( !defined('WP_PLUGIN_DIR') ) 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
	define('WP_PLUGIN_DIR', WP_CONTENT_DIR.'/plugins');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
if ( !defined('PLUGINDIR') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
	define( 'PLUGINDIR', 'wp-content/plugins' ); // Relative to ABSPATH.  For back compat.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
if ( !defined('WP_LANG_DIR') )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
	define('WP_LANG_DIR', WP_CONTENT_DIR . '/languages');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
//safety patch for changed activation procedure in WP 3.0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
//without this test it won't be activatable at less than 3.0	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
if (!function_exists('cspc_on_activate_plugin'))	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
function cspc_on_activate_plugin() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
	global $page_columnist_plug, $wpdb;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
	//self deactivation in error cases
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
	if (is_object($page_columnist_plug)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
		$version_error = $page_columnist_plug->_get_version_errors();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
		if (is_array($version_error) && count($version_error) != 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
			$row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", 'active_plugins' ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
			if ( is_object( $row ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
				$current = maybe_unserialize( $row->option_value );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
				if (array_search($page_columnist_plug->basename, $current) !== false) {		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
					array_splice($current, array_search($page_columnist_plug->basename, $current), 1 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
					update_option('active_plugins', $current);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
			exit();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
	if (!get_option('cspc_page_columnist'))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
		update_option('cspc_page_columnist', get_option('cspc_page_columnist', $page_columnist_plug->defaults));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
}		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
function cspc_on_deactivate_plugin() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
	//currently empty
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
register_activation_hook(plugin_basename(__FILE__), 'cspc_on_activate_plugin');	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
register_deactivation_hook(plugin_basename(__FILE__), 'cspc_on_deactivate_plugin');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
class Page_columnist_page_transition {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
	function Page_columnist_page_transition(&$plugin, $page_id = false) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
		$this->plugin 		= $plugin; //reference to owner plugin
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
		$this->transition 	= $this->plugin->page_default_trans;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
		$this->data			= array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
		$this->data_keys	= array('spacing', 'columns', 'overflow', 'multiposts');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
		$this->padding		= '<span style="font-style:italic;color:#f00">'.__('* content missing', $this->plugin->textdomain).'</span>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
		if ($page_id) $this->load($page_id);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
		else $this->page_id = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
	function load($page_id) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
		$this->page_id		= ($page_id ? $page_id : 0);		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
		$this->transition 	= $this->plugin->page_default_trans;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
		$this->data			= array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
		$res = explode('|', get_post_meta($this->page_id, '_cspc-page-transitions', true));	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
		$num = count($res);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
		if ($num > 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
			if (in_array($res[0], array_keys($this->plugin->page_transitions))) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
				$this->transition = $res[0];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
				if ($num > 1) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
					$this->data = unserialize($res[1]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
	function save() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
		if ($this->page_id > 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
			$value = $this->transition.'|'.serialize($this->data);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
			update_post_meta($this->page_id, '_cspc-page-transitions', $value);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
	function update_and_save() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
		if (isset($_POST['cspc-page-transition']) && in_array($_POST['cspc-page-transition'], array_keys($this->plugin->page_transitions))) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
			$this->transition = $_POST['cspc-page-transition'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
		if (isset($_POST['cspc-count-columns'])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
			$this->data['columns'] = (int)$_POST['cspc-count-columns'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
		if (isset($_POST['cspc-overflow-paging'])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
			$this->data['overflow'] = $_POST['cspc-overflow-paging'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
			if($this->data['overflow'] != 'hidden' && $this->data['overflow'] != 'virtual') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
				$this->data['overflow'] = 'hidden';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
		}	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
		if (isset($_POST['cspc-multiposts-paging']) && in_array($_POST['cspc-multiposts-paging'], $this->plugin->multiposts_style)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
			$this->data['multiposts'] = $_POST['cspc-multiposts-paging'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
		if (!isset($this->data['distribution']) || !is_array($this->data['distribution'])) $this->data['distribution'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
		$this->save();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
	function spacing() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
		return (isset($this->data['spacing']) ? (float)$this->data['spacing'] : (float)$this->plugin->options->spacing);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
	function columns() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
		return (isset($this->data['columns']) ? (int)$this->data['columns'] : 2);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
	function overflow() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
		return (isset($this->data['overflow']) ? $this->data['overflow'] : 'hidden');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
	function multiposts() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
		return (isset($this->data['multiposts']) ? $this->data['multiposts'] : 'same');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
	function execute(&$pages) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
		return call_user_func(array(&$this, '_exec_'.str_replace('-','_',$this->transition)), $pages);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
	function _padding_pages($needed, &$pages) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
		$res = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
		while(count($pages) % $needed != 0) $pages[] = $this->padding; //padding count of sub pages
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
		if ($this->overflow() == 'hidden') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
			$res[] = array_slice($pages, 0, $needed);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
		}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
			$res = array_chunk($pages, $needed);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
		return $res;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
	function _get_distribution($num, $remaining) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
		$res = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
		if (!is_array($this->data['distribution']) || !isset($this->data['distribution'][$num])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
			$perc = $remaining / $num;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
			for ($i=0; $i<$num; $i++) $res[] = $perc;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
		else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
			$sum = 0.0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
			for ($i=0; $i<$num; $i++) $sum += (float)$this->data['distribution'][$num][$i];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
			for ($i=0; $i<$num; $i++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
				$res[]= ($remaining * ((float)$this->data['distribution'][$num][$i] / $sum));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
		return $res;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
	function _columnize_pages($num, $pages) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
		$res = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
		$base = 100.0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
		$spacing = $this->spacing();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
		$remaining = ($base - ($num - 1) * $spacing);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
		$dist = $this->_get_distribution($num, $remaining);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
		$lorr = 'left';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
		global $wp_locale;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
		if ($wp_locale->text_direction == 'rtl') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
			$lorr = 'right'; //make it work at RTL languages
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
		for ($i=0; $i<$num; $i++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
			$page = $pages[$i];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
			$perc = $dist[$i];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
			if ($this->plugin->is_MSIE()) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
				//IE is not able to calculate column sizes well, several 100% sums leads to get the last column display wrapped under the first
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
				//in several cases (mostly where a periodic fraction of 1/3 or 1/6 occures) , IE seems to reach by internal rounding errors more than 100% of available width
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
				$margin_left_i = ($i==0 ? 0 : $spacing * 0.66);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
			else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
				$margin_left_i = ($i==0 ? 0 : $spacing);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
			$extend = $this->plugin->is_page_preview() ? ' data="'.$perc.'"' : '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
			$res .= "<div id=\"cspc-column-$i\" class=\"cspc-column\" style=\"display:inline-block;float:$lorr;margin-$lorr:$margin_left_i%;width:$perc%;overflow:hidden;\"$extend>";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
			if (has_filter('the_content', 'wpautop') && !preg_match('/^\s*<div/', $page)) $res .= '<p>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
			$res .= $page;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
			if (has_filter('the_content', 'wpautop') && !preg_match('/<\/p>\s*$/', $page)) $res .= '</p>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
			$res .= '</div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
		return $res;		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
	function _columnize_fullsize($page, $clearleft = false) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
		if (empty($page)) return '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
		$res = ($clearleft ? '<div id="cspc-footer" style="clear:left;">' : '<div id="cspc-header">');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
		if (has_filter('the_content', 'wpautop') && !preg_match('/^\s*<div/', $page)) $res .= '<p>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
		$res .= $page;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
		if (has_filter('the_content', 'wpautop') &&!preg_match('/<\/p>\s*$/', $page)) $res .= '</p>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
		$res .= '</div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
		if ($clearleft) $res .='<div style="clear:both; height:0;"> </div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
		return $res;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
	function _exec_cspc_trans_wordpress(&$pages) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
		return $pages;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
	function _exec_cspc_trans_ordinary(&$pages) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
		$res = "<div id=\"$this->transition-wrap\" class=\"cspc-wrapper\">";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
		$res .= "\n\n";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
		$res .= implode("\n\n", $pages);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
		$res .='</div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
		return array($res);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
	function _exec_cspc_trans_columns(&$pages) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
		$work = $this->_padding_pages($this->columns(), $pages);	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
		$out = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
		for ($i=0; $i<count($work); $i++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
			$num = count($work[$i]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
			$res = "<div id=\"$this->transition-wrap\" class=\"cspc-wrapper\">";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
			$res .= '<div id="cspc-content" style="clear:left;">';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
			$res .= $this->_columnize_pages($num, $work[$i]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
			$res .= '<div style="clear:left;"></div></div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
			$res .= '</div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
			$out[] = $res;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
		return $out;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
	function _exec_cspc_trans_header(&$pages) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
		$work = $this->_padding_pages($this->columns() + 1, $pages);	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
		$out = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
		for ($i=0; $i<count($work); $i++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
			$top = array_shift($work[$i]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
			$num = count($work[$i]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
			$res = "<div id=\"$this->transition-wrap\" class=\"cspc-wrapper\">";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
			$res .= $this->_columnize_fullsize($top);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
			$res .= '<div id="cspc-content" style="clear:left;">';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
			$res .= $this->_columnize_pages($num, $work[$i]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
			$res .= '<div style="clear:left;"></div></div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
			$res .= '</div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
			$out[] = $res;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
		return $out;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
	function _exec_cspc_trans_footer(&$pages) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
		$work = $this->_padding_pages($this->columns() + 1, $pages);	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
		$out = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
		for ($i=0; $i<count($work); $i++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
			$last = end($work[$i]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
			$num = count($work[$i]) -1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
			$work[$i] = ($num > 0 ? array_slice($work[$i],0,$num) : array());
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
			$res = "<div id=\"$this->transition-wrap\" class=\"cspc-wrapper\">";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
			$res .= '<div id="cspc-content" style="clear:left;">';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
			$res .= $this->_columnize_pages($num, $work[$i]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
			$res .= '<div style="clear:left;"></div></div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
			$res .= $this->_columnize_fullsize($last, true);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
			$res .= '</div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
			$out[] = $res;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
		return $out;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
	function _exec_cspc_trans_interior(&$pages) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
		$work = $this->_padding_pages($this->columns() + 2, $pages);	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
		$out = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
		for ($i=0; $i<count($work); $i++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
			$top = array_shift($work[$i]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   295
			$num = count($work[$i]) -1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
			$last = ($num > 0 ? end($work[$i]) : '');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
			$work[$i] = ($num > 0 ? array_slice($work[$i],0,$num) : array());
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
			$res = "<div id=\"$this->transition-wrap\" class=\"cspc-wrapper\">";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
			$res .= $this->_columnize_fullsize($top);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
			$res .= '<div id="cspc-content" style="clear:left;">';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
			$res .= $this->_columnize_pages($num, $work[$i]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
			$res .= '<div style="clear:left;"></div></div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
			$res .= $this->_columnize_fullsize($last, true);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
			$res .= '</div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
			$out[] = $res;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
		return $out;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
//page_columnist Plugin class	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
class Plugin_page_columnist {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
	//initializes the whole plugin and enables the activation/deactivation handling
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
	function Plugin_page_columnist() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
		global $wp_version;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
		$this->l10n_ready 							= false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
		//own plugin data
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
		$this->basename 							= plugin_basename(__FILE__);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
		$this->url									= WP_PLUGIN_URL.'/'.dirname($this->basename);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
		$this->textdomain 							= basename($this->basename);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
		$this->textdomain							= substr($this->textdomain, 0, strrpos($this->textdomain, '.'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
		$this->versions								= new stdClass;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
		$this->versions->required					= array( 'php' => '4.4.2', 'wp' => '2.7');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
		$this->versions->found						= array( 'php' => phpversion(), 'wp' => $wp_version);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
		$this->versions->above_27					= !version_compare($this->versions->found['wp'], '2.8alpha', '<');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
		$this->do_resample_page						= false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
		$this->multiposts_style						= array('flat', 'same', 'wp');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
		$this->page_default_trans 					= 'cspc-trans-wordpress';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
		$this->defaults								= new stdClass;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
		$this->defaults->spacing					= 3.0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
		$this->defaults->preview_assistent			= false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
		$this->options								= get_option('cspc_page_columnist', $this->defaults);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
		$stored = get_object_vars($this->options);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
		$defaults = get_object_vars($this->defaults);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
		foreach($defaults as $key => $value) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
			if (!isset($stored[$key])) $this->options->$key = $value;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
									
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
		add_action('init', 							array(&$this, 'on_init'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
		add_action('admin_init',					array(&$this, 'on_admin_init'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
		add_action('wp_head',						array(&$this, 'on_wp_head'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
		add_action('wp_footer',						array(&$this, 'on_wp_footer'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   350
		add_action('admin_head', 					array(&$this, 'on_admin_head'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
		add_action('edit_page_form',				array(&$this, 'on_extend_html_editor'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
		add_action('edit_form_advanced',			array(&$this, 'on_extend_html_editor'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
		add_action('manage_pages_custom_column',	array(&$this, 'on_manage_custom_column'), 10, 2);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
		add_action('manage_posts_custom_column',	array(&$this, 'on_manage_custom_column'), 10, 2);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
		add_action('wp_insert_post', 				array(&$this, 'on_wp_insert_post'), 10, 2);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
		add_action('loop_start', 					array(&$this, 'on_loop_start'), 0 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
		add_action('the_post', 						array(&$this, 'on_the_post'), 0 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
		add_action('template_redirect',				array(&$this, 'on_template_redirect'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
		add_filter('mce_buttons',					array(&$this, 'on_filter_mce_buttons'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   361
		$this->_display_version_errors();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   362
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   363
		//TODO:  future development should be able to deal with removing the ugly wpautop algorithm
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   364
		//remove_filter('the_content', 'wpautop');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   365
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   366
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
	function _get_version_errors() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   368
		$res = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
		foreach($this->versions->required as $key => $value) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   370
			if (!version_compare($this->versions->found[$key], $value, '>=')) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
				$res[strtoupper($key).' Version'] = array('required' => $value, 'found' =>  $this->versions->found[$key]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   373
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   374
		return $res;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   375
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   376
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   377
	function _display_version_errors() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   378
		if (isset($_GET['action']) && isset($_GET['plugin']) && ($_GET['action'] == 'error_scrape') && ($_GET['plugin'] == $this->basename )) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   379
			$this->setup_translation();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   380
			$version_error = $this->_get_version_errors();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   381
			if (count($version_error) != 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   382
				echo "<table>";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   383
				echo "<tr style=\"font-size: 12px;\"><td><strong style=\"border-bottom: 1px solid #000;\">".__('Plugin can not be activated.', $this->textdomain)."</strong></td><td> | ".__('required', $this->textdomain)."</td><td> | ".__('actual', $this->textdomain)."</td></tr>";			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   384
				foreach($version_error as $key => $value) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   385
					echo "<tr style=\"font-size: 12px;\"><td>$key</td><td align=\"center\"> &gt;= <strong>".$value['required']."</strong></td><td align=\"center\"><span style=\"color:#f00;\">".$value['found']."</span></td></tr>";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   386
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   387
				echo "</table>";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   388
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   389
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
	}	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   392
	//load and setup the necessary translation files
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
	function setup_translation() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
		if (!$this->l10n_ready) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   395
			$abs_rel_path = str_replace(ABSPATH, '', WP_PLUGIN_DIR.'/'.dirname($this->basename));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   396
			$plugin_rel_path = dirname($this->basename);		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   397
			load_plugin_textdomain($this->textdomain, $abs_rel_path, $plugin_rel_path);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   398
			$this->l10n_ready = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   399
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   400
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   401
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   402
	//is the browser of current user IE ?
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   403
	function is_MSIE() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   404
		return preg_match('/msie/i', $_SERVER['HTTP_USER_AGENT']) && !preg_match('/opera/i', $_SERVER['HTTP_USER_AGENT']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   405
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   406
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   407
	//do we show a frontend page in preview mode ?
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   408
	function is_page_preview() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   409
		$id = (isset($_GET['preview_id']) ? (int)$_GET['preview_id'] : 0);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   410
		if ($id == 0 && isset($_GET['post_id'])) $id = (int)$_GET['post_id'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   411
		if ($id == 0 && isset($_GET['page_id'])) $id = (int)$_GET['page_id'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   412
		if ($id == 0 && isset($_GET['p'])) $id = (int)$_GET['p'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   413
		$preview = (isset($_GET['preview']) ? $_GET['preview'] : '');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   414
		if ($id > 0 && $preview == 'true' && $this->options->preview_assistent) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   415
			global $wpdb;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   416
			$type = $wpdb->get_results("SELECT post_type FROM $wpdb->posts WHERE ID=$id");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   417
			if (count($type) && ($type[0]->post_type == 'page' || $type[0]->post_type == 'post')){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   418
				switch($type[0]->post_type) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   419
					case 'post':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   420
						return current_user_can('edit_post', $id);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   421
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   422
					case 'page':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   423
						return current_user_can('edit_page', $id);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   424
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   425
					default:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   426
						return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   427
						break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   428
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   429
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   430
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   431
		return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   432
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   433
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   434
	//detects if we a currently render the posts or pages edit overview table page
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   435
	function is_page_overview() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   436
		global $pagenow;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   437
		return (is_admin() && ($pagenow == 'edit-pages.php' || $pagenow == 'edit.php'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   438
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   439
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   440
	//detects if we a currently render the posts or pages editor page
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   441
	function is_page_editor() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   442
		global $pagenow;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   443
		return (is_admin() && (
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   444
			($pagenow == 'page.php') || ($pagenow == 'page-new.php')
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   445
			||
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   446
			($pagenow == 'post.php') || ($pagenow == 'post-new.php')
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   447
			)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   448
		);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   449
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   450
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   451
	//gets called by WordPress action "init" after WordPress core is up and running
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   452
	function on_init() {		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   453
		//ensures the correct matching translation file gets loaded
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   454
		$this->setup_translation();				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   455
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   456
		$this->page_transitions = array(
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   457
			'cspc-trans-wordpress' 		=> array('img-pos' =>   0, 'text' => __('WordPress - Next Page (default)', $this->textdomain), 'default' => true),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   458
			'cspc-trans-ordinary'		=> array('img-pos' => -16, 'text' => __('Ordinary Plain Page', $this->textdomain)),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   459
			'cspc-trans-columns'		=> array('img-pos' => -32, 'text' => __('Every Sub Page as Column', $this->textdomain)),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   460
			'cspc-trans-header'			=> array('img-pos' => -48, 'text' => __('First Sub Page as Header', $this->textdomain)),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   461
			'cspc-trans-footer'			=> array('img-pos' => -64, 'text' => __('Last Sub Page as Footer', $this->textdomain)),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   462
			'cspc-trans-interior'		=> array('img-pos' => -80, 'text' => __('Interior as Columns', $this->textdomain)),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   463
		);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   464
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   465
		if ($this->is_page_preview() && !defined('DOING_AJAX')) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   466
			wp_enqueue_script('jquery-spin', $this->url.'/jquery.spin.js', array('jquery'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   467
			wp_enqueue_script('cspc_page_columnist_assistance', $this->url.'/page-columnist-assistance.js', array('jquery', 'jquery-ui-draggable', 'jquery-spin'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   468
			wp_enqueue_style('cspc_page_columnist_assistance', $this->url.'/page-columnist-assistance.css');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   469
		}		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   470
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   471
		if(defined('DOING_AJAX')) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   472
			add_action('wp_ajax_cspc_save_changes', array(&$this, 'on_ajax_save_changes'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   473
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   474
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   475
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   476
	//gets called by WordPress action "admin_init" to be able to setup correctly in backend mode
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   477
	function on_admin_init() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   478
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   479
		if ($this->is_page_overview()) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   480
			add_filter('manage_edit-pages_columns', array(&$this,'on_filter_manage_columns'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   481
			add_filter('manage_posts_columns', array(&$this,'on_filter_manage_columns'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   482
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   483
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   484
		if ($this->is_page_editor()) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   485
			add_meta_box('cspc-page-transitions', __('Page Columnist', $this->textdomain) , array(&$this, 'on_print_metabox_content_cspc_page_transitions'), 'page', 'side', 'core');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   486
			add_meta_box('cspc-page-transitions', __('Page Columnist', $this->textdomain) , array(&$this, 'on_print_metabox_content_cspc_page_transitions'), 'post', 'side', 'core');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   487
			wp_enqueue_script('jquery-spin', $this->url.'/jquery.spin.js', array('jquery'));		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   488
		}		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   489
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   490
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   491
	//gets called by action "wp_head" to configure the preview assistance
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   492
	function on_wp_head() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   493
		if ($this->is_page_preview()) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   494
			$id = (isset($_GET['preview_id']) ? (int)$_GET['preview_id'] : 0);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   495
			if ($id == 0 && isset($_GET['post_id'])) $id = (int)$_GET['post_id'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   496
			if ($id == 0 && isset($_GET['page_id'])) $id = (int)$_GET['page_id'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   497
			if ($id == 0 && isset($_GET['p'])) $id = (int)$_GET['p'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   498
			$pt = new Page_columnist_page_transition($this, $id);			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   499
		?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   500
		<script type="text/javascript">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   501
		var cspc_page_columnist_l10n = {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   502
			adminUrl: '<?php echo admin_url(); ?>',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   503
			pageId: <?php echo $id; ?>,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   504
			imageBasePath: '<?php echo $this->url.'/img/'; ?>'
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   505
		};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   506
		</script>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   507
		<?php }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   508
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   509
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   510
	//gets called by WordPress action "wp_footer" to print in preview mode the assistance
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   511
	function on_wp_footer() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   512
		if ($this->is_page_preview()) { 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   513
			$id = (isset($_GET['preview_id']) ? (int)$_GET['preview_id'] : 0);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   514
			if ($id == 0 && isset($_GET['post_id'])) $id = (int)$_GET['post_id'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   515
			if ($id == 0 && isset($_GET['page_id'])) $id = (int)$_GET['page_id'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   516
			if ($id == 0 && isset($_GET['p'])) $id = (int)$_GET['p'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   517
			$pt = new Page_columnist_page_transition($this, $id);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   518
		?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   519
		<div id="cspc-assist-bar">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   520
			<div id="cspc-assist-bar-content"> 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   521
				<div class="cspc-section">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   522
					<strong style="font-size: 18px;"><i><a href="http://www.code-styling.de" target="_blank">CodeStyling Project &copy 2009</a></i></strong>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   523
				</div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   524
				<div class="cspc-section">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   525
					<input autocomplete="off" id="cspc-columns-sizing" name="cspc-columns-sizing" type="checkbox"><label for="cspc-columns-sizing"><?php _e('enable column resizing', $this->textdomain); ?></label>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   526
				</div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   527
				<div class="cspc-section">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   528
					<input autocomplete="off" id="cspc-col-spacing" type="text" value="<?php echo (float)$pt->spacing(); ?>" readonly="readonly" style="width:20px;background-color:#fff;color:#000;"/>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   529
					<label>&nbsp;&nbsp;<?php _e('% spacing', $this->textdomain); ?></label>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   530
					&nbsp;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   531
					<input autocomplete="off" id="cspc-default-spacing" name="cspc-default-spacing" type="checkbox"><label for="cspc-default-spacing"><?php _e('default spacing', $this->textdomain); ?></label></input>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   532
					&nbsp;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   533
					<a id="cspc-save-changes" class="cspc-button" href="javascript:void(0);"><?php _e('save changes', $this->textdomain); ?></a>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   534
				</div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   535
				<div style="clear:left;"> </div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   536
			</div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   537
			<div id="cspc-assist-bar-expander"><?php _e('Page Columnist &bull; Assistance', $this->textdomain); ?></div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   538
		</div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   539
		<?php }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   540
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   541
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   542
	//gets called by WordPress action "admin_head"
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   543
	function on_admin_head() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   544
		if ($this->is_page_overview() || $this->is_page_editor()) :	?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   545
			<style type="text/css">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   546
				.cspc-page-table td { font-size: 11px; vertical-align: middle; }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   547
				#cspc-page-definition td { font-size: 11px; vertical-align: middle; }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   548
				#cspc-page-transition-col { width: 56px; } 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   549
				.cspc-page-transition-row { width: 30px; height: 16px; padding-left:16px; }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   550
				.cspc-page-transition-box { padding: 0px 3px 3px 18px; line-height: 18px; white-space: nowrap; }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   551
				*:first-child + html #cspc-page-transitions input { margin-top: -3px; margin-left: 0xp;} /* IE fix */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   552
				*:first-child + html #cspc-page-transitions p { margin: 3px; }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   553
				#cspc-default-column-spacing { font-size:12px;width:26px;background-color:#fff;color:#000;height:19px; padding: 1px 0px 2px 1px; line-height:15px;} /* border: solid 1px #000; line-height:15px;}*/
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   554
				*:first-child + html #cspc-default-column-spacing, html:first-child>b\ody #cspc-default-column-spacing  { height: 15px; } /* IE and Opera */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   555
				<?php foreach($this->page_transitions as $key => $val) : ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   556
				.<?php echo $key; ?> { background: transparent url(<?php echo $this->url.'/states.png'; ?>) no-repeat left <?php echo $val['img-pos']; ?>px; }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   557
				<?php endforeach; ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   558
			</style>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   559
			<?php if ($this->is_page_editor()) : ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   560
				<script type="text/javascript">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   561
					jQuery(document).ready(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   562
						jQuery('#cspc-default-column-spacing').spin({max:10,min:0,imageBasePath: '<?php echo $this->url.'/img/'; ?>', interval: 0.5 });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   563
					});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   564
				</script>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   565
			<?php endif; ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   566
		<?php endif;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   567
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   568
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   569
	//insert the nextpage button to TinyMCE button bar if it's not already there
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   570
	function on_filter_mce_buttons($buttons) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   571
		if ($this->is_page_editor()) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   572
			if (!in_array('wp_page', $buttons)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   573
				if (!in_array('wp_more', $buttons)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   574
					$last = array_pop($buttons);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   575
					$buttons[] = "wp_page";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   576
					$buttons[] = $last;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   577
				}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   578
					$txt = implode('|', $buttons);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   579
					$txt = str_replace('wp_more|','wp_more|wp_page|', $txt);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   580
					$buttons = explode('|', $txt);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   581
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   582
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   583
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   584
		return $buttons;		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   585
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   586
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   587
	//insert nextpage button to HTML editor, if not already present there
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   588
	function on_extend_html_editor() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   589
		if ($this->is_page_editor()) : ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   590
		<script type="text/javascript">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   591
			//<![CDATA[
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   592
			jQuery(document).ready(function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   593
				if (!jQuery("#ed_next").length) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   594
					content = '<input id="ed_next" class="ed_button" type="button" value="<?php _e('nextpage',$this->textdomain); ?>" title="<?php _e('insert Page break', $this->textdomain); ?>" onclick="edInsertContent(edCanvas, \'<!--nextpage-->\');" accesskey="t" />';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   595
					jQuery("#ed_toolbar").append(content);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   596
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   597
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   598
			//]]>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   599
		</script>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   600
		<?php endif;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   601
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   602
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   603
	//append a custom column at edit posts/pages overview
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   604
	function on_filter_manage_columns($columns) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   605
		$columns['cspc-page-transition-col'] = __('Cols', $this->textdomain);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   606
		return $columns;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   607
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   608
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   609
	//add content to the new edit posts / pages overview column
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   610
	function on_manage_custom_column($column_name, $id) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   611
		if ($column_name == 'cspc-page-transition-col') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   612
			$pt = new Page_columnist_page_transition($this, $id);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   613
			if ($pt->transition != 'cspc-trans-wordpress' && $pt->transition != 'cspc-trans-ordinary') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   614
				echo "<div class=\"cspc-page-transition-row $pt->transition\">&nbsp; (".$pt->columns().")</div>";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   615
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   616
			else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   617
				echo "<div class=\"cspc-page-transition-row $pt->transition\">&nbsp; (-)</div>";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   618
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   619
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   620
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   621
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   622
	//save the page transition mode setting of page/post, if something has been saved
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   623
	function on_wp_insert_post($post_ID, $post) {	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   624
		$my_id 		= ((isset($_POST['wp-preview']) && $_POST['wp-preview'] == 'dopreview') ? $_POST['post_ID'] : $post_ID);	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   625
		$my_type 	= ((isset($_POST['wp-preview']) && $_POST['wp-preview'] == 'dopreview') ? $_POST['post_type'] : $post->post_type);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   626
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   627
		switch($my_type) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   628
			case 'post':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   629
				if(!current_user_can('edit_post', $my_id)) return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   630
				break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   631
			case 'page':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   632
				if (!current_user_can('edit_page', $my_id)) return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   633
				break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   634
			default:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   635
				return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   636
				break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   637
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   638
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   639
		if (($my_type == 'page') || ($my_type == 'post')) { 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   640
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   641
			$pt = new Page_columnist_page_transition($this, $my_id);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   642
			$pt->update_and_save();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   643
						
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   644
			$this->options->preview_assistent = (isset($_POST['cspc-preview-assistent']) ? (bool)$_POST['cspc-preview-assistent'] : $this->defaults->preview_assistent);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   645
			$this->options->spacing = (isset($_POST['cspc-default-column-spacing']) ? (float)$_POST['cspc-default-column-spacing'] : $this->defaults->spacing);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   646
			update_option('cspc_page_columnist', $this->options);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   647
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   648
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   649
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   650
	//save the changes the user made at preview assistent 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   651
	function on_ajax_save_changes() {	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   652
		$page_id = (int)$_POST['page_id'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   653
		$spacing = (float)$_POST['spacing'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   654
		$default_spacing = ($_POST['default_spacing'] == 'true' ? true : false);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   655
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   656
		global $wpdb;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   657
		$type = $wpdb->get_results("SELECT post_type FROM $wpdb->posts WHERE ID=$page_id");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   658
		if (count($type) && ($type[0]->post_type == 'page' || $type[0]->post_type == 'post')){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   659
			$checked = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   660
			switch($type[0]->post_type) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   661
				case 'post':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   662
					$checked = current_user_can('edit_post', $page_id);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   663
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   664
				case 'page':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   665
					$checked = current_user_can('edit_page', $page_id);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   666
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   667
				default:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   668
					$checked = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   669
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   670
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   671
			if ($checked) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   672
				$pt = new Page_columnist_page_transition($this, $page_id);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   673
				$pt->data['spacing'] = $spacing;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   674
				if (!is_array($pt->data['distribution'])) $pt->data['distribution'] = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   675
				$pt->data['distribution'][$pt->columns()] = explode('|',$_POST['distribution']);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   676
				$pt->save();				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   677
				if ($default_spacing) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   678
					$this->options->spacing = $spacing;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   679
					update_option('cspc_page_columnist', $this->options);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   680
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   681
				exit();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   682
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   683
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   684
		header('Status: 404 Not Found');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   685
		header('HTTP/1.1 404 Not Found');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   686
		_e('You do not have the permission to edit this page.', $this->textdomain);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   687
		exit();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   688
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   689
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   690
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   691
	//ouput the content of new one sidebar box at page/post editing
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   692
	function on_print_metabox_content_cspc_page_transitions($data) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   693
		$pt = new Page_columnist_page_transition($this, $data->ID); ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   694
		<div style="margin-bottom:5px; border-bottom: dotted 1px #999; padding: 5px 0px;vertical-align:top;">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   695
			<table class="cspc-page-table">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   696
				<tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   697
				 <td><input id="cspc-default-column-spacing" name="cspc-default-column-spacing" type="text" value="<?php echo $this->options->spacing; ?>" readonly="readonly" autocomplete="off"/></td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   698
				 <td>&nbsp;<label for="cspc-default-column-spacing"><?php _e('% column default spacing', $this->textdomain); ?></label><td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   699
				</tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   700
			</table>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   701
		</div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   702
		<div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   703
			<table class="cspc-page-table">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   704
			<?php
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   705
			foreach($this->page_transitions as $type => $val) : ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   706
				<tr><td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   707
					<input id="<?php echo $type; ?>" type="radio" name="cspc-page-transition" value="<?php echo $type; ?>" <?php if($type == $pt->transition) echo 'checked="checked"'; ?>/>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   708
				</td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   709
				<td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   710
					<label for="<?php echo $type; ?>" class="cspc-page-transition-box <?php echo $type; ?>"><?php echo $val['text']; ?></label>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   711
				</td></tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   712
			<?php endforeach; ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   713
			</table>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   714
		</div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   715
		<table id="cspc-page-definition" style="margin-top:5px; border-top: dotted 1px #999; padding: 5px 0px;table-layout:fixed;" width="100%" cellspacing="5px">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   716
			<tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   717
				<td width="30%"><?php _e('spacing:', $this->textdomain); ?></td><td width="70%"><strong><?php echo $pt->spacing(); ?> %</strong></td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   718
			</tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   719
			<tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   720
				<td><?php _e('columns:', $this->textdomain); ?></td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   721
				<td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   722
					<?php for($i=2;$i<7; $i++) { ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   723
					<input id="cspc-count-columns-<?php echo $i; ?>" name="cspc-count-columns" type="radio" value="<?php echo $i; ?>" autocomplete="off" <?php if ($pt->columns() == $i) echo 'checked="checked" '; ?>><?php echo $i; ?></input>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   724
					<?php } ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   725
				</td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   726
			</tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   727
			<tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   728
				<td style="vertical-align:top;"><?php _e('overflow:', $this->textdomain); ?></td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   729
				<td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   730
					<input id="cspc-overflow-hidden" name="cspc-overflow-paging" type="radio" value="hidden" <?php if ($pt->overflow() == 'hidden') echo 'checked="checked"'; ?> autocomplete="off"><?php _e('hide too much columns', $this->textdomain); ?></input><br/>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   731
					<input id="cspc-overflow-virtual" name="cspc-overflow-paging" type="radio" value="virtual" <?php if ($pt->overflow() == 'virtual') echo 'checked="checked"'; ?> autocomplete="off"/><?php _e('generate virtual pages', $this->textdomain); ?></input>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   732
				<td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   733
			</tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   734
			<?php if ($this->versions->above_27) : ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   735
			<tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   736
				<td style="vertical-align:top;"><?php _e('at overview pages:', $this->textdomain); ?></td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   737
				<td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   738
					<input id="cspc-multiposts-same" name="cspc-multiposts-paging" type="radio" value="same" <?php if ($pt->multiposts() == 'same') echo 'checked="checked"'; ?> autocomplete="off"><?php _e('same as single pages', $this->textdomain); ?></input><br/>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   739
					<input id="cspc-multiposts-wp" name="cspc-multiposts-paging" type="radio" value="wp" <?php if ($pt->multiposts() == 'wp') echo 'checked="checked"'; ?> autocomplete="off"/><?php _e('pagination', $this->textdomain); ?></input><br/>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   740
					<input id="cspc-multiposts-flat" name="cspc-multiposts-paging" type="radio" value="flat" <?php if ($pt->multiposts() == 'flat') echo 'checked="checked"'; ?> autocomplete="off"/><?php _e('render flat single content', $this->textdomain); ?></input>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   741
				<td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   742
			</tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   743
			<?php endif; ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   744
		</table>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   745
		<div style="margin-top:5px; border-top: dotted 1px #999; padding: 5px 0px;">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   746
			<table class="cspc-page-table">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   747
				<tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   748
					<td><input id="cspc-preview-assistent" name="cspc-preview-assistent" type="checkbox" <?php if($this->options->preview_assistent) echo 'checked="checked"'; ?>/></td>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   749
					<td><label for="cspc-preview-assistent">&nbsp;<?php _e('enable Assistance at Preview', $this->textdomain); ?></label></td>			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   750
				</tr>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   751
			</table>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   752
		</div>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   753
		<?php		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   754
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   755
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   756
	//restructure the current page to meet the user configured column layout
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   757
	function resample_page_content() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   758
		global $post, $id, $page, $pages, $multipage, $numpages;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   759
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   760
		$pt = new Page_columnist_page_transition($this, $post->ID);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   761
		//user can change overview pages to support also columnization, default is off
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   762
		if (!is_single()) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   763
			switch($pt->multiposts()) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   764
				case 'wp': 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   765
					$pt->transition = $this->page_default_trans;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   766
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   767
				case 'flat':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   768
					$pt->transition = 'cspc-trans-ordinary';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   769
					break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   770
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   771
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   772
		if($pt->transition == $this->page_default_trans) return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   773
		$pages = $pt->execute($pages);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   774
					
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   775
		if (count($pages) > 1) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   776
			$multipage = 1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   777
			$numpages = count($pages);				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   778
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   779
		else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   780
			$multipage = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   781
			$numpages = 1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   782
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   783
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   784
/*			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   785
		//TODO: future versions should check ugly invalid <p> based at shortcode api if possible
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   786
		if (has_filter('the_content', 'wpautop')) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   787
			preg_match('/'.get_shortcode_regex().'(\s\s|)/', $pages[0],$hits);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   788
			var_dump($hits);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   789
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   790
*/		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   791
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   792
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   793
	//beginning WP 2.8 the order of how hooks been called have been change
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   794
	//that's why the handling of resampling the page if different for 2.7 and 2.8, this have to be respected
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   795
	function on_the_post() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   796
		if ($this->versions->above_27) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   797
			$this->resample_page_content();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   798
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   799
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   800
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   801
	//beginning WP 2.8 the order of how hooks been called have been change
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   802
	//that's why the handling of resampling the page if different for 2.7 and 2.8, this have to be respected
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   803
	function on_loop_start() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   804
		if ($this->versions->above_27 == false) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   805
			if (is_page() || is_single()) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   806
				$this->resample_page_content();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   807
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   808
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   809
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   810
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   811
	//if we are in none standard page mode, ensure a redirect to main page slug, if sub-page has been requested directly and doesn't support virtual paging
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   812
	function on_template_redirect(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   813
		global $post, $page;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   814
		if ($post->post_type == 'page' || $post->post_type == 'post') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   815
			$pt = new Page_columnist_page_transition($this, $post->ID);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   816
			if (($pt->transition != $this->page_default_trans) && $page && $pt->overflow() == 'hidden') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   817
				wp_redirect(get_permalink($post->ID));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   818
				exit();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   819
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   820
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   821
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   822
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   823
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   824
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   825
//nothing more remains to do as to create an instance of the plugin itself :-)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   826
global $page_columnist_plug; 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   827
$page_columnist_plug = new Plugin_page_columnist();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   828
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   829
}// if !function_exists('cspc_on_activate_plugin'))	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   830
?>