コード例 #1
0
ファイル: admin.php プロジェクト: joffcrabtree/wp-panopress
function pp_edit_settings()
{
    global $pp_wp_upload_dir, $pp_settings;
    /* hadle post */
    if (!empty($_POST) && $_POST['pp_action'] && is_admin()) {
        /* check nonce */
        if (!wp_verify_nonce($_POST['pp-nonce'], 'pp-settings-action')) {
            die(pp__('Sorry, you can not post to this page (nonce did not verify).'));
        }
        /* reset */
        if ($_POST['pp_action'] == 'reset') {
            delete_option(PP_SETTINGS);
            pp_default_settings();
            delete_option(PP_CSS);
        } elseif ($_POST['pp_action'] == 'update') {
            // update
            $style = array();
            $e = explode(',', $_POST[PP_SETTINGS_PANOBOX . '_' . PB_SETTINGS_STYLE]);
            for ($i = 0; $i < count($e); $i++) {
                $t = explode(':', $e[$i]);
                $style[$t[0]] = $t[1];
            }
            // pp settings
            $pp_settings = array();
            $pp_settings[PP_SETTINGS_WIDTH] = pp_check_size($_POST[PP_SETTINGS_WIDTH]);
            $pp_settings[PP_SETTINGS_HEIGHT] = pp_check_size($_POST[PP_SETTINGS_HEIGHT]);
            $pp_settings[PP_SETTINGS_UPLOAD_WP] = $_POST[PP_SETTINGS_UPLOAD_WP];
            $pp_settings[PP_SETTINGS_UPLOAD_DIR] = $pp_settings[PP_SETTINGS_UPLOAD_WP] ? $pp_wp_upload_dir : trim(strtolower($_POST[PP_SETTINGS_UPLOAD_DIR]), '/');
            $pp_settings[PP_SETTINGS_VIEWER_DIR] = trim(strtolower($_POST[PP_SETTINGS_VIEWER_DIR]), '/');
            $pp_settings[PP_SETTINGS_USE_VIEWER_DIR] = $_POST[PP_SETTINGS_USE_VIEWER_DIR];
            $pp_settings[PP_SETTINGS_WMODE] = $_POST[PP_SETTINGS_WMODE];
            $pp_settings[PP_SETTINGS_OPPP] = $_POST[PP_SETTINGS_OPPP];
            $pp_settings[PP_SETTINGS_PANOBOX_WMODE] = $_POST[PP_SETTINGS_PANOBOX_WMODE];
            $pp_settings[PP_SETTINGS_PLAY_BUTTON] = $_POST[PP_SETTINGS_PLAY_BUTTON] == '1';
            $pp_settings[PP_SETTINGS_PANOBOX_ACTIVE] = $_POST[PP_SETTINGS_PANOBOX_ACTIVE] == '1';
            $pp_settings[PP_SETTINGS_PANOBOX_MOBILE] = $_POST[PP_SETTINGS_PANOBOX_MOBILE] != '1';
            $pp_settings[PP_SETTINGS_CSS] = $_POST[PP_SETTINGS_CSS];
            // pb settings
            $pp_settings[PP_SETTINGS_PANOBOX] = array();
            $pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_FULLSCREEN] = $_POST[PP_SETTINGS_PANOBOX . '_' . PB_SETTINGS_FULLSCREEN] == '1';
            $pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_FADE] = $_POST[PP_SETTINGS_PANOBOX . '_' . PB_SETTINGS_FADE] == '1';
            $pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_ANIMATE] = $_POST[PP_SETTINGS_PANOBOX . '_' . PB_SETTINGS_ANIMATE] == '1';
            $pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_SHADOW] = $_POST[PP_SETTINGS_PANOBOX . '_' . PB_SETTINGS_SHADOW] == '1';
            $pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_WIDTH] = pp_check_size($_POST[PP_SETTINGS_PANOBOX . '_' . PB_SETTINGS_WIDTH]);
            $pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_HEIGHT] = pp_check_size($_POST[PP_SETTINGS_PANOBOX . '_' . PB_SETTINGS_HEIGHT]);
            //$pp_settings[ PP_SETTINGS_PANOBOX ][ PB_SETTINGS_RESIZE ]     = true;
            $pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_STYLE] = $style;
            $pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_GALLERIES] = $_POST[PP_SETTINGS_PANOBOX . '_' . PB_SETTINGS_GALLERIES] == '1';
            /* save settings */
            if (get_option(PP_SETTINGS)) {
                update_option(PP_SETTINGS, $pp_settings);
            } else {
                add_option(PP_SETTINGS, $pp_settings);
            }
        }
    }
    ?>
