File: /home/khakzad/public_html/milad/wp-content/plugins/fancybox-for-wordpress/fancybox.php
<?php
/*
Plugin Name: FancyBox for WordPress
Plugin URI: http://plugins.josepardilla.com/fancybox-for-wordpress/
Description: Integrates <a href="http://fancybox.net/">FancyBox</a> by <a href="http://klade.lv/">Janis Skarnelis</a> into WordPress.
Version: 3.0.2
Author: José Pardilla
Author URI: http://josepardilla.com/
* FancyBox is Copyright (c) 2008 - 2010 Janis Skarnelis
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/
/**
* Constants
*/
define( 'FBFW_VERSION', '3.0.2' );
define( 'FBFW_PATH', plugin_dir_path(__FILE__) );
define( 'FBFW_URL', plugin_dir_url(__FILE__) );
/**
* Store default settings in an array
*/
function mfbfw_defaults() {
$defaults_array = array(
// Appearance
'border' => '',
'borderColor' => '#BBBBBB',
'showCloseButton' => 'on',
'closeHorPos' => 'right',
'closeVerPos' => 'top',
'paddingColor' => '#FFFFFF',
'padding' => '10',
'overlayShow' => 'on',
'overlayColor' => '#666666',
'overlayOpacity' => '0.3',
'titleShow' => 'on',
'titlePosition' => 'inside',
'titleColor' => '#333333',
'showNavArrows' => 'on',
// Animations
'zoomOpacity' => 'on',
'zoomSpeedIn' => '500',
'zoomSpeedOut' => '500',
'zoomSpeedChange' => '300',
'transitionIn' => 'fade',
'transitionOut' => 'fade',
'easing' => '',
'easingIn' => 'easeOutBack',
'easingOut' => 'easeInBack',
'easingChange' => 'easeInOutQuart',
// Behaviour
'imageScale' => 'on',
'centerOnScroll' => 'on',
'hideOnContentClick' => '',
'hideOnOverlayClick' => 'on',
'enableEscapeButton' => 'on',
'cyclic' => '',
'mouseWheel' => '',
// Gallery Type
'galleryType' => 'all',
'customExpression' => 'jQuery(thumbnails).addClass("fancybox").attr("rel","fancybox").getTitle();',
// Other
'autoDimensions' => 'on',
'frameWidth' => '560',
'frameHeight' => '340',
'loadAtFooter' => '',
'callbackEnable' => '',
'callbackOnStart' => 'function() { alert("Start!"); }',
'callbackOnCancel' => 'function() { alert("Cancel!"); }',
'callbackOnComplete' => 'function() { alert("Complete!"); }',
'callbackOnCleanup' => 'function() { alert("CleanUp!"); }',
'callbackOnClose' => 'function() { alert("Close!"); }',
// Troubleshooting
'nojQuery' => '',
// Extra Calls
'extraCallsEnable' => '',
'extraCalls' => '',
// Uninstall
'uninstall' => ''
);
return $defaults_array;
}
/**
* When plugin is installed, write default settings and update version
*/
function mfbfw_install() {
$defaults_array = mfbfw_defaults();
add_option( 'mfbfw', $defaults_array );
update_option( 'mfbfw_active_version', FBFW_VERSION );
}
register_activation_hook( __FILE__, 'mfbfw_install' );
/**
* If requested, when plugin is deactivated, remove settings
*/
function mfbfw_uninstall() {
$settings = get_option( 'mfbfw' );
if ( isset($settings['uninstall']) && $settings['uninstall'] ) {
delete_option( 'mfbfw' );
delete_option( 'mfbfw_active_version' );
}
}
register_deactivation_hook( __FILE__, 'mfbfw_uninstall' );
/**
* Here we load FancyBox JS with jQuery and jQuery.easing if necessary
*/
function mfbfw_register_scripts() {
$settings = get_option( 'mfbfw' );
// Check if script should be loaded in footer
if ( isset($settings['loadAtFooter']) && $settings['loadAtFooter'] ) {
$footer = true;
} else {
$footer = false;
}
// Check if plugin should not call jQuery script (for troubleshooting only)
if ( isset($settings['nojQuery']) && $settings['nojQuery'] ) {
$jquery = false;
} else {
$jquery = array('jquery');
}
// Register scripts
wp_register_script('fancybox', FBFW_URL . 'fancybox/jquery.fancybox.js', $jquery, '1.3.4', $footer ); // Main Fancybox script
wp_register_script('jqueryeasing', FBFW_URL . 'js/jquery.easing.1.3.min.js', false, '1.3', $footer ); // Easing animations script
wp_register_script('jquerymousewheel', FBFW_URL . 'js/jquery.mousewheel.3.0.4.pack.js', false, '3.0.4', $footer ); // Mouse wheel support script
}
add_action( 'init', 'mfbfw_register_scripts' );
function mfbfw_scripts() {
$settings = get_option( 'mfbfw' );
wp_enqueue_script( 'fancybox' ); // Load fancybox
if ( isset($settings['easing']) && $settings['easing'] ) {
wp_enqueue_script( 'jqueryeasing' ); // Load easing javascript file if required
}
if ( isset($settings['mouseWheel']) && $settings['mouseWheel'] ) {
wp_enqueue_script( 'jquerymousewheel' ); // Load mouse wheel javascript file if required
}
}
add_action( 'wp_enqueue_scripts', 'mfbfw_scripts' ); // Load Scripts
/**
* Link to FancyBox stylesheet and apply some custom styles
*/
function mfbfw_styles() {
$settings = get_option( 'mfbfw' );
wp_enqueue_style( 'fancybox', FBFW_URL . 'fancybox/fancybox.css' );
?>
<style type="text/css">
#fancybox-close{<?php echo $settings['closeHorPos']; ?>:-15px;<?php echo $settings['closeVerPos']; ?>:-15px}
<?php if ( isset($settings['paddingColor']) && $settings['paddingColor'] ) { echo "div#fancybox-content{border-color:" . $settings['paddingColor'] . "}\n"; } ?>
<?php if ( isset($settings['paddingColor']) && $settings['paddingColor'] && $settings['titlePosition'] == "inside" ) { echo "div#fancybox-title{background-color:" . $settings['paddingColor'] . "}\n"; } ?>
div#fancybox-outer{background-color:<?php echo $settings['paddingColor']; if ( isset($settings['border']) && $settings['border'] ) { echo "; border:1px solid " . $settings['borderColor']; } echo "}\n"; ?>
<?php if ( isset($settings['titleColor']) && $settings['titleColor'] && $settings['titlePosition'] == "inside" ) { echo "div#fancybox-title-inside{color:" . $settings['titleColor'] . "}\n"; } ?>
</style>
<?php
}
add_action( 'wp_enqueue_scripts', 'mfbfw_styles' );
/**
* Load FancyBox with the settings set
*/
function mfbfw_init() {
$settings = get_option( 'mfbfw' );
$version = get_option( 'mfbfw_active_version' );
echo "\n<!-- Fancybox for WordPress v" . $version . ' -->'; ?>
<script type="text/javascript">
jQuery(function(){
jQuery.fn.getTitle = function() { // Copy the title of every IMG tag and add it to its parent A so that fancybox can show titles
var arr = jQuery("a.fancybox");
jQuery.each(arr, function() {
var title = jQuery(this).children("img").attr("title");
jQuery(this).attr('title',title);
})
}
// Supported file extensions
var thumbnails = jQuery("a:has(img)").not(".nolightbox").filter( function() { return /\.(jpe?g|png|gif|bmp)$/i.test(jQuery(this).attr('href')) });
<?php if ( $settings['galleryType'] == 'post' ) {
// Gallery type BY POST and we are on post or page (so only one post or page is visible)
if ( is_single() | is_page() ) {
echo 'thumbnails.addClass("fancybox").attr("rel","fancybox").getTitle();';
}
// Gallery type BY POST, but we are neither on post or page, so we make a different rel attribute on each post
else {
echo 'var posts = jQuery(".post");
posts.each(function() {
jQuery(this).find(thumbnails).addClass("fancybox").attr("rel","fancybox"+posts.index(this)).getTitle()
});';
}
}
// Gallery type ALL
elseif ( $settings['galleryType'] == 'all' ) {
echo 'thumbnails.addClass("fancybox").attr("rel","fancybox").getTitle();';
}
// Gallery type NONE
elseif ( $settings['galleryType'] == 'none' ) {
echo 'thumbnails.addClass("fancybox").getTitle();';
}
// Else, gallery type is custom, so we just print the custom expression
else {
echo $settings['customExpression'];
}
// Now we call fancybox and apply it on any link with a rel atribute that starts with "fancybox", with the options set on the admin panel
?>
jQuery("a.fancybox").fancybox({
'cyclic': <?php if ( isset($settings['cyclic']) && $settings['cyclic'] ) { echo "true"; } else { echo "false"; } ?>,
'autoScale': <?php if ( isset($settings['imageScale']) && $settings['imageScale'] ) { echo "true"; } else { echo "false"; } ?>,
'padding': <?php echo $settings['padding']; ?>,
'opacity': <?php if ( isset($settings['zoomOpacity']) && $settings['zoomOpacity'] ) { echo "true"; } else { echo "false"; } ?>,
'speedIn': <?php echo $settings['zoomSpeedIn']; ?>,
'speedOut': <?php echo $settings['zoomSpeedOut']; ?>,
'changeSpeed': <?php echo $settings['zoomSpeedChange']; ?>,
'overlayShow': <?php if ( isset($settings['overlayShow']) && $settings['overlayShow'] ) { echo "true"; } else { echo "false"; } ?>,
'overlayOpacity': <?php echo '"' . $settings['overlayOpacity'] . '"'; ?>,
'overlayColor': <?php echo '"' . $settings['overlayColor'] . '"'; ?>,
'titleShow': <?php if ( isset($settings['titleShow']) && $settings['titleShow'] ) { echo "true"; } else { echo "false"; } ?>,
'titlePosition': '<?php echo $settings['titlePosition']; ?>',
'enableEscapeButton': <?php if ( isset($settings['enableEscapeButton']) && $settings['enableEscapeButton'] ) { echo "true"; } else { echo "false"; } ?>,
'showCloseButton': <?php if ( isset($settings['showCloseButton']) && $settings['showCloseButton'] ) { echo "true"; } else { echo "false"; } ?>,
'showNavArrows': <?php if ( isset($settings['showNavArrows']) && $settings['showNavArrows'] ) { echo "true"; } else { echo "false"; } ?>,
'hideOnOverlayClick': <?php if ( isset($settings['hideOnOverlayClick']) && $settings['hideOnOverlayClick'] ) { echo "true"; } else { echo "false"; } ?>,
'hideOnContentClick': <?php if ( isset($settings['hideOnContentClick']) && $settings['hideOnContentClick'] ) { echo "true"; } else { echo "false"; } ?>,
'width': <?php echo $settings['frameWidth']; ?>,
'height': <?php echo $settings['frameHeight']; ?>,
'transitionIn': <?php echo '"' . $settings['transitionIn'] . '"'; ?>,
'transitionOut': <?php echo '"' . $settings['transitionOut'] . '"'; ?>,
<?php if ( isset($settings['callbackEnable'], $settings['callbackOnStart']) && $settings['callbackEnable'] && $settings['callbackOnStart'] ) echo "\t'onStart': ". $settings['callbackOnStart'] .","."\n"; ?>
<?php if ( isset($settings['callbackEnable'], $settings['callbackOnCancel']) && $settings['callbackEnable'] && $settings['callbackOnCancel'] ) echo "\t'onCancel': ". $settings['callbackOnCancel'] .","."\n"; ?>
<?php if ( isset($settings['callbackEnable'], $settings['callbackOnCleanup']) && $settings['callbackEnable'] && $settings['callbackOnCleanup'] ) echo "\t'onCleanup': ". $settings['callbackOnCleanup'] .","."\n"; ?>
<?php if ( isset($settings['callbackEnable'], $settings['callbackOnComplete']) && $settings['callbackEnable'] && $settings['callbackOnComplete'] ) echo "\t'onComplete': ". $settings['callbackOnComplete'] .","."\n"; ?>
<?php if ( isset($settings['callbackEnable'], $settings['callbackOnClose']) && $settings['callbackEnable'] && $settings['callbackOnClose'] ) echo "\t'onClosed': ". $settings['callbackOnClose'] .","."\n"; ?>
'centerOnScroll': <?php if ( isset($settings['centerOnScroll']) && $settings['centerOnScroll'] ) { echo "true"; } else { echo "false"; } ?><?php if ( isset($settings['easing']) && $settings['easing'] ) { ?>,
'easingIn': <?php echo '"' . $settings['easingIn'] . '"'; ?>,
'easingOut': <?php echo '"' . $settings['easingOut'] . '"'; ?>,
'easingChange': <?php echo '"' . $settings['easingChange'] . '"';
} ?>
});
<?php if ( isset($settings['extraCallsEnable']) && $settings['extraCallsEnable'] ) { echo $settings['extraCalls']; echo "\n"; } ?>
})
</script>
<?php echo "<!-- END Fancybox for WordPress -->\n";
}
add_action( 'wp_head', 'mfbfw_init' );
/**
* Load text domain
*/
function mfbfw_textdomain() {
if ( function_exists('load_plugin_textdomain') ) {
load_plugin_textdomain( 'mfbfw', FBFW_URL . 'languages', 'fancybox-for-wordpress/languages' );
}
}
add_action( 'init', 'mfbfw_textdomain' );
/**
* Register Options
*/
function mfbfw_admin_options() {
$settings = get_option( 'mfbfw' );
if ( isset($_GET['page']) && $_GET['page'] == 'fancybox-for-wordpress' ) {
if ( isset($_REQUEST['action']) && 'update' == $_REQUEST['action'] ) {
$settings = stripslashes_deep( $_POST['mfbfw'] );
$settings = array_map( 'convert_chars', $settings );
update_option( 'mfbfw', $settings );
wp_safe_redirect( add_query_arg('updated', 'true') );
die;
} else if ( isset($_REQUEST['action']) && 'reset' == $_REQUEST['action'] ) {
$defaults_array = mfbfw_defaults(); // Store defaults in an array
update_option( 'mfbfw', $defaults_array ); // Write defaults to database
wp_safe_redirect( add_query_arg('reset', 'true') );
die;
}
}
register_setting( 'mfbfw-options', 'mfbfw' );
}
add_action( 'admin_init', 'mfbfw_admin_options' );
/**
* Admin options page
*/
function mfbfw_admin_menu() {
require FBFW_PATH . 'admin.php';
$mfbfwadmin = add_submenu_page( 'options-general.php', 'Fancybox for WordPress Options', 'Fancybox for WP', 'manage_options', 'fancybox-for-wordpress', 'mfbfw_options_page' );
add_action( 'admin_print_styles-' . $mfbfwadmin, 'mfbfw_admin_styles' );
add_action( 'admin_print_scripts-' . $mfbfwadmin, 'mfbfw_admin_scripts' );
}
add_action('admin_menu', 'mfbfw_admin_menu');
/**
* Load Admin CSS & JS (called in mfbfw_admin_menu())
*/
function mfbfw_admin_styles() {
wp_enqueue_style( 'fancybox-admin', FBFW_URL . 'css/fancybox-admin.css' ); // Load custom CSS for Admin Page
wp_enqueue_style( 'jquery-ui', FBFW_URL . 'css/jquery-ui.css' ); // Load jQuery UI Tabs CSS for Admin Page
}
function mfbfw_admin_scripts() {
wp_enqueue_script( 'jquery-ui-tabs', array('jquery-ui-core') ); // Load jQuery UI Tabs JS for Admin Page
wp_enqueue_script( 'fancybox-admin', FBFW_URL . 'js/admin.js', array('jquery') ); // Load specific JS for Admin Page
}
/**
* Settings Button on Plugins Panel
*/
function mfbfw_plugin_action_links($links, $file) {
static $this_plugin;
if ( ! $this_plugin ) $this_plugin = plugin_basename( __FILE__ );
if ( $file == $this_plugin ){
$settings_link = '<a href="options-general.php?page=fancybox-for-wordpress">' . __( 'Settings', 'mfbfw' ) . '</a>';
array_unshift( $links, $settings_link );
}
return $links;
}
add_filter( 'plugin_action_links', 'mfbfw_plugin_action_links', 10, 2 );