2012-05-16 4 views
0

Я надеюсь, что кто-то на этом форуме может помочь мне с пользовательской страницей загрузки аватара, которую я пытаюсь создать для Buddypress. Извиняюсь заранее за длинный адрес электронной почты, но я хочу быть как можно более ясным, чтобы я мог получить ясный и конкретный ответ :)Buddypress custom avatar upload page

Эта страница является частью трехэтапного процесса «запуска», который пользователь завершает после регистрация на сайте (1. заполнение полей профиля 2. загрузка аватара 3. приглашение друзей).

Я не эксперт с кодом, но у меня есть шаги 1 и 3, отсортированные путем копирования и редактирования кода из профиля/edit.php и файлов-приглашенных/по-email/by-email.php соответственно , а затем выполните переадресацию onsubmit на следующий шаг.

Чтобы выполнить шаг 1, мне также пришлось отредактировать файл bp-xprofile-template.php, чтобы включить if is_page ... else ... так, чтобы страница использовала loggedin_user, а не display_user.

С помощью шага 2 у меня есть страница, которая отображается правильно, но после того, как я выбрал изображение для аватара и нажал, загрузка страницы обновляется и не идет на обрезку, что и было, если бы вы загружали аватар на страницу изменения аватара в профиле.

Если я изменил действие формы, чтобы перенаправить на страницу изменения аватара в зарегистрированном профиле пользователя (по умолчанию нет действия), тогда появляется обрезка, но я не хочу, чтобы пользователь покидал «шаги».

Я подумал, может быть, мне нужно что-то изменить в наборе функций аватара_admin в bp-core-template.php, чтобы он работал на других страницах, но это не выходит за рамки моих способностей. Я действительно надеюсь, что кто-то может помочь в этом, потому что это последний барьер для завершения этого процесса.