<style type="text/css" media="screen">
.pp-advanced-settings{display:<?php 
    echo $_POST['advanced_open'] == 'show' ? '' : 'none';
    ?>
}
th, td{white-space:nowrap}
label{padding-left:4px}
input:disabled{opacity:.5}
</style>
<div class="wrap">
<div style="float:right">Version <?php 
    echo PP_APP_VERSION;
    ?>
</div>
<div id="icon-options-general" class="icon32"></div>
<h2><?php 
    echo PP_APP_NAME . ' ' . pp__('Settings');
    ?>
</h2>
<div id="pp_notify" style="margin-top:6px;font-weight:bold;display:none"></div>
<form method="post" id="pp-settings" name="pp-settings" action="" enctype="multipart/form-data">
<input type="hidden" id="pp_action" name="pp_action" value="update" />
<?php 
    wp_nonce_field('pp-settings-action', 'pp-nonce', true);
    ?>
<table class="form-table">
	<tr valign="top">
		<th scope="row"><?php 
    pp_e('Embed Size');
    ?>
</th>
		<td colspan="2"> 
			<?php 
    pp_e('Width');
    ?>
: <input type="text" name="<?php 
    echo PP_SETTINGS_WIDTH;
    ?>
" value="<?php 
    echo $pp_settings[PP_SETTINGS_WIDTH] ? $pp_settings[PP_SETTINGS_WIDTH] : PP_DEFAULT_WIDTH;
    ?>
" size="6" />
			<?php 
    pp_e('Height');
    ?>
: <input type="text" name="<?php 
    echo PP_SETTINGS_HEIGHT;
    ?>
" value="<?php 
    echo $pp_settings[PP_SETTINGS_HEIGHT] ? $pp_settings[PP_SETTINGS_HEIGHT] : PP_DEFAULT_HEIGHT;
    ?>
" size="6" />
			&nbsp;<span class="description"><?php 
    pp_e('you may use px, %, em, or other standard');
    ?>
<a href="http://www.w3schools.com/cssref/css_units.asp" target="_blank"> <?php 
    pp_e('CSS units');
    ?>
</a>. Examples: 800px, 100%, 2.5em, etc.</span>
			<!--
			<?php 
    if ($pp_settings[PP_SETTINGS_WIDTH] === null) {
        ?>
			<span class="error"><?php 
        pp_e('The widht value is incorrect');
        ?>
</span>
			<?php 
    }
    ?>
			<?php 
    if ($pp_settings[PP_SETTINGS_HEIGHT] === null) {
        ?>
			<span class="error"><?php 
        pp_e('The height value is incorrect');
        ?>
</span>
			<?php 
    }
    ?>
			-->
		</td>
	</tr>
	<tr valign="top" style="background-color:#eee">
		<th scope="row"><?php 
    pp_e('Style');
    ?>
</th>
		<td colspan="2">
			<input id="play-button" name="<?php 
    echo PP_SETTINGS_PLAY_BUTTON;
    ?>
" value="1" type="checkbox"<?php 
    if ($pp_settings[PP_SETTINGS_PLAY_BUTTON]) {
        ?>
 checked<?php 
    }
    ?>
 /><label for="play-button"><?php 
    pp_e('Show Play button');
    ?>
</label>
		</td>
	</tr>
	<tr valign="top">
		<th scope="row">
			<?php 
    pp_e('Panobox');
    ?>
		</th>
		<td colspan="2">
			
			<input id="panobox-active" name="<?php 
    echo PP_SETTINGS_PANOBOX_ACTIVE;
    ?>
