Ejemplo n.º 1
0
/**
 * Enqueues the Rendez Vous editor scripts, css, settings and strings
 *
 * Inspired by wp_enqueue_media()
 *
 * @package Rendez Vous
 * @subpackage Editor
 * @since Rendez Vous (1.0.0)
 */
function rendez_vous_enqueue_editor($args = array())
{
    // Enqueue me just once per page, please.
    if (did_action('rendez_vous_enqueue_editor')) {
        return;
    }
    $defaults = array('post' => null, 'user_id' => bp_loggedin_user_id(), 'callback' => null, 'group_id' => null);
    $args = wp_parse_args($args, $defaults);
    // We're going to pass the old thickbox media tabs to `media_upload_tabs`
    // to ensure plugins will work. We will then unset those tabs.
    $tabs = array('type' => '', 'type_url' => '', 'gallery' => '', 'library' => '');
    $tabs = apply_filters('media_upload_tabs', $tabs);
    unset($tabs['type'], $tabs['type_url'], $tabs['gallery'], $tabs['library']);
    $props = array('link' => bp_get_option('image_default_link_type'), 'align' => bp_get_option('image_default_align'), 'size' => bp_get_option('image_default_size'));
    $settings = array('tabs' => $tabs, 'tabUrl' => esc_url(add_query_arg(array('chromeless' => true), admin_url('admin-ajax.php'))), 'mimeTypes' => false, 'captions' => !apply_filters('disable_captions', ''), 'nonce' => array('sendToEditor' => wp_create_nonce('media-send-to-editor'), 'rendezvous' => wp_create_nonce('rendez-vous-editor')), 'post' => array('id' => 0), 'defaultProps' => $props, 'embedExts' => false);
    $post = $hier = null;
    $settings['user'] = intval($args['user_id']);
    $settings['group_id'] = intval($args['group_id']);
    if (!empty($args['callback'])) {
        $settings['callback'] = esc_url($args['callback']);
    }
    // Do we have member types ?
    $rendez_vous_member_types = array();
    $member_types = bp_get_member_types(array(), 'objects');
    if (!empty($member_types) && is_array($member_types)) {
        $rendez_vous_member_types['rdvMemberTypesAll'] = esc_html__('All member types', 'rendez-vous');
        foreach ($member_types as $type_key => $type) {
            $rendez_vous_member_types['rdvMemberTypes'][] = array('type' => $type_key, 'text' => esc_html($type->labels['singular_name']));
        }
    }
    if (!empty($rendez_vous_member_types)) {
        $settings = array_merge($settings, $rendez_vous_member_types);
    }
    $strings = array('url' => __('URL', 'rendez-vous'), 'addMedia' => __('Add Media', 'rendez-vous'), 'search' => __('Search', 'rendez-vous'), 'select' => __('Select', 'rendez-vous'), 'cancel' => __('Cancel', 'rendez-vous'), 'selected' => __('%d selected', 'rendez-vous'), 'dragInfo' => __('Drag and drop to reorder images.', 'rendez-vous'), 'uploadFilesTitle' => __('Upload Files', 'rendez-vous'), 'uploadImagesTitle' => __('Upload Images', 'rendez-vous'), 'mediaLibraryTitle' => __('Media Library', 'rendez-vous'), 'insertMediaTitle' => __('Insert Media', 'rendez-vous'), 'createNewGallery' => __('Create a new gallery', 'rendez-vous'), 'returnToLibrary' => __('← Return to library', 'rendez-vous'), 'allMediaItems' => __('All media items', 'rendez-vous'), 'noItemsFound' => __('No items found.', 'rendez-vous'), 'insertIntoPost' => $hier ? __('Insert into page', 'rendez-vous') : __('Insert into post', 'rendez-vous'), 'uploadedToThisPost' => $hier ? __('Uploaded to this page', 'rendez-vous') : __('Uploaded to this post', 'rendez-vous'), 'warnDelete' => __("You are about to permanently delete this item.\n  'Cancel' to stop, 'OK' to delete.", 'rendez-vous'), 'insertFromUrlTitle' => __('Insert from URL', 'rendez-vous'), 'setFeaturedImageTitle' => __('Set Featured Image', 'rendez-vous'), 'setFeaturedImage' => __('Set featured image', 'rendez-vous'), 'createGalleryTitle' => __('Create Gallery', 'rendez-vous'), 'editGalleryTitle' => __('Edit Gallery', 'rendez-vous'), 'cancelGalleryTitle' => __('← Cancel Gallery', 'rendez-vous'), 'insertGallery' => __('Insert gallery', 'rendez-vous'), 'updateGallery' => __('Update gallery', 'rendez-vous'), 'addToGallery' => __('Add to gallery', 'rendez-vous'), 'addToGalleryTitle' => __('Add to Gallery', 'rendez-vous'), 'reverseOrder' => __('Reverse order', 'rendez-vous'));
    $rendez_vous_strings = apply_filters('rendez_vous_view_strings', array('rdvMainTitle' => _x('Rendez-vous', 'RendezVous editor main title', 'rendez-vous'), 'whatTab' => _x('What?', 'RendezVous editor tab what name', 'rendez-vous'), 'whenTab' => _x('When?', 'RendezVous editor tab when name', 'rendez-vous'), 'whoTab' => _x('Who?', 'RendezVous editor tab who name', 'rendez-vous'), 'rdvInsertBtn' => __('Add to invites', 'rendez-vous'), 'rdvNextBtn' => __('Next', 'rendez-vous'), 'rdvPrevBtn' => __('Prev', 'rendez-vous'), 'rdvSrcPlaceHolder' => __('Search', 'rendez-vous'), 'invited' => __('%d to invite', 'rendez-vous'), 'removeInviteBtn' => __('Remove Invite', 'rendez-vous'), 'saveButton' => __('Save Rendez-Vous', 'rendez-vous')));
    // Use the filter at your own risks!
    $rendez_vous_fields = array('what' => apply_filters('rendez_vous_editor_core_fields', array(array('id' => 'title', 'order' => 0, 'type' => 'text', 'placeholder' => esc_html__('What is this about ?', 'rendez-vous'), 'label' => esc_html__('Title', 'rendez-vous'), 'value' => '', 'tab' => 'what', 'class' => 'required'), array('id' => 'venue', 'order' => 10, 'type' => 'text', 'placeholder' => esc_html__('Where ?', 'rendez-vous'), 'label' => esc_html__('Venue', 'rendez-vous'), 'value' => '', 'tab' => 'what', 'class' => ''), array('id' => 'description', 'order' => 20, 'type' => 'textarea', 'placeholder' => esc_html__('Some details about this rendez-vous ?', 'rendez-vous'), 'label' => esc_html__('Description', 'rendez-vous'), 'value' => '', 'tab' => 'what', 'class' => ''), array('id' => 'duration', 'order' => 30, 'type' => 'duree', 'placeholder' => '00:00', 'label' => esc_html__('Duration', 'rendez-vous'), 'value' => '', 'tab' => 'what', 'class' => 'required'), array('id' => 'privacy', 'order' => 40, 'type' => 'checkbox', 'placeholder' => esc_html__('Restrict to the selected members of the Who? tab', 'rendez-vous'), 'label' => esc_html__('Access', 'rendez-vous'), 'value' => '0', 'tab' => 'what', 'class' => ''), array('id' => 'utcoffset', 'order' => 50, 'type' => 'timezone', 'placeholder' => '', 'label' => '', 'value' => '', 'tab' => 'what', 'class' => ''))));
    // Do we have rendez-vous types ?
    if (rendez_vous_has_types()) {
        $rendez_vous_types_choices = array();
        $rendez_vous_types_placeholder = array();
        foreach (rendez_vous()->types as $rendez_vous_type) {
            $rendez_vous_types_choices[] = $rendez_vous_type->term_id;
            $rendez_vous_types_placeholder[] = $rendez_vous_type->name;
        }
        // Set the rendez-voys types field arg
        $rendez_vous_types_args = array('id' => 'type', 'order' => 15, 'type' => 'selectbox', 'placeholder' => $rendez_vous_types_placeholder, 'label' => esc_html__('Type', 'rendez-vous'), 'value' => '', 'tab' => 'what', 'class' => '', 'choices' => $rendez_vous_types_choices);
        // Merge with other rendez-vous fields
        $rendez_vous_fields['what'] = array_merge($rendez_vous_fields['what'], array($rendez_vous_types_args));
    }
    /**
     * Use 'rendez_vous_editor_extra_fields' to add custom fields, you should be able
     * to save them using the 'rendez_vous_after_saved' action.
     */
    $rendez_vous_extra_fields = apply_filters('rendez_vous_editor_extra_fields', array());
    $rendez_vous_add_fields = array();
    if (!empty($rendez_vous_extra_fields) && is_array($rendez_vous_extra_fields)) {
        // Some id are restricted to the plugin usage
        $restricted = array('title' => true, 'venue' => true, 'type' => true, 'description' => true, 'duration' => true, 'privacy' => true, 'utcoffset' => true);
        foreach ($rendez_vous_extra_fields as $rendez_vous_extra_field) {
            // The id is required and some ids are restricted.
            if (empty($rendez_vous_extra_field['id']) || !empty($restricted[$rendez_vous_extra_field['id']])) {
                continue;
            }
            // Make sure all needed arguments have default values
            $rendez_vous_add_fields[] = wp_parse_args($rendez_vous_extra_field, array('id' => '', 'order' => 60, 'type' => 'text', 'placeholder' => '', 'label' => '', 'value' => '', 'tab' => 'what', 'class' => ''));
        }
    }
    if (!empty($rendez_vous_add_fields)) {
        $rendez_vous_fields['what'] = array_merge($rendez_vous_fields['what'], $rendez_vous_add_fields);
    }
    // Sort by the order key
    $rendez_vous_fields['what'] = bp_sort_by_key($rendez_vous_fields['what'], 'order', 'num');
    $rendez_vous_date_strings = array('daynames' => array(esc_html__('Sunday', 'rendez-vous'), esc_html__('Monday', 'rendez-vous'), esc_html__('Tuesday', 'rendez-vous'), esc_html__('Wednesday', 'rendez-vous'), esc_html__('Thursday', 'rendez-vous'), esc_html__('Friday', 'rendez-vous'), esc_html__('Saturday', 'rendez-vous')), 'daynamesmin' => array(esc_html__('Su', 'rendez-vous'), esc_html__('Mo', 'rendez-vous'), esc_html__('Tu', 'rendez-vous'), esc_html__('We', 'rendez-vous'), esc_html__('Th', 'rendez-vous'), esc_html__('Fr', 'rendez-vous'), esc_html__('Sa', 'rendez-vous')), 'monthnames' => array(esc_html__('January', 'rendez-vous'), esc_html__('February', 'rendez-vous'), esc_html__('March', 'rendez-vous'), esc_html__('April', 'rendez-vous'), esc_html__('May', 'rendez-vous'), esc_html__('June', 'rendez-vous'), esc_html__('July', 'rendez-vous'), esc_html__('August', 'rendez-vous'), esc_html__('September', 'rendez-vous'), esc_html__('October', 'rendez-vous'), esc_html__('November', 'rendez-vous'), esc_html__('December', 'rendez-vous')), 'format' => _x('mm/dd/yy', 'rendez-vous date format', 'rendez-vous'), 'firstday' => intval(bp_get_option('start_of_week', 0)), 'alert' => esc_html__('You already selected this date', 'rendez-vous'));
    $settings = apply_filters('media_view_settings', $settings, $post);
    $strings = apply_filters('media_view_strings', $strings, $post);
    $strings = array_merge($strings, array('rendez_vous_strings' => $rendez_vous_strings, 'rendez_vous_fields' => $rendez_vous_fields, 'rendez_vous_date_strings' => $rendez_vous_date_strings));
    $strings['settings'] = $settings;
    wp_localize_script('rendez-vous-media-views', '_wpMediaViewsL10n', $strings);
    wp_enqueue_script('rendez-vous-modal');
    wp_enqueue_style('rendez-vous-modal-style');
    rendez_vous_plupload_settings();
    require_once ABSPATH . WPINC . '/media-template.php';
    add_action('admin_footer', 'wp_print_media_templates');
    add_action('wp_footer', 'wp_print_media_templates');
    do_action('rendez_vous_enqueue_editor');
}
Ejemplo n.º 2
0
/**
 * Check if the current Rendez Vous has a type.
 *
 * @since Rendez Vous (1.2.0)
 */
