Ejemplo n.º 1
0
  public static function get_set($object, $set_items, $args = array("nested" => false)) {
    
    global $meow_provider, $wf;
    
    $data = array();
    
    $set = $set_items->info;
    
    // check for versions
    
    $set_args = $args;
    
    if (WOOF::is_false_arg($args, "nested")) {
      $versions = $set_items->versions();
    
      if (count($versions)) {
        $versions_options = array();
      
        $count = 0;
      
        foreach ($versions as $version) {
          $count++;

          $prefix = "";
        
          if ($count == 1) {
            $prefix .= __("Current", MASTERPRESS_DOMAIN);
          } else {
            $prefix = WOOF::items_number( $count - 1,  __("Current", MASTERPRESS_DOMAIN), __("1 version ago", MASTERPRESS_DOMAIN), __("%d versions ago", MASTERPRESS_DOMAIN) );
          }
        
          $text = $prefix." — ".$wf->format_date("[date-time-long]", strtotime(get_date_from_gmt($version->date)));
        
          if (!is_null($version->user_login)) {
            $text = $text." — ".$version->user_login;
          }
        
          if ($set->allow_multiple) {
            $text = $text." ( ".WOOF::items_number($version->field_set_count, __("no items", MASTERPRESS_DOMAIN), __("1 item", MASTERPRESS_DOMAIN), __("%d items", MASTERPRESS_DOMAIN))." )";
          }
      
          $versions_options[$text] = $version->version_id;
        }

        $selected_version = "";
      
        if (count($versions_options) > 1) {
          $vvals = array_values($versions_options);
          $selected_version = $vvals[1];
        }
      
        $data["versions_select_id"] = "versions-".$set->id;
        
        if ($set->current_user_can_edit()) {
          $data["versions_select"] = WOOF_HTML::select(
            array("id" => $data["versions_select_id"]),
            $versions_options,
            $selected_version
          );
    
          $data["versions_title"] = sprintf( __("Versions of '%s'", MASTERPRESS_DOMAIN), $set->display_label() );
          $set_args["versions_select"] = $data["versions_select"];
        }
      
          
      }
    }
    
    $set_classes = array();
    
    if ($set->allow_multiple) {
      $set_classes[] = "multiple";
    } else {
      $set_classes[] = "single";
    }
    
    
    $data["allow_remove"] = true;
    $data["set_allow_add"] = true;
    
    $data["copy_paste_title"] = __("Copy / Paste Content", MASTERPRESS_DOMAIN);


    if (!$set->current_user_can_edit()) {
      $data["copy_paste_title"] = __("Copy Content", MASTERPRESS_DOMAIN);
      $data["readonly"] = true;
      $data["allow_remove"] = false;
      $data["set_allow_add"] = false;
      $set_classes[] = "readonly";
    }
    
    
    $set_head_classes = array();
    
    $add_item_title = strip_tags($set->label("add_another"));
    
    if ($set_items->count() == 0) {
      $set_head_classes[] = "hidden";  
      $add_item_title = strip_tags($set->label("click_to_add"));
    } else {
      $data["set_foot_controls_style"] = "display: none;";  
    }
    
    $type_key = $meow_provider->type_key($object);
    
    $set_description = trim( $set->label("description") );
    
    if ($set_description != "") {
      $data["set_description"] = trim( $set->label("description") );
    }
  
    $set_type_description = $set->label("description_".$type_key);
  
    if (isset($set_type_description) && trim($set_type_description) != "") {
      $data["set_description"] = trim($set_type_description);
    }
    
    $data["set_head_classes"] = implode(" ", $set_head_classes);
    $data["set_classes"] = implode(" ", $set_classes);

    $data["set_id"] = $set->id;
    $data["set_name"] = $set->name;
    
    if (isset($args["guid"])) {
      $data["add_item_template"] = "mpft_ui_{$set->name}"."_".$args["guid"];
    }

    
    $data["set_dirty_name"] = "mp_meta_dirty[{$set->name}]";
    $data["set_versions_name"] = "mp_meta_versions[{$set->name}]";
    $data["set_versions"] = $set->versions;
    
    $data["set_allow_multiple"] = $set->allow_multiple;
    $data["set_expanded"] = $set->expanded;
  
    $data["add_item_title"] = $add_item_title;

    $data["set_name_sanitized"] = str_replace("_", "-", $wf->sanitize($set->name));
    
    if (!isset($set->icon) && $set->icon != "") {
      $data["set_icon"] = MPU::field_set_icon_url($set->icon);
      $data["set_icon_2x"] = MPU::field_set_icon_2x_url($set->icon);
    }
    
    $data["label_add_another"] = esc_js( strip_tags($set->label("add_another")) );
    $data["label_one_item"] = esc_js( $set->label("one_item"));
    $data["label_n_items"] = esc_js($set->label("n_items"));
    $data["label_no_items"] = esc_js($set->label("no_items"));
    $data["label_click_to_add"] = esc_js($set->label("click_to_add"));
    $data["label_remove_confirm"] = strip_tags($set->label("remove")).": ".__("Are you sure?", MASTERPRESS_DOMAIN);

    $data["set_items_count"] = MPU::__items($set_items->count(), $set->label("one_item"), $set->label("n_items"), $set->label("no_items"));
    
    if ($type_key == "post") {
      $data["save_nag_message"] = sprintf( __('To Save changes you must also <strong>Save Draft</strong> or <strong class="update">Update</strong> this %s', MASTERPRESS_DOMAIN ), $object->post_type()->singular_label() );
    } else if ($type_key == "term") {
      $data["save_nag_message"] = sprintf( __('To Save changes you must also <strong class="update">Update</strong> this %s', MASTERPRESS_DOMAIN ), $object->taxonomy()->singular_label());
    } else if ($type_key == "user") {
      $data["save_nag_message"] = __('To Save changes you must also <strong class="update">Update</strong> this user', MASTERPRESS_DOMAIN);
    }
    
    if (isset($data["save_nag_message"])) {
      $data["save_nag_tooltip"] = strip_tags($data["save_nag_message"]);
    }
    
    // loop through the fields, and output their model ids, so that the save action picks them up

    $data["fields"] = array();
    $data["field_icons"] = array();
    
    foreach ($set->fields() as $field) :
    
      if ($field->current_user_can_see()) {
        
        $field_data = array();
      
        $field_data["field_id"] = $field->id;
		
        $field_data["field_model_name"] = "mp_meta_model[{$set->name}][{$field->name}]";

        if (!is_null($field->icon) && $field->icon != "") {
          $data["field_icons"][] = array("url_2x" => MPU::field_icon_2x_url($field->icon), "url" => MPU::field_icon_url($field->icon), "field_path" => $set->name."-".$field->name);
        }
      
        $field_data["field_path"] = $set->name."-".$field->name;
      
        if (isset($field->labels["tooltip_help"])) {
          $tooltip_help = stripslashes(trim($field->label("tooltip_help")));
      
          if ($tooltip_help != "") {
            $field_data["tooltip_help"] = $tooltip_help;
          } 

        }
      
        $data["fields"][] = $field_data;
      
      }
    
    endforeach;

    // need to add creator support here!
    
    if ($set->creator) {
      
      $set_item = new MEOW_FieldSetCreator($set->name, $object, $set);
      
      $template_data = self::set_item_template_data($set_item, $set_args);
      $data["set_items"] = WOOF::render_template( self::set_item_template(), $template_data, false );

      
    } else {
      
      if ($set->allow_multiple) {

        $data["set_items"] = "";
      
        foreach ($set_items as $set_item) { 
          // grab the data for the set template
          $template_data = self::set_item_template_data($set_item, $set_args);
          $data["set_items"] .= WOOF::render_template( self::set_item_template(), $template_data, false );
        } 
    
        // update the set_items (if dirty)
        $set_items->update();
    
      
      } else {
      
        $set_item = new MEOW_FieldSet($set->name, 1, $object, $set, $set_items);
        // grab the data for the set template
        $template_data = self::set_item_template_data($set_item, $set_args);
        $data["set_items"] = WOOF::render_template( self::set_item_template(), $template_data, false );
      
      }
    
    }
    
    return WOOF::render_template( self::set_template(), $data, false );
    
  }