GravityView  2.10.1
The best, easiest way to display Gravity Forms entries on your website.
class-edit-entry-admin.php
Go to the documentation of this file.
1 <?php
2 /**
3  * GravityView Edit Entry - Admin logic
4  *
5  * @package GravityView
6  * @license GPL2+
7  * @author GravityView <[email protected]>
8  * @link http://gravityview.co
9  * @copyright Copyright 2014, Katz Web Services, Inc.
10  */
11 
12 if ( ! defined( 'WPINC' ) ) {
13  die;
14 }
15 
16 
18 
19  protected $loader;
20 
22  $this->loader = $loader;
23  }
24 
25  function load() {
26 
27  if( !is_admin() ) {
28  return;
29  }
30 
31  // Add Edit Link as a default field, outside those set in the Gravity Form form
32  add_filter( 'gravityview_entry_default_fields', array( $this, 'add_default_field' ), 10, 3 );
33 
34  // For the Edit Entry Link, you don't want visible to all users.
35  add_filter( 'gravityview_field_visibility_caps', array( $this, 'modify_visibility_caps' ), 10, 5 );
36 
37  // Modify the field options based on the name of the field type
38  add_filter( 'gravityview_template_edit_link_options', array( $this, 'edit_link_field_options' ), 10, 5 );
39 
40  // add tooltips
41  add_filter( 'gravityview/metaboxes/tooltips', array( $this, 'tooltips') );
42 
43  // custom fields' options for zone EDIT
44  add_filter( 'gravityview_template_field_options', array( $this, 'field_options' ), 10, 6 );
45 
46  // Add Edit Entry settings to View Settings
47  add_action( 'gravityview/metaboxes/edit_entry', array( $this, 'view_settings_metabox' ) );
48  }
49 
50  /**
51  * Render Edit Entry View metabox settings
52  *
53  * @since 2.9
54  *
55  * @param $current_settings
56  *
57  * @return void
58  */
60 
62 
64 
66 
68 
70  }
71 
72  /**
73  * Add Edit Link as a default field, outside those set in the Gravity Form form
74  * @param array $entry_default_fields Existing fields
75  * @param string|array $form form_ID or form object
76  * @param string $zone Either 'single', 'directory', 'header', 'footer'
77  */
78  function add_default_field( $entry_default_fields, $form = array(), $zone = '' ) {
79 
80  if( $zone !== 'edit' ) {
81 
82  $entry_default_fields['edit_link'] = array(
83  'label' => __('Link to Edit Entry', 'gravityview'),
84  'type' => 'edit_link',
85  'desc' => __('A link to edit the entry. Visible based on View settings.', 'gravityview'),
86  'icon' => 'dashicons-welcome-write-blog',
87  );
88 
89  }
90 
91  return $entry_default_fields;
92  }
93 
94  /**
95  * Change wording for the Edit context to read Entry Creator
96  *
97  * @param array $visibility_caps Array of capabilities to display in field dropdown.
98  * @param string $field_type Type of field options to render (`field` or `widget`)
99  * @param string $template_id Table slug
100  * @param float $field_id GF Field ID - Example: `3`, `5.2`, `entry_link`, `created_by`
101  * @param string $context What context are we in? Example: `single` or `directory`
102  * @param string $input_type (textarea, list, select, etc.)
103  * @return array Array of field options with `label`, `value`, `type`, `default` keys
104  */
105  function modify_visibility_caps( $visibility_caps = array(), $template_id = '', $field_id = '', $context = '', $input_type = '' ) {
106 
107  $caps = $visibility_caps;
108 
109  // If we're configuring fields in the edit context, we want a limited selection
110  if( $context === 'edit' ) {
111 
112  // Remove other built-in caps.
113  unset( $caps['publish_posts'], $caps['gravityforms_view_entries'], $caps['delete_others_posts'] );
114 
115  $caps['read'] = _x('Entry Creator','User capability', 'gravityview');
116  }
117 
118  return $caps;
119  }
120 
121  /**
122  * Add "Edit Link Text" setting to the edit_link field settings
123  *
124  * @param array $field_options
125  * @param string $template_id
126  * @param string $field_id
127  * @param string $context
128  * @param string $input_type
129  *
130  * @return array $field_options, with "Edit Link Text" field option
131  */
132  function edit_link_field_options( $field_options, $template_id, $field_id, $context, $input_type ) {
133 
134  // Always a link, never a filter
135  unset( $field_options['show_as_link'], $field_options['search_filter'] );
136 
137  // Edit Entry link should only appear to visitors capable of editing entries
138  unset( $field_options['only_loggedin'], $field_options['only_loggedin_cap'] );
139 
140  $add_option['edit_link'] = array(
141  'type' => 'text',
142  'label' => __( 'Edit Link Text', 'gravityview' ),
143  'desc' => NULL,
144  'value' => __('Edit Entry', 'gravityview'),
145  'merge_tags' => true,
146  );
147 
148  $add_option['new_window'] = array(
149  'type' => 'checkbox',
150  'label' => __( 'Open link in a new tab or window?', 'gravityview' ),
151  'value' => false,
152  'group' => 'display',
153  'priority' => 1300,
154  );
155 
156  return array_merge( $add_option, $field_options );
157  }
158 
159  /**
160  * Add tooltips
161  * @param array $tooltips Existing tooltips
162  * @return array Modified tooltips
163  */
164  function tooltips( $tooltips ) {
165 
166  $return = $tooltips;
167 
168  $return['allow_edit_cap'] = array(
169  'title' => __('Limiting Edit Access', 'gravityview'),
170  'value' => __('Change this setting if you don\'t want the user who created the entry to be able to edit this field.', 'gravityview'),
171  );
172 
173  return $return;
174  }
175 
176  /**
177  * Add "Edit Link Text" setting to the edit_link field settings
178  *
179  * @param array $field_options
180  * @param string $template_id
181  * @param string $field_id
182  * @param string $context
183  * @param string $input_type
184  * @param int $form_id
185  *
186  * @return array $field_options, with added field options
187  */
188  public function field_options( $field_options, $template_id, $field_id, $context, $input_type, $form_id ) {
189 
190  // We only want to modify the settings for the edit context
191  if( 'edit' !== $context ) {
192  return $field_options;
193  }
194 
195  // Entry field is only for logged in users
196  unset( $field_options['only_loggedin'], $field_options['only_loggedin_cap'] );
197 
198  $add_options = array(
199  'allow_edit_cap' => array(
200  'type' => 'select',
201  'label' => __( 'Make field editable to:', 'gravityview' ),
202  'choices' => GravityView_Render_Settings::get_cap_choices( $template_id, $field_id, $context, $input_type ),
203  'tooltip' => 'allow_edit_cap',
204  'class' => 'widefat',
205  'value' => 'read', // Default: entry creator
206  'group' => 'visibility',
207  ),
208  );
209 
210  return array_merge( $field_options, $add_options );
211  }
212 
213 
214 } // end class
edit_link_field_options( $field_options, $template_id, $field_id, $context, $input_type)
Add "Edit Link Text" setting to the edit_link field settings.
tooltips( $tooltips)
Add tooltips.
static render_setting_row( $key='', $current_settings=array(), $override_input=null, $name='template_settings[%s]', $id='gravityview_se_%s')
Output a table row for view settings.
field_options( $field_options, $template_id, $field_id, $context, $input_type, $form_id)
Add "Edit Link Text" setting to the edit_link field settings.
$loader
if(gravityview() ->plugin->is_GF_25()) $form
$current_settings
load()
$field_id
Definition: time.php:17
view_settings_metabox( $current_settings)
Render Edit Entry View metabox settings.
if(empty( $created_by)) $form_id
static get_cap_choices( $template_id='', $field_id='', $context='', $input_type='')
Get capabilities options for GravityView.
modify_visibility_caps( $visibility_caps=array(), $template_id='', $field_id='', $context='', $input_type='')
Change wording for the Edit context to read Entry Creator.
add_default_field( $entry_default_fields, $form=array(), $zone='')
Add Edit Link as a default field, outside those set in the Gravity Form form.
__construct(GravityView_Edit_Entry $loader)