Ниже приведен код изменения-avatar.php, и это то, что я скопировал и пытаюсь выполнить работу на пользовательской странице. Моя страница перестает правильно работать в «если („урожай образ“== bp_get_avatar_admin_step()». Заранее спасибо.

<h4><?php _e('Change Avatar', 'buddypress') ?></h4> 

<?php do_action('bp_before_profile_avatar_upload_content') ?> 

<?php if (!(int)bp_get_option('bp-disable-avatar-uploads')) : ?> 

    <p><?php _e('Your avatar will be used on your profile and throughout the site. If there is a <a href="http://gravatar.com">Gravatar</a> associated with your account email we will use that, or you can upload an image from your computer.', 'buddypress') ?></p> 

    <form action="" method="post" id="avatar-upload-form" class="standard-form" enctype="multipart/form-data"> 

     <?php if ('upload-image' == bp_get_avatar_admin_step()) : ?> 

      <?php wp_nonce_field('bp_avatar_upload') ?> 
      <p><?php _e('Click below to select a JPG, GIF or PNG format photo from your computer and then click \'Upload Image\' to proceed.', 'buddypress') ?></p> 

      <p id="avatar-upload"> 
       <input type="file" name="file" id="file" /> 
       <input type="submit" name="upload" id="upload" value="<?php _e('Upload Image', 'buddypress') ?>" /> 
       <input type="hidden" name="action" id="action" value="bp_avatar_upload" /> 
      </p> 

      <?php if (bp_get_user_has_avatar()) : ?> 
       <p><?php _e("If you'd like to delete your current avatar but not upload a new one, please use the delete avatar button.", 'buddypress') ?></p> 
       <p><a class="button edit" href="<?php bp_avatar_delete_link() ?>" title="<?php _e('Delete Avatar', 'buddypress') ?>"><?php _e('Delete My Avatar', 'buddypress') ?></a></p> 
      <?php endif; ?> 

     <?php endif; ?> 

     <?php if ('crop-image' == bp_get_avatar_admin_step()) : ?> 

      <h5><?php _e('Crop Your New Avatar', 'buddypress') ?></h5> 

      <img src="<?php bp_avatar_to_crop() ?>" id="avatar-to-crop" class="avatar" alt="<?php _e('Avatar to crop', 'buddypress') ?>" /> 

      <div id="avatar-crop-pane"> 
       <img src="<?php bp_avatar_to_crop() ?>" id="avatar-crop-preview" class="avatar" alt="<?php _e('Avatar preview', 'buddypress') ?>" /> 
      </div> 

      <input type="submit" name="avatar-crop-submit" id="avatar-crop-submit" value="<?php _e('Crop Image', 'buddypress') ?>" /> 

      <input type="hidden" name="image_src" id="image_src" value="<?php bp_avatar_to_crop_src() ?>" /> 
      <input type="hidden" id="x" name="x" /> 
      <input type="hidden" id="y" name="y" /> 
      <input type="hidden" id="w" name="w" /> 
      <input type="hidden" id="h" name="h" /> 

      <?php wp_nonce_field('bp_avatar_cropstore') ?> 

     <?php endif; ?> 

    </form> 

<?php else : ?> 

    <p><?php _e('Your avatar will be used on your profile and throughout the site. To change your avatar, please create an account with <a href="http://gravatar.com">Gravatar</a> using the same email address as you used to register with this site.', 'buddypress') ?></p> 

<?php endif; ?> 

<?php do_action('bp_after_profile_avatar_upload_content') ?> 
+0

Привет, я нашел решение, вы можете увидеть в http://stackoverflow.com/a/40312684/4016011 – gfirem

ответ

0

Моя страница перестает правильно работать в «если („кадрирования изображения“== bp_get_avatar_admin_step()»

так что же bp_get_avatar_admin_step() = в этой точке? Эхо его видеть.

ли аватар на самом деле загружать? Если да, то вы должны выяснить, как продвигать admin_step.

Я, возможно, не думал, что мне нужно изменить что-то в наборе avatar_admin функций в п.о.-ядро-template.php, но это не за пределами моих способностей

Вместо того, чтобы изменения, выяснить, как они называются.

0

Я только что закончил работу над реализацией собственной страницы аватара и имел ту же проблему. Я думаю, что на самом деле я потерял волосы. ха-ха. Я закончил тем, что адаптировал код на моем конце, чтобы убедиться, что bp все еще можно обновить, взяв несколько кусков соответствующего кода и создав его в новую функцию в качестве части моей темы.

Проблема заключается в скрытом представлении «w» является одним из многих reserved wordpress terms.

<input type="hidden" name="image_src" id="image_src" value="<?php bp_avatar_to_crop_src(); ?>" /> 
<input type="hidden" id="x" name="x" /> 
<input type="hidden" id="y" name="y" /> 
<input type="hidden" id="w" name="w" /> 
<input type="hidden" id="h" name="h" /> 

Вам нужно будет изменить это значение на что-нибудь другое, а затем реализовать свою собственную версию функции обработчика:

BuddyPress/BP-xprofile/BP-xprofile-screens.php-> xprofile_screen_change_avatar();

Кроме того, возможно, есть лучший способ, но для кадрирования на работу я должен был осуществить отдельный вызов для содержания в

bp_core_add_jquery_cropper(){ 
wp_enqueue_style('jcrop'); 
wp_enqueue_script('jcrop', array('jquery')); 
add_action('wp_head', 'bp_core_add_cropper_inline_js'); 
add_action('wp_head', 'bp_core_add_cropper_inline_css'); 
} 

в

wp_enqueue_style('jcrop'); 
wp_enqueue_script('jcrop', array('jquery')); 
add_action('wp_footer', 'bp_core_add_cropper_inline_js'); 
add_action('wp_footer', 'bp_core_add_cropper_inline_css'); 

в моей реализация profile_screen_change_avatar().

Надеюсь, это может быть для вас и для других. Дайте мне знать, если все это имеет смысл (ну или нет)).

0

Благодарим вас за полезные советы. Просто добавьте, что предложения @ Zenvied работают очень хорошо. Единственное, что мне нужно было добавить в собственные реализации «bp_core_add_cropper_inline_js()» и «bp_core_add_cropper_inline_css()», а затем вызвать их из моей реализации «xprofile_screen_change_avatar()». Таким образом, вместо этого:

wp_enqueue_style('jcrop'); 
wp_enqueue_script('jcrop', array('jquery')); 
add_action('wp_footer', 'bp_core_add_cropper_inline_js'); 
add_action('wp_footer', 'bp_core_add_cropper_inline_css'); 

Я сделал это:

self::bp_custom_core_add_cropper_inline_css(); 
self::bp_custom_core_add_cropper_inline_js(); 
wp_enqueue_style('jcrop'); 
wp_enqueue_script('jcrop', array('jquery')); 

Надеется, что это помогает кто-то! :-)