" value="1" type="checkbox"<?php 
    if ($pp_settings[PP_SETTINGS_PANOBOX_ACTIVE]) {
        ?>
 checked<?php 
    }
    ?>
 /><label for="panobox-active"><?php 
    pp_e('Open panoramas in Panobox');
    ?>
</label>
			<input type="hidden" id="panobox-open" name="panobox_open" value="<?php 
    echo !isset($_POST['panobox_open']) || $_POST['panobox_open'] == 'hide' ? 'hide' : 'show';
    ?>
"  />
			<br />
			<input id="panobox-galleries" name="<?php 
    echo PP_SETTINGS_PANOBOX . '_' . PB_SETTINGS_GALLERIES;
    ?>
" value="1" type="checkbox"<?php 
    if ($pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_GALLERIES]) {
        ?>
 checked<?php 
    }
    ?>
 /><label for="panobox-galleries"><?php 
    pp_e('Open image galleries in Panobox');
    ?>
</label>

			<br />
			<a id="panobox-options-label" href="javascript:toggle_panobox_options()"><?php 
    echo !isset($_POST['panobox_open']) || $_POST['panobox_open'] == 'hide' ? 'Customize Panobox...' : 'Customize Panobox';
    ?>
</a>
			<br/>
			<table id="panobox-options" style="<?php 
    if (!isset($_POST['panobox_open']) || $_POST['panobox_open'] == 'hide') {
        ?>
display:none<?php 
    }
    ?>
" >
				<tr>
					<td nowrap valign="top"><?php 
    pp_e('Window Size');
    ?>
:</td>
					<td>		
						<?php 
    pp_e('Width');
    ?>
: <input onchange="document.forms[0].<?php 
    echo PP_SETTINGS_PANOBOX . '_' . PB_SETTINGS_WIDTH;
    ?>
.value = this.value" id="panobox-width"  type="text" value="<?php 
    echo $pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_WIDTH] ? $pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_WIDTH] : PP_DEFAULT_WIDTH;
    ?>
" size="6" <?php 
    if ($pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_FULLSCREEN]) {
        ?>
disabled="disabled" <?php 
    }
    ?>
 />
						<?php 
    pp_e('Height');
    ?>
: <input onchange="document.forms[0].<?php 
    echo PP_SETTINGS_PANOBOX . '_' . PB_SETTINGS_HEIGHT;
    ?>
.value = this.value"id="panobox-height" type="text" value="<?php 
    echo $pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_HEIGHT] ? $pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_HEIGHT] : PP_DEFAULT_HEIGHT;
    ?>
" size="6" <?php 
    if ($pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_FULLSCREEN]) {
        ?>
disabled="disabled" <?php 
    }
    ?>
 />						
						<input type="hidden" name="<?php 
    echo PP_SETTINGS_PANOBOX . '_' . PB_SETTINGS_WIDTH;
    ?>
" value="<?php 
    echo $pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_WIDTH] ? $pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_WIDTH] : PP_DEFAULT_WIDTH;
    ?>
" />
						<input type="hidden" name="<?php 
    echo PP_SETTINGS_PANOBOX . '_' . PB_SETTINGS_HEIGHT;
    ?>
" value="<?php 
    echo $pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_HEIGHT] ? $pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_HEIGHT] : PP_DEFAULT_HEIGHT;
    ?>
" />						
						&nbsp;<span class="description"><?php 
    pp_e('in CSS units');
    ?>
</span>
						<br />
						<input id="panobox-fullscreen" onchange="toggle_panobox_fulscreen(this.checked)" name="<?php 
    echo PP_SETTINGS_PANOBOX . '_' . PB_SETTINGS_FULLSCREEN;
    ?>
" value="1" type="checkbox"<?php 
    if ($pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_FULLSCREEN]) {
        ?>
 checked<?php 
    }
    ?>
 /><label for="panobox-fullscreen"><?php 
    pp_e('Use Fullscreen');
    ?>
