Project

General

Profile

Feature #1386 » custom-order-profile-options-3.diff

Dominic Giglio, 2012-07-21 04:30 PM

View differences:

bp-xprofile/bp-xprofile-classes.php (working copy)
737 737

  
738 738
			<div id="<?php echo $type; ?>" class="options-box" style="<?php echo $class; ?> margin-left: 15px;">
739 739
				<h4><?php _e( 'Please enter options for this Field:', 'buddypress' ); ?></h4>
740
				<p><label for="sort_order_<?php echo $type; ?>"><?php _e( 'Order By:', 'buddypress' ); ?></label>
740
				<p><label for="sort_order_<?php echo $type; ?>"><?php _e( 'Sort Order:', 'buddypress' ); ?></label>
741 741
					<select name="sort_order_<?php echo $type; ?>" id="sort_order_<?php echo $type; ?>" >
742
						<option value="default" <?php if ( 'default' == $this->order_by ) {?> selected="selected"<?php } ?> ><?php _e( 'Order Entered', 'buddypress' ); ?></option>
743
						<option value="asc" <?php if ( 'asc' == $this->order_by ) {?> selected="selected"<?php } ?>><?php _e( 'Name - Ascending', 'buddypress' ); ?></option>
744
						<option value="desc" <?php if ( 'desc' == $this->order_by ) {?> selected="selected"<?php } ?>><?php _e( 'Name - Descending', 'buddypress' ); ?></option>
742
						<option value="custom" <?php if ( 'custom' == $this->order_by ) {?> selected="selected"<?php } ?> ><?php _e( 'Custom', 'buddypress' ); ?></option>
743
						<option value="asc" <?php if ( 'asc' == $this->order_by ) {?> selected="selected"<?php } ?>><?php _e( 'Ascending', 'buddypress' ); ?></option>
744
						<option value="desc" <?php if ( 'desc' == $this->order_by ) {?> selected="selected"<?php } ?>><?php _e( 'Descending', 'buddypress' ); ?></option>
745 745
					</select>
746 746

  
747 747
				<?php if ( !$options = $this->get_children( true ) ) {
......
765 765
						if ( 'multiselectbox' == $type || 'checkbox' == $type )
766 766
							$default_name = '[' . $j . ']'; ?>
767 767

  
768
						<p><?php _e( 'Option', 'buddypress' ); ?> <?php echo $j; ?>:
769
						   <input type="text" name="<?php echo $type; ?>_option[<?php echo $j; ?>]" id="<?php echo $type; ?>_option<?php echo $j; ?>" value="<?php echo stripslashes( esc_attr( $options[$i]->name ) ); ?>" />
770
						   <input type="<?php echo $default_input; ?>" name="isDefault_<?php echo $type; ?>_option<?php echo $default_name; ?>" <?php if ( (int) $options[$i]->is_default_option ) {?> checked="checked"<?php } ?> " value="<?php echo $j; ?>" /> <?php _e( 'Default Value', 'buddypress' ); ?>
771

  
772
							<?php if ( $j != 1 && $options[$i]->id != -1 ) : ?>
773

  
774
								<a href="admin.php?page=bp-profile-setup&amp;mode=delete_option&amp;option_id=<?php echo $options[$i]->id ?>" class="ajax-option-delete" id="delete-<?php echo $options[$i]->id; ?>">[x]</a>
775

  
776
							<?php endif; ?>
777

  
768
						<p class="sortable">
769
							<span>&nbsp;&Xi;&nbsp;</span>
770
						  <input type="text" name="<?php echo $type; ?>_option[<?php echo $j; ?>]" id="<?php echo $type; ?>_option<?php echo $j; ?>" value="<?php echo stripslashes( esc_attr( $options[$i]->name ) ); ?>" />
771
						  <input type="<?php echo $default_input; ?>" name="isDefault_<?php echo $type; ?>_option<?php echo $default_name; ?>" <?php if ( (int) $options[$i]->is_default_option ) {?> checked="checked"<?php } ?> " value="<?php echo $j; ?>" />
772
						  <span><?php _e( 'Default Value', 'buddypress' ); ?></span>
773
							<a href="admin.php?page=bp-profile-setup&amp;mode=delete_option&amp;option_id=<?php echo $options[$i]->id ?>" class="ajax-option-delete" id="delete-<?php echo $options[$i]->id; ?>">[x]</a>
778 774
						</p>
779 775

  
780 776
					<?php } /* end for */ ?>
......
786 782
					if ( 'multiselectbox' == $type || 'checkbox' == $type )
787 783
						$default_name = '[1]'; ?>
788 784

  
789
					<p><?php _e( 'Option', 'buddypress' ); ?> 1: <input type="text" name="<?php echo $type; ?>_option[1]" id="<?php echo $type; ?>_option1" />
790
					<input type="<?php echo $default_input; ?>" name="isDefault_<?php echo $type; ?>_option<?php echo $default_name; ?>" id="isDefault_<?php echo $type; ?>_option" value="1" /> <?php _e( 'Default Value', 'buddypress' ); ?>
791
					<input type="hidden" name="<?php echo $type; ?>_option_number" id="<?php echo $type; ?>_option_number" value="2" />
785
					<p class="sortable">
786
						<span>&nbsp;&Xi;&nbsp;</span>