function rendez_vous_single_has_type()
{
    return (bool) apply_filters('rendez_vous_single_has_type', rendez_vous_has_types(rendez_vous()->item), rendez_vous()->item);
}
Ejemplo n.º 3
0
/**
 * Edit screen content
 *
 * @package Rendez Vous
 * @subpackage Parts
 *
 * @since Rendez Vous (1.0.0)
 */
function rendez_vous_edit_content()
{
    ?>
	<form action="<?php 
    echo esc_url(rendez_vous_single_the_form_action());
    ?>
" method="post" id="rendez-vous-edit-form" class="standard-form">
		<p>
			<label for="rendez-vous-edit-title"><?php 
    esc_html_e('Title', 'rendez-vous');
    ?>
</label>
			<input type="text" name="_rendez_vous_edit[title]" id="rendez-vous-edit-title" value="<?php 
    rendez_vous_single_the_title();
    ?>
"/>
		</p>
		<p>
			<label for="rendez-vous-edit-description"><?php 
    esc_html_e('Description', 'rendez-vous');
    ?>
</label>
			<textarea name="_rendez_vous_edit[description]" id="rendez-vous-edit-description"><?php 
    rendez_vous_single_the_description();
    ?>
</textarea>
		</p>
		<p>
			<label for="rendez-vous-edit-venue"><?php 
    esc_html_e('Venue', 'rendez-vous');
    ?>
</label>
			<input type="text" name="_rendez_vous_edit[venue]" id="rendez-vous-edit-venue" value="<?php 
    rendez_vous_single_the_venue();
    ?>
"/>
		</p>

		<?php 
    if (rendez_vous_has_types()) {
        ?>

			<label for="rendez-vous-single-type"><?php 
        esc_html_e('Type', 'rendez-vous');
        ?>
</label>
			<div id="rendez-vous-single-type">

				<?php 
        rendez_vous_single_edit_the_type();
        ?>

			</div>

		<?php 
    }
    ?>

		<p>
			<label for="rendez-vous-edit-duration"><?php 
    esc_html_e('Duration', 'rendez-vous');
    ?>
</label>
			<input type="text" placeholder="00:00" name="_rendez_vous_edit[duration]" id="rendez-vous-edit-duration" value="<?php 
    rendez_vous_single_the_duration();
    ?>
" class="rdv-duree"/>
		</p>
		<p>
			<label for="rendez-vous-edit-status"><?php 
    esc_html_e('Restrict this rendez-vous to the selected attendees', 'rendez-vous');
    ?>
				<input type="checkbox" name="_rendez_vous_edit[privacy]" id="rendez-vous-edit-privacy" <?php 
    rendez_vous_single_the_privacy();
    ?>
 value="1">
			</label>
		</p>

		<?php 
    do_action('rendez_vous_edit_form_before_dates');
    ?>

		<hr/>

		<h4><?php 
    esc_html_e('Attendees', 'rendez-vous');
    ?>
</h4>

		<?php 
    rendez_vous_single_the_dates('edit');
    ?>

		<?php 
    do_action('rendez_vous_edit_form_after_dates');
    ?>

		<?php 
    if (rendez_vous_single_can_report()) {
        ?>

			<p>
				<label for="rendez-vous-edit-report"><?php 
        esc_html_e('Notes / Report', 'rendez-vous');
        ?>
</label>
				<div class="rendez-vous-report-wrapper">
					<?php 
        rendez_vous_single_edit_report();
        ?>
				</div>
			</p>

		<?php 
    }
    ?>

		<hr/>

		<p>
			<label for="rendez-vous-custom-message"><?php 
    esc_html_e('Send a custom message to attendees (restricted to once per day).', 'rendez-vous');
    ?>
</label>
			<textarea name="_rendez_vous_edit[message]" id="rendez-vous-custom-message"></textarea>
		</p>

		<input type="hidden" value="<?php 
    rendez_vous_single_the_id();
    ?>
" name="_rendez_vous_edit[id]"/>
		<input type="hidden" value="<?php 
    rendez_vous_single_the_action('edit');
    ?>
" name="_rendez_vous_edit[action]"/>
		<?php 
    wp_nonce_field('rendez_vous_update');
    ?>

		<?php 
    rendez_vous_single_the_submit('edit');
    ?>
	</form>
	<?php 
}