</label> 
					</td>
				</tr>
				<tr>
					<td><?php 
    pp_e('Style');
    ?>
:</td>
					<td>
						<select name="<?php 
    echo PP_SETTINGS_PANOBOX . '_' . PB_SETTINGS_STYLE;
    ?>
">
						<option value="<?php 
    echo PB_SETTINGS_STYLE_BOX;
    ?>
:pb-light,<?php 
    echo PB_SETTINGS_STYLE_OVERLAY;
    ?>
:pb-light-overlay"<?php 
    if ($pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_STYLE][PB_SETTINGS_STYLE_BOX] == 'pb-light') {
        ?>
 selected<?php 
    }
    ?>
 />&nbsp;Light&nbsp;</option>
						<option value="<?php 
    echo PB_SETTINGS_STYLE_BOX;
    ?>
:pb-dark,<?php 
    echo PB_SETTINGS_STYLE_OVERLAY;
    ?>
:pb-dark-overlay"<?php 
    if ($pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_STYLE][PB_SETTINGS_STYLE_BOX] == 'pb-dark') {
        ?>
 selected<?php 
    }
    ?>
 />&nbsp;Dark&nbsp;</option>
						<option value="<?php 
    echo PB_SETTINGS_STYLE_BOX;
    ?>
:pb-adaptive,<?php 
    echo PB_SETTINGS_STYLE_OVERLAY;
    ?>
:pb-adaptive-overlay"<?php 
    if ($pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_STYLE][PB_SETTINGS_STYLE_BOX] == 'pb-adaptive') {
        ?>
 selected<?php 
    }
    ?>
 />&nbsp;Adaptive&nbsp;</option>
						</select>
					</td>
				</tr>
				<tr>	
					<td><?php 
    pp_e('Effects');
    ?>
:</td>	
					<td>					
						<input id="panobox-shadow" name="<?php 
    echo PP_SETTINGS_PANOBOX . '_' . PB_SETTINGS_SHADOW;
    ?>
" value="1" type="checkbox"<?php 
    if ($pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_SHADOW]) {
        ?>
 checked<?php 
    }
    ?>
 /><label for="panobox-shadow"><?php 
    pp_e('Drop-shadow');
    ?>
</label>
						&nbsp;&nbsp;
						<input id="panobox-fade" name="<?php 
    echo PP_SETTINGS_PANOBOX . '_' . PB_SETTINGS_FADE;
    ?>
" value="1" type="checkbox"<?php 
    if ($pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_FADE]) {
        ?>
 checked<?php 
    }
    ?>
 /><label for="panobox-fade"><?php 
    pp_e('Fade-in/out');
    ?>
</label>
						&nbsp;&nbsp;
						<input id="panobox-animate" name="<?php 
    echo PP_SETTINGS_PANOBOX . '_' . PB_SETTINGS_ANIMATE;
    ?>
" value="1" type="checkbox"<?php 
    if ($pp_settings[PP_SETTINGS_PANOBOX][PB_SETTINGS_ANIMATE]) {
        ?>
 checked<?php 
    }
    ?>
 /><label for="panobox-animate"><?php 
    pp_e('Animated window resize');
    ?>
</label>
					</td>
				</tr>
				<tr>
					<td><?php 
    pp_e('Mobile');
    ?>
:</td>
					<td>
						<input id="panobox-mobile" name="<?php 
    echo PP_SETTINGS_PANOBOX_MOBILE;
    ?>
" value="1" type="checkbox"<?php 
    if (!$pp_settings[PP_SETTINGS_PANOBOX_MOBILE]) {
        ?>
 checked<?php 
    }
    ?>
 /><label for="panobox-mobile"><?php 
    pp_e('Don\'t use Panobox for mobile devices');
    ?>
</label>
					</td>
				</tr>
			</table>
		</td>
	</tr>
	<tr valign="top" class="pp-advanced-settings" style="background-color:#eee">
		<th scope="row"><?php 
    pp_e('Upload Folder');
    ?>