787
						<input type="text" name="<?php echo $type; ?>_option[1]" id="<?php echo $type; ?>_option1" />
788
						<input type="<?php echo $default_input; ?>" name="isDefault_<?php echo $type; ?>_option<?php echo $default_name; ?>" id="isDefault_<?php echo $type; ?>_option" value="1" />
789
						<span><?php _e( 'Default Value', 'buddypress' ); ?></span>
790
						<input type="hidden" name="<?php echo $type; ?>_option_number" id="<?php echo $type; ?>_option_number" value="2" />
791
					</p>
792 792

  
793 793
				<?php } /* end if */ ?>
794 794

  
bp-xprofile/admin/js/admin.dev.js (working copy)
3 3
	var theId     = document.getElementById(forWhat + '_option_number').value;
4 4
	var newDiv    = document.createElement('p');
5 5
	var newOption = document.createElement('input');
6
	var label     = document.createElement( 'label' );
7
	var txt       = document.createTextNode( "Option " + theId + ": " );
6
	var span     = document.createElement( 'span' );
7
	var txt       = document.createTextNode( "\u00A0\u039E\u00A0" );
8 8
	var isDefault = document.createElement( 'input' );
9
	var label1    = document.createElement( 'label' );
9
	var span1    = document.createElement( 'span' );
10 10
	var txt1      = document.createTextNode( " Default Value " );
11 11

  
12 12
	newDiv.setAttribute('id', forWhat + '_div' + theId);
13
	newDiv.setAttribute('class', 'sortable');
13 14
	
14 15
	newOption.setAttribute( 'type', 'text' );
15 16
	newOption.setAttribute( 'name', forWhat + '_option[' + theId + ']' );
16 17
	newOption.setAttribute( 'id', forWhat + '_option' + theId );
17 18

  
18
	label.setAttribute( 'for', forWhat + '_option' + theId );
19
	label.appendChild( txt );
19
	span.appendChild( txt );
20 20

  
21 21
	if ( forWhat == 'checkbox' || forWhat == 'multiselectbox' ) {
22 22
		isDefault.setAttribute( 'type', 'checkbox' );
......
28 28

  
29 29
	isDefault.setAttribute( 'value', theId );
30 30

  
31
	label1.appendChild( txt1 );
32
	label1.setAttribute( 'for', 'isDefault_' + forWhat + '_option[]' );
31
	span1.appendChild( txt1 );
33 32

  
34 33
	var toDelete     = document.createElement( 'a' );
35 34
	var toDeleteText = document.createTextNode( '[x]' );
......
38 37
	toDelete.setAttribute( 'class', 'delete' );
39 38
	toDelete.appendChild( toDeleteText );
40 39

  
41
	newDiv.appendChild( label );
40
	newDiv.appendChild( span );
42 41
	newDiv.appendChild( newOption );
43 42
	newDiv.appendChild( document.createTextNode( " " ) );
44 43
	newDiv.appendChild( isDefault );
45
	newDiv.appendChild( label1 );
44
	newDiv.appendChild( span1 );
46 45
	newDiv.appendChild( toDelete );
47 46
	holder.appendChild( newDiv );
48 47

  
48
	// re-initialize the sorable ui
49
	enableSortableFieldOptions( forWhat );
49 50

  
50 51
	theId++;
51 52

  
......
85 86
	return ui;
86 87
};
87 88

  
88
// Set up deleting options ajax
89
function enableSortableFieldOptions( forWhat ) {
90
	if ( jQuery( '#' + forWhat + ' p.sortable' ).length > 1 ) {
91
		jQuery( '.options-box' ).sortable( {
92
			items: 'p.sortable',
93
			tolerance: 'pointer',
94
			axis: 'y',
95
			handle: 'span'
96
		});
97

  
98
		jQuery( '.sortable span' ).css( 'cursor', 'move' );
99
	}
100
}
101

  
102
function destroySortableFieldOptions() {
103
	jQuery( '.options-box' ).sortable( 'destroy' );
104
	jQuery( '.sortable span' ).css( 'cursor', 'default' );
105
}
106

  
89 107
jQuery( document ).ready( function() {
90 108

  
109
	// Set up deleting options ajax
91 110
	jQuery( 'a.ajax-option-delete' ).click(
92 111
		function() {
93 112
			var theId = this.id.split( '-' );
......
103 122
		}
104 123
	);
105 124

  
125
	// 
126
	jQuery( '[id^="sort_order_"]' ).change(function() {
127
		if ( jQuery( this ).val() != 'custom' ) {
128
			destroySortableFieldOptions();
129
		} else {
130
			enableSortableFieldOptions( jQuery('#fieldtype :selected').val() );
131
		}
132
	});
133

  
106 134
	// Show object if JS is enabled
107 135
	jQuery( 'ul#field-group-tabs' ).show();
108 136

  
......
150 178
	// Change cursor to move if JS is enabled
151 179
	.css( 'cursor', 'move' );
152 180

  
181
	// Allow reordering of field options
182
	enableSortableFieldOptions( jQuery('#fieldtype :selected').val() );
183

  
153 184
	// tabs init with a custom tab template and an "add" callback filling in the content
154 185
	var $tab_items;
155 186
	var $tabs = jQuery( '#tabs' ).tabs();
(3-3/3)