</th>
		<td colspan="2">
			<input id="upload-sys" onchange="toggle_wp_ul(this.checked, '<?php 
    echo $pp_wp_upload_dir;
    ?>
' )" type="checkbox" name="<?php 
    echo PP_SETTINGS_UPLOAD_WP;
    ?>
" value="true"<?php 
    if ($pp_settings[PP_SETTINGS_UPLOAD_WP]) {
        ?>
 checked<?php 
    }
    ?>
 /><label for="upload-sys"><?php 
    pp_e('Use WordPress upload folder');
    ?>
</label> (<?php 
    echo $pp_wp_upload_dir;
    ?>
)
			<br />
			Folder Path:&nbsp;<input  style="width:320px"  id="upload-dir" <?php 
    if ($pp_settings[PP_SETTINGS_UPLOAD_WP]) {
        ?>
disabled="disabled" <?php 
    }
    ?>
type="text" name="<?php 
    echo PP_SETTINGS_UPLOAD_DIR;
    ?>
" value="<?php 
    echo $pp_settings[PP_SETTINGS_UPLOAD_WP] ? $pp_wp_upload_dir : $pp_settings[PP_SETTINGS_UPLOAD_DIR];
    ?>
" size="36" /><?php 
    if (!is_dir(pp_wp_root($pp_settings[PP_SETTINGS_UPLOAD_DIR]))) {
        ?>
<span class="error"><?php 
        pp_e('Folder does not exist');
        ?>
</span><?php 
    }
    ?>
		</td>
	</tr>
	<tr valign="top" class="pp-advanced-settings">
		<th scope="row"><?php 
    pp_e('Global Viewer');
    ?>
</th>
		<td colspan="2">
			<input id="use-viewer-dir" onchange="toggle_viewer_folder(this.checked)" type="checkbox" name="<?php 
    echo PP_SETTINGS_USE_VIEWER_DIR;
    ?>
" value="true"<?php 
    if ($pp_settings[PP_SETTINGS_USE_VIEWER_DIR]) {
        ?>
 checked<?php 
    }
    ?>
 /><label for="use-viewer-dir"><?php 
    pp_e('Use Global Viewer');
    ?>
</label>&nbsp;<span class="description">(<?php 
    pp_e('KRPano & FPP only');
    ?>
 <a target="_blank" href="http://www.panopress.org/krpano-global-swf/"><?php 
    pp_e('learn more');
    ?>
</a>)</span>
			<br />
			Folder Path:&nbsp;<input style="width:320px" id="viewer-dir" <?php 
    if (!$pp_settings[PP_SETTINGS_USE_VIEWER_DIR]) {
        ?>
disabled="disabled" <?php 
    }
    ?>
type="text" value="<?php 
    echo $pp_settings[PP_SETTINGS_VIEWER_DIR];
    ?>
" /><?php 
    if (!is_dir(pp_wp_root($pp_settings[PP_SETTINGS_VIEWER_DIR])) && $pp_settings[PP_SETTINGS_USE_VIEWER_DIR]) {
        ?>
<span class="error"><?php 
        pp_e('Folder does not exist');
        ?>
</span><?php 
    }
    ?>
			<input type="hidden" id="viewer-dir-hidden" name="<?php 
    echo PP_SETTINGS_VIEWER_DIR;
    ?>
" value="<?php 
    echo $pp_settings[PP_SETTINGS_VIEWER_DIR];
    ?>
" />
		</td>
	</tr>
	<tr valign="top" class="pp-advanced-settings" style="background-color:#eee">
		<th scope="row"><?php 
    pp_e('Performance');
    ?>
</th>
		<td colspan="2">
		<?php 
    pp_e('Only one active panorama per page for');
    ?>
:
		<select name="<?php 
    echo PP_SETTINGS_OPPP;
    ?>
">
			<option value="<?php 
    echo PP_OPPP_DISABLED;
    ?>
"<?php 
    if ($pp_settings[PP_SETTINGS_OPPP] == PP_OPPP_DISABLED) {
        ?>
 selected<?php 
    }
    ?>
 /><?php 
    pp_e('None');
    ?>
</option>
			<option value="<?php 
    echo PP_OPPP_MOBILE;
    ?>
"<?php 
    if ($pp_settings[PP_SETTINGS_OPPP] == PP_OPPP_MOBILE) {
        ?>
 selected<?php 
    }
    ?>
 /><?php 
    pp_e('Mobile devices');
    ?>
&nbsp;</option>
			<option value="<?php 
    echo PP_OPPP_ALL;
    ?>
"<?php 
    if ($pp_settings[PP_SETTINGS_OPPP] == PP_OPPP_ALL) {
        ?>
 selected<?php 
    }
    ?>
 /><?php 
    pp_e('All devices');
    ?>
</option>
		</select>
		</td>
	</tr>
	<tr valign="top" class="pp-advanced-settings">
		<th scope="row"><?php 
    pp_e('Flash window mode');
    ?>
<br/>('wmode')</th>
		<td colspan="2">
		<?php 
    pp_e('Embedded panoramas');
    ?>
:&nbsp;
		<select name="<?php 
    echo PP_SETTINGS_WMODE;
    ?>
">
			<option value="auto"<?php 
    if ($pp_settings[PP_SETTINGS_WMODE] == 'auto') {
        ?>
 selected<?php 
    }
    ?>
 />Auto</option>
			<option value="window"<?php 
    if ($pp_settings[PP_SETTINGS_WMODE] == 'window') {
        ?>
 selected<?php 
    }
    ?>
 />Window</option>
			<option value="opaque"<?php 
    if ($pp_settings[PP_SETTINGS_WMODE] == 'opaque') {
        ?>
 selected<?php 
    }
    ?>
 />Opaque</option>
			<option value="transparent"<?php 
    if ($pp_settings[PP_SETTINGS_WMODE] == 'transparent') {
        ?>
 selected<?php 
    }
    ?>
 />Transparent&nbsp;</option>
		</select>
		&nbsp;&nbsp;
		<?php 
    pp_e('Panobox');
    ?>
:&nbsp;
		<select name="<?php 
    echo PP_SETTINGS_PANOBOX_WMODE;
    ?>
">
			<option value="auto"<?php 
    if ($pp_settings[PP_SETTINGS_PANOBOX_WMODE] == 'auto') {
        ?>
 selected<?php 
    }
    ?>
 />Auto</option>
			<option value="window"<?php 
    if ($pp_settings[PP_SETTINGS_PANOBOX_WMODE] == 'window') {
        ?>
 selected<?php 
    }
    ?>
 />Window</option>
			<option value="opaque"<?php 
    if ($pp_settings[PP_SETTINGS_PANOBOX_WMODE] == 'opaque') {
        ?>
 selected<?php 
    }
    ?>
 />Opaque</option>
			<option value="transparent"<?php 
    if ($pp_settings[PP_SETTINGS_PANOBOX_WMODE] == 'transparent') {
        ?>
 selected<?php 
    }
    ?>
 />Transparent&nbsp;</option>
		</select>
		</td>
	</tr>
	<tr valign="top" class="pp-advanced-settings" style="background-color:#eee">
		<th scope="row" style="padding-top:20px">
			<?php 
    pp_e('CSS');
    ?>
		</th>
		<td>
			<textarea name="<?php 
    echo PP_SETTINGS_CSS;
    ?>
" style="margin-top:10px;width:400px; height:80px"><?php 
    echo $pp_settings[PP_SETTINGS_CSS];
    ?>
</textarea>
			<a href="http://www.panopress.org/css/" target="_blank"><?php 
    pp_e('Class reference');
    ?>
</a>
		</td>
	</tr>
	<tr>
		<td><input type="button" onclick="toggle_advanced()" id="toggle-advanced" class="button-secondary" value="<?php 
    echo $_POST['advanced_open'] == 'show' ? 'Hide' : 'Show';
    ?>
 advanced options" /></td>
		<td colspan="2">
			<input type="submit" onclick="return submit_form()" class="button-primary" value="<?php 
    pp_e('Save Changes');
    ?>
" />
			&nbsp;&nbsp;
			<input type="button" onclick="reset_form()" class="button-secondary" value="<?php 
    pp_e('Reset to defaults');
    ?>
" />
		</td>
	</tr>
	<tr>
		<td colspan="3"><a href="http://www.panopress.org/instructions/" target="_blank"><?php 
    echo PP_APP_NAME;
    ?>
 <?php 
    pp_e('Instructions');
    ?>
</a></td>
	</tr>
<input type="hidden" id="advanced-open" name="advanced_open" value="<?php 
    echo !isset($_POST['advanced_open']) || $_POST['advanced_open'] == 'hide' ? 'hide' : 'show';
    ?>
"  />
</form>
</div>
<script type="text/javascript">
//<![CDATA[
$pp2 = jQuery.noConflict();
$pp2(function(){
	if(typeof pp_loaded == 'undefined'){
		$pp2.ajax({
		url: '<?php 
    echo plugins_url('/js/admin.js', dirname(__FILE__));
    ?>
',
			error: function(XMLHttpRequest, textStatus, errorThrown){
				var msg = '', n = $pp2('#pp_notify');
				switch (XMLHttpRequest.status){
					case 403: msg = '<?php 
    pp_e('Error: 403, The access to some of ' . PP_APP_NAME . ' files was forbidden by the server.<br/>you may need to change the ' . PP_APP_NAME . ' folder permissions.');
    ?>
'; break;
					case 404: msg = '<?php 
    pp_e('Error: 404, Some of ' . PP_APP_NAME . ' files was not found.');
    ?>
'; break;
					default:  msg = 'Error: ' + XMLHttpRequest.status + ', ' + XMLHttpRequest.statusText + '.';
				}
				n.html(msg);
				n.addClass('error');
				n.slideDown();
			}
		});
	}
});
//]]>
</script>
<!-- <?php 
    echo '/' . PP_APP_NAME . ' settings';
    ?>
 -->
<?php 
}
コード例 #2
0
/**
 * shortcode handler
 * @param attributes: [array]  shortcode attributes
 **/
function pp_sohrtcode_handler($attributes)
{
    global $pp_settings;
    /* user can use short keys, eg. 'w' for 'width' etc.
       only items in this array allowed to pass into settings */
    $att = array('f' => PP_SETTINGS_FILE, 'w' => PP_SETTINGS_WIDTH, 'h' => PP_SETTINGS_HEIGHT, 'a' => PP_SETTINGS_ALT, 't' => PP_SETTINGS_TITLE, 'p' => PP_SETTINGS_PREVIEW, 'b' => PP_SETTINGS_PANOBOX, 'n' => PP_SETTINGS_PLAY_BUTTON);
    // clean attributes and use short keys
    $clean = array();
    foreach ($att as $key => $val) {
        if (array_key_exists($val, $attributes)) {
            $clean[$val] = $attributes[$val];
        } elseif (array_key_exists($key, $attributes)) {
            $clean[$val] = $attributes[$key];
        }
        /* test for short key */
    }
    // check play button
    if (isset($clean[PP_SETTINGS_PLAY_BUTTON])) {
        $clean[PP_SETTINGS_PLAY_BUTTON] = pp_bool($clean[PP_SETTINGS_PLAY_BUTTON]);
    }
    // check panobox
    if (isset($clean[PP_SETTINGS_PANOBOX])) {
        $clean[PP_SETTINGS_PANOBOX_ACTIVE] = pp_bool($clean[PP_SETTINGS_PANOBOX]);
        unset($clean[PP_SETTINGS_PANOBOX]);
    }
    // combine the shortcode attribute with default settings
    $settings = array_merge($pp_settings, $clean);
    // check if the file name was set
    if (!$settings[PP_SETTINGS_FILE]) {
        return pp_error(pp__('Please enter file name or URL'));
    }
    // set type by file ext
    $filestr = strtolower($settings[PP_SETTINGS_FILE]);
    if (strstr($filestr, '?')) {
        $filestr = substr($filestr, 0, strpos($filestr, '?'));
    }
    $file_name = substr($filestr, strrpos($filestr, '/'));
    $settings[PP_SETTINGS_TYPE] = substr($file_name, strrpos($file_name, '.') + 1);
    //substr ( $filestr, strrpos( $filestr, '.') + 1 );
    // if file is not full url, craete a local url
    if (strtolower(substr($settings[PP_SETTINGS_FILE], 0, 4)) != 'http') {
        $settings[PP_SETTINGS_FILE] = site_url('/' . $pp_settings[PP_SETTINGS_UPLOAD_DIR] . '/' . $settings[PP_SETTINGS_FILE]);
    }
    // if poster is not full url, craete a local url
    if (strlen($settings[PP_SETTINGS_PREVIEW]) > 0 && strtolower(substr($settings[PP_SETTINGS_PREVIEW], 0, 4)) != 'http') {
        $settings[PP_SETTINGS_PREVIEW] = site_url('/' . $pp_settings[PP_SETTINGS_UPLOAD_DIR] . '/' . $settings[PP_SETTINGS_PREVIEW]);
    }
    // replace spaces in url with %20
    $settings[PP_SETTINGS_PREVIEW] = str_replace(' ', '%20', $settings[PP_SETTINGS_PREVIEW]);
    $settings[PP_SETTINGS_FILE] = str_replace(' ', '%20', $settings[PP_SETTINGS_FILE]);
    // parse xml
    if ($settings[PP_SETTINGS_TYPE] == PP_FILE_TYPE_XML) {
        $got_name = pp_get_viewr_name($settings[PP_SETTINGS_FILE]);
        if ($got_name['status'] == 1) {
            $settings[PP_SETTINGS_VIEWER_NAME] = $got_name['content'];
        } elseif (is_user_logged_in()) {
            return pp_error($got_name['content']);
        }
        // error report (admin only)
        libxml_use_internal_errors(is_user_logged_in());
        // test allow_url_fopen
        if (ini_get('allow_url_fopen') == 1) {
            $xml = is_user_logged_in() ? simplexml_load_file($settings[PP_SETTINGS_FILE]) : @simplexml_load_file($settings[PP_SETTINGS_FILE]);
        } else {
            if (function_exists('curl_init')) {
                //1.1
                $results = pp_get_url($settings[PP_SETTINGS_FILE]);
                if ($results['status'] == 200) {
                    $xml = simplexml_load_string($results['content']);
                } elseif (is_user_logged_in()) {
                    return pp_error(pp__('Can\'t find XML file') . ' ' . $settings[PP_SETTINGS_FILE]);
                }
            } elseif (is_user_logged_in()) {
                return pp_error('<p>' . pp__('"allow_url_fopen" option is not enabled in the php.ini file on this server & cURL is not installed.') . '.</p>');
            }
        }
        // xml errors (admin only)
        if ($xml === false && is_user_logged_in()) {
            $err = '';
            foreach (libxml_get_errors() as $error) {
                $err .= $error->message . '(line ' . $error->line . ' in ' . $error->file . ')<br />';
            }
            return pp_error('<p>' . $err . '</p>');
        } elseif ($xml) {
            if ($xml->getName() == 'krpano') {
                $settings[PP_SETTINGS_VIEWER_NAME] = PP_VIEWER_NAME_KRPANO;
            } elseif ($xml->getName() == 'panorama') {
                $settings[PP_SETTINGS_VIEWER_NAME] = PP_VIEWER_NAME_PANO2VR;
                // pano2vr xml
                foreach ($xml->children() as $second) {
                    if ($second->getName() == 'parameters') {
                        $settings[PP_SETTINGS_VIEWER_NAME] = PP_VIEWER_NAME_FPP;
                    }
                }
                // fpp xml
            }
        } else {
            return $settings[PP_SETTINGS_ALT];
        }
    }
    // call select with settings array
    return pp_select($settings);
}