From 786a3cf09d449c622be7176d68b9070e5575c6a8 Mon Sep 17 00:00:00 2001 From: denisbaranov Date: Sun, 8 Dec 2019 16:09:36 +0000 Subject: [PATCH 1/9] fix notice --- includes/core/class-fields.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/includes/core/class-fields.php b/includes/core/class-fields.php index 9dabd21c..4e9ebccf 100644 --- a/includes/core/class-fields.php +++ b/includes/core/class-fields.php @@ -21,6 +21,12 @@ if ( ! class_exists( 'um\core\Fields' ) ) { var $set_mode = ''; + /** + * @var int form_id + */ + public $set_id = null; + + /** * Fields constructor. */ From 51e10bd8a519ef7e9c28b7af2112dff33cf57e0b Mon Sep 17 00:00:00 2001 From: nikitasinelnikov Date: Mon, 9 Dec 2019 14:29:31 +0200 Subject: [PATCH 2/9] - fixed user tags empty values; --- includes/core/class-fields.php | 134 ++++++++++++----------- includes/core/class-member-directory.php | 2 +- languages/ultimate-member-en_US.po | 130 +++++++++++----------- 3 files changed, 138 insertions(+), 128 deletions(-) diff --git a/includes/core/class-fields.php b/includes/core/class-fields.php index 4e9ebccf..774ea3ef 100644 --- a/includes/core/class-fields.php +++ b/includes/core/class-fields.php @@ -3875,76 +3875,82 @@ if ( ! class_exists( 'um\core\Fields' ) ) { /* Default */ default: - $output .= '
get_atts( $key, $classes, $conditional, $data ) . '>'; + $_field_value = $this->field_value( $key, $default, $data ); - if ( isset( $data['label'] ) || ! empty( $data['icon'] ) ) { + if ( ! isset( $_field_value ) || $_field_value == '' ) { + $output = ''; + } else { + $output .= '
get_atts( $key, $classes, $conditional, $data ) . '>'; - if ( ! isset( $data['label'] ) ) { - $data['label'] = ''; + if ( isset( $data['label'] ) || ! empty( $data['icon'] ) ) { + + if ( ! isset( $data['label'] ) ) { + $data['label'] = ''; + } + + $output .= $this->field_label( $data['label'], $key, $data ); } - $output .= $this->field_label( $data['label'], $key, $data ); + $res = $this->field_value( $key, $default, $data ); + + if ( ! empty( $res ) ) { + $res = stripslashes( $res ); + } + + $data['is_view_field'] = true; + /** + * UM hook + * + * @type filter + * @title um_view_field + * @description Change field HTML on view mode + * @input_vars + * [{"var":"$output","type":"string","desc":"Field HTML"}, + * {"var":"$data","type":"string","desc":"Field Data"}, + * {"var":"$type","type":"string","desc":"Field Type"}] + * @change_log + * ["Since: 2.0"] + * @usage add_filter( 'um_view_field', 'function_name', 10, 3 ); + * @example + * + */ + $res = apply_filters( 'um_view_field', $res, $data, $type ); + /** + * UM hook + * + * @type filter + * @title um_view_field_value_{$type} + * @description Change field HTML on view mode by field type + * @input_vars + * [{"var":"$output","type":"string","desc":"Field HTML"}, + * {"var":"$data","type":"string","desc":"Field Data"}] + * @change_log + * ["Since: 2.0"] + * @usage add_filter( 'um_view_field_value_{$type}', 'function_name', 10, 2 ); + * @example + * + */ + $res = apply_filters( "um_view_field_value_{$type}", $res, $data ); + + $output .= '
'; + $output .= '
' . $res . '
'; + $output .= '
'; + + $output .= '
'; } - $res = $this->field_value( $key, $default, $data ); - - if ( ! empty( $res ) ) { - $res = stripslashes( $res ); - } - - $data['is_view_field'] = true; - /** - * UM hook - * - * @type filter - * @title um_view_field - * @description Change field HTML on view mode - * @input_vars - * [{"var":"$output","type":"string","desc":"Field HTML"}, - * {"var":"$data","type":"string","desc":"Field Data"}, - * {"var":"$type","type":"string","desc":"Field Type"}] - * @change_log - * ["Since: 2.0"] - * @usage add_filter( 'um_view_field', 'function_name', 10, 3 ); - * @example - * - */ - $res = apply_filters( 'um_view_field', $res, $data, $type ); - /** - * UM hook - * - * @type filter - * @title um_view_field_value_{$type} - * @description Change field HTML on view mode by field type - * @input_vars - * [{"var":"$output","type":"string","desc":"Field HTML"}, - * {"var":"$data","type":"string","desc":"Field Data"}] - * @change_log - * ["Since: 2.0"] - * @usage add_filter( 'um_view_field_value_{$type}', 'function_name', 10, 2 ); - * @example - * - */ - $res = apply_filters( "um_view_field_value_{$type}", $res, $data ); - - $output .= '
'; - $output .= '
' . $res . '
'; - $output .= '
'; - - $output .= '
'; - break; /* HTML */ diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php index 02125da1..f0a5a3e1 100644 --- a/includes/core/class-member-directory.php +++ b/includes/core/class-member-directory.php @@ -490,7 +490,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { $values_array = ( ! empty( $users_roles['avail_roles'] ) && is_array( $users_roles['avail_roles'] ) ) ? array_keys( array_filter( $users_roles['avail_roles'] ) ) : array(); } - if ( ! empty( $values_array ) && in_array( $attrs['type'], array( 'select','multiselect', 'checkbox', 'radio' ) ) ) { + if ( ! empty( $values_array ) && in_array( $attrs['type'], array( 'select', 'multiselect', 'checkbox', 'radio' ) ) ) { $values_array = array_map( 'maybe_unserialize', $values_array ); $temp_values = array(); foreach ( $values_array as $values ) { diff --git a/languages/ultimate-member-en_US.po b/languages/ultimate-member-en_US.po index 80d6fc4d..fb6ce746 100644 --- a/languages/ultimate-member-en_US.po +++ b/languages/ultimate-member-en_US.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: Ultimate Member\n" -"POT-Creation-Date: 2019-12-04 11:13+0200\n" -"PO-Revision-Date: 2019-12-04 11:13+0200\n" +"POT-Creation-Date: 2019-12-09 14:29+0200\n" +"PO-Revision-Date: 2019-12-09 14:29+0200\n" "Last-Translator: \n" "Language-Team: \n" "Language: en_US\n" @@ -103,7 +103,7 @@ msgstr "" #: includes/admin/core/class-admin-builder.php:765 #: includes/admin/core/class-admin-dragdrop.php:33 #: includes/admin/core/class-admin-menu.php:106 -#: includes/core/class-fields.php:4382 +#: includes/core/class-fields.php:4394 msgid "Please login as administrator" msgstr "" @@ -183,7 +183,7 @@ msgstr "" #: includes/admin/core/class-admin-builder.php:1169 #: includes/core/class-form.php:176 includes/core/class-form.php:350 -#: includes/core/class-password.php:533 +#: includes/core/class-password.php:535 msgid "This is not possible for security reasons." msgstr "" @@ -274,7 +274,7 @@ msgstr "" #: includes/admin/templates/form/register_customize.php:80 #: includes/admin/templates/form/register_gdpr.php:27 #: includes/core/class-builtin.php:1135 includes/core/class-builtin.php:1150 -#: includes/core/class-member-directory.php:952 +#: includes/core/class-member-directory.php:953 #: includes/core/um-filters-members.php:40 msgid "Yes" msgstr "" @@ -1297,7 +1297,7 @@ msgid "The text that appears on the button. e.g. Upload" msgstr "" #: includes/admin/core/class-admin-metabox.php:1959 -#: includes/core/class-fields.php:1638 includes/core/class-fields.php:1679 +#: includes/core/class-fields.php:1644 includes/core/class-fields.php:1685 msgid "Upload" msgstr "" @@ -2076,7 +2076,7 @@ msgstr "" #: includes/admin/core/class-admin-settings.php:409 #: includes/core/class-builtin.php:732 includes/core/class-builtin.php:735 #: includes/core/class-member-directory.php:244 -#: includes/core/class-member-directory.php:272 +#: includes/core/class-member-directory.php:273 msgid "Nickname" msgstr "" @@ -3161,7 +3161,7 @@ msgid "UM Action" msgstr "" #: includes/admin/core/class-admin-users.php:124 -#: includes/core/class-fields.php:2544 +#: includes/core/class-fields.php:2550 msgid "Apply" msgstr "" @@ -3271,7 +3271,7 @@ msgstr "" #: includes/admin/core/list-tables/roles-list-table.php:22 #: includes/admin/core/list-tables/roles-list-table.php:89 #: includes/admin/core/list-tables/roles-list-table.php:402 -#: includes/core/class-member-directory.php:266 +#: includes/core/class-member-directory.php:267 msgid "Roles" msgstr "" @@ -4201,7 +4201,7 @@ msgstr "" #: includes/admin/templates/modal/dynamic_new_group.php:18 #: includes/admin/templates/modal/fonticons.php:14 #: includes/admin/templates/role/publish.php:24 includes/class-config.php:252 -#: includes/core/class-fields.php:2545 includes/core/class-fields.php:2642 +#: includes/core/class-fields.php:2551 includes/core/class-fields.php:2648 #: includes/core/um-actions-profile.php:674 #: includes/core/um-actions-profile.php:686 #: includes/core/um-actions-profile.php:874 @@ -4571,7 +4571,7 @@ msgid "Register" msgstr "" #: includes/class-config.php:135 includes/class-config.php:789 -#: includes/core/class-member-directory.php:1996 +#: includes/core/class-member-directory.php:2013 #: includes/core/um-actions-profile.php:1258 #: includes/core/um-actions-user.php:19 msgid "Logout" @@ -4866,12 +4866,12 @@ msgid "Username or E-mail" msgstr "" #: includes/core/class-builtin.php:712 includes/core/class-builtin.php:715 -#: includes/core/class-member-directory.php:270 +#: includes/core/class-member-directory.php:271 msgid "First Name" msgstr "" #: includes/core/class-builtin.php:722 includes/core/class-builtin.php:725 -#: includes/core/class-member-directory.php:271 +#: includes/core/class-member-directory.php:272 msgid "Last Name" msgstr "" @@ -4885,7 +4885,7 @@ msgid "Registration Date" msgstr "" #: includes/core/class-builtin.php:764 includes/core/class-builtin.php:767 -#: includes/core/class-member-directory.php:268 +#: includes/core/class-member-directory.php:269 msgid "Last Login" msgstr "" @@ -4894,12 +4894,12 @@ msgid "E-mail Address" msgstr "" #: includes/core/class-builtin.php:786 includes/core/class-builtin.php:789 -#: includes/core/class-member-directory.php:273 +#: includes/core/class-member-directory.php:274 msgid "Secondary E-mail Address" msgstr "" #: includes/core/class-builtin.php:798 includes/core/class-builtin.php:801 -#: includes/core/class-member-directory.php:274 +#: includes/core/class-member-directory.php:275 msgid "Biography" msgstr "" @@ -4912,7 +4912,7 @@ msgid "Birth Date" msgstr "" #: includes/core/class-builtin.php:825 includes/core/class-builtin.php:828 -#: includes/core/class-member-directory.php:264 +#: includes/core/class-member-directory.php:265 msgid "Gender" msgstr "" @@ -4925,7 +4925,7 @@ msgid "Female" msgstr "" #: includes/core/class-builtin.php:836 includes/core/class-builtin.php:839 -#: includes/core/class-member-directory.php:263 +#: includes/core/class-member-directory.php:264 msgid "Country" msgstr "" @@ -4983,7 +4983,7 @@ msgid "Roles (Radio)" msgstr "" #: includes/core/class-builtin.php:1030 -#: includes/core/class-member-directory.php:265 +#: includes/core/class-member-directory.php:266 msgid "Languages" msgstr "" @@ -4997,12 +4997,12 @@ msgstr "" #: includes/core/class-builtin.php:1042 includes/core/class-builtin.php:1045 #: includes/core/class-builtin.php:1341 -#: includes/core/class-member-directory.php:275 +#: includes/core/class-member-directory.php:276 msgid "Phone Number" msgstr "" #: includes/core/class-builtin.php:1054 includes/core/class-builtin.php:1057 -#: includes/core/class-member-directory.php:276 +#: includes/core/class-member-directory.php:277 msgid "Mobile Number" msgstr "" @@ -6946,101 +6946,101 @@ msgstr "" msgid "Add translation to %s" msgstr "" -#: includes/core/class-fields.php:1263 templates/message.php:6 +#: includes/core/class-fields.php:1269 templates/message.php:6 #, php-format msgid "%s" msgstr "" -#: includes/core/class-fields.php:1284 +#: includes/core/class-fields.php:1290 msgid "Custom Field" msgstr "" -#: includes/core/class-fields.php:1627 +#: includes/core/class-fields.php:1633 msgid "Please upload a valid image!" msgstr "" -#: includes/core/class-fields.php:1641 +#: includes/core/class-fields.php:1647 msgid "Sorry this is not a valid image." msgstr "" -#: includes/core/class-fields.php:1644 +#: includes/core/class-fields.php:1650 msgid "This image is too large!" msgstr "" -#: includes/core/class-fields.php:1647 +#: includes/core/class-fields.php:1653 msgid "This image is too small!" msgstr "" -#: includes/core/class-fields.php:1650 +#: includes/core/class-fields.php:1656 msgid "You can only upload one image" msgstr "" -#: includes/core/class-fields.php:1682 +#: includes/core/class-fields.php:1688 msgid "Sorry this is not a valid file." msgstr "" -#: includes/core/class-fields.php:1685 +#: includes/core/class-fields.php:1691 msgid "This file is too large!" msgstr "" -#: includes/core/class-fields.php:1688 +#: includes/core/class-fields.php:1694 msgid "This file is too small!" msgstr "" -#: includes/core/class-fields.php:1691 +#: includes/core/class-fields.php:1697 msgid "You can only upload one file" msgstr "" -#: includes/core/class-fields.php:2204 +#: includes/core/class-fields.php:2210 msgid "Current Password" msgstr "" -#: includes/core/class-fields.php:2233 +#: includes/core/class-fields.php:2239 msgid "New Password" msgstr "" -#: includes/core/class-fields.php:2265 +#: includes/core/class-fields.php:2271 #, php-format msgid "Confirm %s" msgstr "" -#: includes/core/class-fields.php:2499 +#: includes/core/class-fields.php:2505 msgid "Upload Photo" msgstr "" -#: includes/core/class-fields.php:2520 includes/core/class-fields.php:2544 +#: includes/core/class-fields.php:2526 includes/core/class-fields.php:2550 #: includes/core/um-actions-profile.php:905 msgid "Change photo" msgstr "" -#: includes/core/class-fields.php:2544 includes/core/class-fields.php:2641 +#: includes/core/class-fields.php:2550 includes/core/class-fields.php:2647 msgid "Processing..." msgstr "" -#: includes/core/class-fields.php:2566 +#: includes/core/class-fields.php:2572 msgid "Upload File" msgstr "" -#: includes/core/class-fields.php:2608 includes/core/um-filters-fields.php:267 +#: includes/core/class-fields.php:2614 includes/core/um-filters-fields.php:267 msgid "This file has been removed." msgstr "" -#: includes/core/class-fields.php:2611 includes/core/class-fields.php:2641 +#: includes/core/class-fields.php:2617 includes/core/class-fields.php:2647 msgid "Change file" msgstr "" -#: includes/core/class-fields.php:2641 +#: includes/core/class-fields.php:2647 msgid "Save" msgstr "" -#: includes/core/class-fields.php:4115 +#: includes/core/class-fields.php:4127 #, php-format msgid "" "Your profile is looking a little empty. Why not add some " "information!" msgstr "" -#: includes/core/class-fields.php:4117 +#: includes/core/class-fields.php:4129 msgid "This user has not added any information to their profile yet." msgstr "" @@ -7077,7 +7077,7 @@ msgstr "" msgid "You can not edit this user" msgstr "" -#: includes/core/class-mail.php:615 includes/core/class-password.php:701 +#: includes/core/class-mail.php:615 includes/core/class-password.php:703 #: includes/core/class-profile.php:470 msgid "Your set password" msgstr "" @@ -7111,83 +7111,87 @@ msgid "Display name" msgstr "" #: includes/core/class-member-directory.php:248 +msgid "Last & First name" +msgstr "" + +#: includes/core/class-member-directory.php:249 msgid "Last login" msgstr "" -#: includes/core/class-member-directory.php:255 +#: includes/core/class-member-directory.php:256 msgid "Random" msgstr "" -#: includes/core/class-member-directory.php:256 +#: includes/core/class-member-directory.php:257 msgid "Other (Custom Field)" msgstr "" -#: includes/core/class-member-directory.php:267 +#: includes/core/class-member-directory.php:268 msgid "Age" msgstr "" -#: includes/core/class-member-directory.php:269 +#: includes/core/class-member-directory.php:270 msgid "User Registered" msgstr "" -#: includes/core/class-member-directory.php:750 +#: includes/core/class-member-directory.php:751 msgid " stars" msgstr "" -#: includes/core/class-member-directory.php:758 +#: includes/core/class-member-directory.php:759 msgid "Age: {min_range} - {max_range} years old" msgstr "" -#: includes/core/class-member-directory.php:1941 -#: includes/core/class-member-directory.php:1985 +#: includes/core/class-member-directory.php:1958 +#: includes/core/class-member-directory.php:2002 #: includes/core/um-actions-profile.php:1225 #: includes/core/um-actions-profile.php:1256 msgid "Edit Profile" msgstr "" -#: includes/core/class-member-directory.php:1991 +#: includes/core/class-member-directory.php:2008 #: includes/core/um-actions-profile.php:1257 msgid "My Account" msgstr "" -#: includes/core/class-password.php:458 +#: includes/core/class-password.php:460 msgid "Please provide your username or email" msgstr "" -#: includes/core/class-password.php:462 +#: includes/core/class-password.php:464 msgid "We can't find an account registered with that address or username" msgstr "" -#: includes/core/class-password.php:481 +#: includes/core/class-password.php:483 msgid "" "You have reached the limit for requesting password change for this user " "already. Contact support if you cannot open the email" msgstr "" -#: includes/core/class-password.php:537 +#: includes/core/class-password.php:539 msgid "You must enter a new password" msgstr "" -#: includes/core/class-password.php:543 includes/core/um-actions-account.php:58 +#: includes/core/class-password.php:545 includes/core/um-actions-account.php:58 msgid "Your password must contain at least 8 characters" msgstr "" -#: includes/core/class-password.php:547 includes/core/um-actions-account.php:62 +#: includes/core/class-password.php:549 includes/core/um-actions-account.php:62 msgid "Your password must contain less than 30 characters" msgstr "" -#: includes/core/class-password.php:551 includes/core/um-actions-account.php:66 +#: includes/core/class-password.php:553 includes/core/um-actions-account.php:66 #: includes/core/um-actions-form.php:531 msgid "" "Your password must contain at least one lowercase letter, one capital letter " "and one number" msgstr "" -#: includes/core/class-password.php:557 +#: includes/core/class-password.php:559 msgid "You must confirm your new password" msgstr "" -#: includes/core/class-password.php:561 includes/core/um-actions-form.php:540 +#: includes/core/class-password.php:563 includes/core/um-actions-form.php:540 msgid "Your passwords do not match" msgstr "" From 4c437240f79fdd23beee182a31001954b4f64be4 Mon Sep 17 00:00:00 2001 From: nikitasinelnikov Date: Tue, 10 Dec 2019 14:04:13 +0200 Subject: [PATCH 3/9] - added Profile Tabs licenses integration; - fixed issue with the filter on change enqueue scripts priority; --- assets/img/extensions/profile-tabs.png | Bin 0 -> 3156 bytes includes/admin/templates/extensions.php | 6 ++++++ includes/class-dependencies.php | 3 ++- includes/class-init.php | 1 + includes/core/class-enqueue.php | 23 +++++++++++++++++++---- includes/core/class-plugin-updater.php | 6 +++++- readme.txt | 1 + 7 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 assets/img/extensions/profile-tabs.png diff --git a/assets/img/extensions/profile-tabs.png b/assets/img/extensions/profile-tabs.png new file mode 100644 index 0000000000000000000000000000000000000000..2c45ca7ffebea332a8aea3388cb6004b4ea177e4 GIT binary patch literal 3156 zcmb_edpMM78-Mp(ThaPjD%-(`idJ$;WsSIu#)rgHdB9MvP;JDH|;&)Znz zWo6dMAP6FBZicf(kWYk*d)cR`XJMK4E!3cqOiXM@1OkEtcP9Q=Yia!5s(VIh9+y09 zOiUQKos4}(%D&RJIj5KDo+(lYm&iO;5~!;bf5Wo*qD*+Sp!V{U%LdD$H-4X#G?bGR z|CGM&t5YU3{%vzzg6d)F*ll;&yh}Iz)}N%Qu|CV=lr%hwZ^ zkg$>{+2yo+NtioX?u2UL*R~B7wwBAAn_pSy`!`Yc3|T5(e^|$v)pEk{rBdo*V%Dln z=+-F{j^M|2aJ3@^az-}MSp=&itFLdR?{GA~xH;y~;|$NZ^Kmgs38@Ept z?dzRyZRS0=(Ks-ELZ(HyQkX;KB3H)#k#A3K`4T7?vsS}3B;C=^` zHp7i3sDA>TLohJ~4^Y1VBmfK+G&}_=6a3O4xdQrLL39Z;J_AM}G(U&wIf%UuPhZ0L z6a-{JLK%=!U{(Z|tKmv5h$V2j27c)S(E`NXfM_NQ$q;e{Dq5ku1wwy>9XK z1_N)Ps1e#x@kij1*Sa0(g?)0w5|3Nr;dLt*8v-!yyP2a1=>Hg}*&DH%I zO{HXH3Vc@MR(-Zwiqa)HPM)+nS(Hjp3m6*F^EPUu)H^c+dx8?m;yI~qE6_~;hqW)& zkUIWIR;-Irn%TfeHKL8*aiQJQ40zedXYJ^3+{E2ealg)rJM7bBwVdl((eT1nsF_xJ zb4~XNLq*rv8eBqB+`gIaCHib!Z?==hy`1%NL1BAEGFItEO5OBZhfXvdlynxejuM>2 zqVtrn+%}T|@%&IxNn`+FSpDf0!?@{UrdCb3|6vOCc~H%K1NT79mrU=Q3HeLDy?s1X zSSn@c8a*qK>g7rLVwtR7x*FEzZ0VUSTWh?Lc~MJ1Zd8?8NP3lEt&7;5ma}yxDQY)o zt$1^`f~D;6mawc%GqNR;dcK)MYjV^>alOcy)Gsmb<)6AM7}a*U&}!d*_wB`_+!gY# zv)>lC)UT{<-*iTM3V%h1O7t89J`&Df*g6ybpgcij#+bBk=NVS!Vt^gny{<2Utm}$Nnww?+qT;ITa&l> zE-1@)JCmuoVOJ}r+18k9iG1d0#e%+DtXrgX`XGfpMpwrk)T4Xbb*pk*Y92?f!xW(m zSI6Wd9AhOGmP;M+S^K2fp%^+pPKEd%c&gz%Fd(8hXN7x4QL% zRLaP(=F%)$q%!t-&!n0jhoRrxJw5f{Y;R&@*w%Nx9EQfqkr$Liqf;OzbNi<=^^@gP z6(i>(VPZ5qqH^-d+gwQ$pBmbh-drGGq9r+g+^DzFHK0gQ%;d)vMm)%pgpH)e?7`Ri zZB^y8Q*!GCT3?HH+Nt;dOGw9e1Piod_vT*7nmZ~CgbjFhEu+?S1CPtvKg<{4e>-eg z*dr>8b@RaDd*_~o9x@22Z6%fEYSqm4H_sS|%H{A`?#^U(oLivq&AAQX@uac_$?->A z_Sy*H`8=LN=&L1offdo2TpEcDp=@pUO>Z#>pRwhC?UW)_1% zPrRtZmX{xLFs|cRn57($mY$4tFkYI+%a&8DemY1B43@$R0)w3~a(B6*m`q1Jjw*DE z%IC>_{F?5JQ9@rcGaaM$QH2au&%b3pO)9J3&yr4cT)Dki&C}WH{>`+Dq@615zQ!FE z_mdX0Z&mSdQ{DXVqtY-esdnF}zkuZN7&j6xYW|`8-v|sHrSo|I)cYt)b`xpJLfCF~ zWU-}GM?18FOT~<1f1v zo|Rdi=pzR9xa|86mFM3}QegR9^_Zy<-mbiS(k(h7)@B7c`Pu|kcxK1I^&dt#ad;!M zg0dTyT^q#8Ey34*c8!U+XcLorc9Of|mkX1sV@J?GT<7iszPB_)=4n)lbZD@i$ovRX zYtJ_34-xUN46E$xGGim+-7AtQWRciz%atr*rFG`I&E2y>!ctsSZf$$R6VYpDd~pe7 zbfLHVaNOALu8Fyb?UQ=q+w&n^9Qp9GUd4(rejM3YEqrgbc{7|JtHLNGs|oxaw+%|< z#Fh%yxZWJ~EebhRem}+;o!^UJxp(gC%HgEcd0}arHvTX%L@QF#ksrXtERM1N`+9T) zK1~(iybqugOc4_G7V0CmH z*T%7b2Ov{CNnZ572W-LVqf-H*wwM7Oxv>NamF`dS_Msux6y*=bHs!zoqOzAik$8-r zpEiCPMX0<-coG8${v;}mMDarcZ1Kj*=B6gQbPaax(%i14d!V=zj|OjiA58Y}3-t0J r&;tF5{(p`>nz3pQjb8sDn&L@3_UEv(o)UEQL=baRYg~!3`{`c+;$9#g literal 0 HcmV?d00001 diff --git a/includes/admin/templates/extensions.php b/includes/admin/templates/extensions.php index 420484b9..d54df331 100644 --- a/includes/admin/templates/extensions.php +++ b/includes/admin/templates/extensions.php @@ -128,6 +128,12 @@ $premium['unsplash'] = array( 'desc' => 'Allow users to select a profile cover photo from Unsplash from their profile', ); +$premium['profile-tabs'] = array( + 'url' => 'https://ultimatemember.com/extensions/profile-tabs/', + 'name' => 'Profile Tabs', + 'desc' => 'Allow users to add custom tabs to profiles', +); + $free['forumwp'] = array( 'url' => 'https://ultimatemember.com/extensions/forumwp/', 'name' => 'ForumWP', diff --git a/includes/class-dependencies.php b/includes/class-dependencies.php index 315a3759..a75b4495 100644 --- a/includes/class-dependencies.php +++ b/includes/class-dependencies.php @@ -47,6 +47,7 @@ if ( ! class_exists( 'um\Dependencies' ) ) { 'online' => '2.1.1', 'private-content' => '2.0.5', 'profile-completeness' => '2.1.2', + 'profile-tabs' => '1.0.0', 'recaptcha' => '2.1.2', 'reviews' => '2.1.5', 'social-activity' => '2.2.0', @@ -64,7 +65,7 @@ if ( ! class_exists( 'um\Dependencies' ) ) { /*rc*/ 'user-notes' => '2.0', - 'profile-tabs' => '1.6', + /*beta*/ 'frontend-posting' => '1.0', diff --git a/includes/class-init.php b/includes/class-init.php index 5397c187..e50c75e7 100644 --- a/includes/class-init.php +++ b/includes/class-init.php @@ -37,6 +37,7 @@ if ( ! class_exists( 'UM' ) ) { * @method UM_User_Bookmarks User_Bookmarks() * @method UM_Unsplash Unsplash() * @method UM_ForumWP ForumWP() + * @method UM_Profile_Tabs Profile_Tabs() */ final class UM extends UM_Functions { diff --git a/includes/core/class-enqueue.php b/includes/core/class-enqueue.php index 3a815b8a..dbe487fd 100644 --- a/includes/core/class-enqueue.php +++ b/includes/core/class-enqueue.php @@ -43,6 +43,22 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) { $this->js_baseurl = um_url . 'assets/js/'; $this->css_baseurl = um_url . 'assets/css/'; + add_action( 'init', array( &$this, 'scripts_enqueue_priority' ) ); + } + + + /** + * + */ + function scripts_enqueue_priority() { + add_action( 'wp_enqueue_scripts', array( &$this, 'wp_enqueue_scripts' ), $this->get_priority() ); + } + + + /** + * @return int + */ + function get_priority() { /** * UM hook * @@ -63,8 +79,7 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) { * } * ?> */ - $priority = apply_filters( 'um_core_enqueue_priority', 100 ); - add_action( 'wp_enqueue_scripts', array( &$this, 'wp_enqueue_scripts' ), $priority ); + return apply_filters( 'um_core_enqueue_priority', 100 ); } @@ -80,7 +95,7 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) { wp_dequeue_script( 'select2'); wp_deregister_script('select2'); } - wp_register_script( 'select2', $this->js_baseurl . 'select2/select2.full.min.js', array( 'jquery', 'jquery-masonry' ), ultimatemember_version, true ); + wp_register_script( 'select2', $this->js_baseurl . 'select2/select2.full.min.js', array( 'jquery' ), ultimatemember_version, true ); wp_register_script( 'um_scrollbar', $this->js_baseurl . 'simplebar' . $this->suffix . '.js', array( 'jquery' ), ultimatemember_version, true ); @@ -141,7 +156,7 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) { wp_register_script('um_dropdown', $this->js_baseurl . 'dropdown' . $this->suffix . '.js', array( 'jquery' ), ultimatemember_version, true ); - wp_register_script('um_members', $this->js_baseurl . 'um-members' . $this->suffix . '.js', array( 'jquery', 'wp-util', 'jquery-ui-slider', 'um_dropdown', 'wp-hooks', 'jquery-masonry' ), ultimatemember_version, true ); + wp_register_script('um_members', $this->js_baseurl . 'um-members' . $this->suffix . '.js', array( 'jquery', 'wp-util', 'jquery-ui-slider', 'um_dropdown', 'wp-hooks', 'jquery-masonry', 'um_scripts' ), ultimatemember_version, true ); wp_register_script('um_profile', $this->js_baseurl . 'um-profile' . $this->suffix . '.js', array( 'jquery', 'wp-util', 'wp-i18n' ), ultimatemember_version, true ); wp_register_script('um_account', $this->js_baseurl . 'um-account' . $this->suffix . '.js', array( 'jquery' ), ultimatemember_version, true ); diff --git a/includes/core/class-plugin-updater.php b/includes/core/class-plugin-updater.php index b6c7bbe2..1e3e198b 100644 --- a/includes/core/class-plugin-updater.php +++ b/includes/core/class-plugin-updater.php @@ -159,10 +159,14 @@ if ( ! class_exists( 'um\core\Plugin_Updater' ) ) { 'key' => 'filesharing', 'title' => 'File Sharing', ), - 'um-user-location/um-user-location.php' => array( + 'um-user-location/um-user-location.php' => array( 'key' => 'user-location', 'title' => 'User Location', ), + 'um-profile-tabs/um-profile-tabs.php' => array( + 'key' => 'profile_tabs', + 'title' => 'Profile tabs', + ), ); $active_um_plugins = array(); diff --git a/readme.txt b/readme.txt index b1e54b9c..0ec16527 100644 --- a/readme.txt +++ b/readme.txt @@ -42,6 +42,7 @@ Read about all of the plugin's features at [Ultimate Member](https://ultimatemem Ultimate Member has a range of extensions that allow you to extend the power of the plugin. You can purchase all of these extensions at a significant discount with our [All Access Pass](https://ultimatemember.com/pricing/) or you can purchase extensions individually. +* [Profile Tabs](https://ultimatemember.com/extensions/profile-tabs/) - Allow users to add custom tabs to profiles * [Unsplash](https://ultimatemember.com/extensions/unsplash/) - Allow users to select a profile cover photo from [Unsplash](https://unsplash.com/) from their profile * [User Bookmarks](https://ultimatemember.com/extensions/user-bookmarks/) - Allow users to bookmark content from your website * [User Photos](https://ultimatemember.com/extensions/user-photos/) - Allow users to upload photos to their profile From ba96d28b5088703b1b8ec739ccf7461bed55143e Mon Sep 17 00:00:00 2001 From: nikitasinelnikov Date: Tue, 10 Dec 2019 17:50:56 +0200 Subject: [PATCH 4/9] - added integration with Profile Tabs; - added ignore show after search/filtering option via JS hook (fixed User Tags); --- assets/js/um-members.js | 117 +++++++++++++-------- assets/js/um-members.min.js | 2 +- includes/admin/assets/js/um-admin-modal.js | 4 +- 3 files changed, 74 insertions(+), 49 deletions(-) diff --git a/assets/js/um-members.js b/assets/js/um-members.js index 88aec020..5e80b1fb 100644 --- a/assets/js/um-members.js +++ b/assets/js/um-members.js @@ -559,16 +559,22 @@ function um_run_search( directory ) { directory.data( 'page', 1 ); um_set_url_from_data( directory, 'page', '' ); - var show_after_search = directory.data('must-search'); - if ( show_after_search === 1 ) { - var search = um_get_search( directory ); - if ( directory.find( '.um-members-filter-remove' ).length === 0 && ! search ) { - directory.data( 'searched', 0 ); - directory.find('.um-members-grid, .um-members-list').remove(); - directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', true ); - directory.find( '.um-member-directory-view-type' ).addClass( 'um-disabled' ); - um_members_hide_preloader( directory ); - return; + + var ignore_after_search = false; + ignore_after_search = wp.hooks.applyFilters( 'um_member_directory_ignore_after_search', ignore_after_search ); + + if ( ! ignore_after_search ) { + var show_after_search = directory.data('must-search'); + if ( show_after_search === 1 ) { + var search = um_get_search( directory ); + if ( directory.find( '.um-members-filter-remove' ).length === 0 && ! search ) { + directory.data( 'searched', 0 ); + directory.find('.um-members-grid, .um-members-list').remove(); + directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', true ); + directory.find( '.um-member-directory-view-type' ).addClass( 'um-disabled' ); + um_members_hide_preloader( directory ); + return; + } } } @@ -1108,16 +1114,21 @@ jQuery(document.body).ready( function() { directory.find('.um-clear-filters').show(); } - var show_after_search = directory.data('must-search'); - if ( show_after_search === 1 ) { - var search = um_get_search( directory ); - if ( directory.find( '.um-members-filter-remove' ).length === 0 && ! search ) { - directory.data( 'searched', 0 ); - directory.find('.um-members-grid, .um-members-list').remove(); - directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', true ); - directory.find( '.um-member-directory-view-type' ).addClass( 'um-disabled' ); - um_members_hide_preloader( directory ); - return; + var ignore_after_search = false; + ignore_after_search = wp.hooks.applyFilters( 'um_member_directory_ignore_after_search', ignore_after_search ); + + if ( ! ignore_after_search ) { + var show_after_search = directory.data('must-search'); + if ( show_after_search === 1 ) { + var search = um_get_search( directory ); + if ( directory.find( '.um-members-filter-remove' ).length === 0 && ! search ) { + directory.data( 'searched', 0 ); + directory.find('.um-members-grid, .um-members-list').remove(); + directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', true ); + directory.find( '.um-member-directory-view-type' ).addClass( 'um-disabled' ); + um_members_hide_preloader( directory ); + return; + } } } @@ -1211,16 +1222,21 @@ jQuery(document.body).ready( function() { directory.find('.um-clear-filters').parents('.um-member-directory-header-row').removeClass( 'um-header-row-invisible' ); } - var show_after_search = directory.data('must-search'); - if ( show_after_search === 1 ) { - var search = um_get_search( directory ); - if ( ! search ) { - directory.data( 'searched', 0 ); - directory.find('.um-members-grid, .um-members-list').remove(); - directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', true ); - directory.find( '.um-member-directory-view-type' ).addClass( 'um-disabled' ); - um_members_hide_preloader( directory ); - return; + var ignore_after_search = false; + ignore_after_search = wp.hooks.applyFilters( 'um_member_directory_ignore_after_search', ignore_after_search ); + + if ( ! ignore_after_search ) { + var show_after_search = directory.data('must-search'); + if ( show_after_search === 1 ) { + var search = um_get_search( directory ); + if ( ! search ) { + directory.data( 'searched', 0 ); + directory.find('.um-members-grid, .um-members-list').remove(); + directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', true ); + directory.find( '.um-member-directory-view-type' ).addClass( 'um-disabled' ); + um_members_hide_preloader( directory ); + return; + } } } @@ -1486,12 +1502,17 @@ jQuery(document.body).ready( function() { }); - var show_after_search = directory.data('must-search'); - if ( show_after_search === 1 ) { - var search = um_get_search( directory ); - var filters_data = um_get_filters_data( directory ); - if ( ! filters_data.length && ! search ) { - return; + var ignore_after_search = false; + ignore_after_search = wp.hooks.applyFilters( 'um_member_directory_ignore_after_search', ignore_after_search ); + + if ( ! ignore_after_search ) { + var show_after_search = directory.data('must-search'); + if ( show_after_search === 1 ) { + var search = um_get_search( directory ); + var filters_data = um_get_filters_data( directory ); + if ( ! filters_data.length && ! search ) { + return; + } } } @@ -1611,17 +1632,21 @@ jQuery(document.body).ready( function() { } }); + var ignore_after_search = false; + ignore_after_search = wp.hooks.applyFilters( 'um_member_directory_ignore_after_search', ignore_after_search ); - var show_after_search = directory.data('must-search'); - if ( show_after_search === 1 ) { - var search = um_get_search( directory ); - var filters_data = um_get_filters_data( directory ); - if ( ! filters_data.length && ! search ) { - directory.data( 'searched', 0 ); - um_members_hide_preloader( directory ); - return; - } else { - directory.data( 'searched', 1 ); + if ( ! ignore_after_search ) { + var show_after_search = directory.data('must-search'); + if ( show_after_search === 1 ) { + var search = um_get_search( directory ); + var filters_data = um_get_filters_data( directory ); + if ( ! filters_data.length && ! search ) { + directory.data( 'searched', 0 ); + um_members_hide_preloader( directory ); + return; + } else { + directory.data( 'searched', 1 ); + } } } diff --git a/assets/js/um-members.min.js b/assets/js/um-members.min.js index 2bc0ca43..ab30b5b1 100644 --- a/assets/js/um-members.min.js +++ b/assets/js/um-members.min.js @@ -1 +1 @@ -var um_members_directory_busy=[],um_member_directories=[],um_member_directory_last_data=[];function um_parse_current_url(){var t={},a=window.location.search.substring(1).split("&");return jQuery.each(a,function(e){var r=a[e].split("=");t[r[0]]=r[1]}),t}function um_get_data_for_directory(e,r){var t=um_members_get_hash(e),a={},i=um_parse_current_url();if(jQuery.each(i,function(e){-1!==e.indexOf("_"+t)&&""!==i[e]&&(a[e.replace("_"+t,"")]=i[e])}),r){if(void 0!==a[r])try{a[r]=decodeURIComponent(a[r])}catch(e){console.error(e)}return a[r]}return a}function um_set_url_from_data(e,r,t){var a=um_members_get_hash(e),i=um_get_data_for_directory(e),m={};jQuery.isArray(t)?(jQuery.each(t,function(e){t[e]=encodeURIComponent(t[e])}),t=t.join("||")):jQuery.isNumeric(t)||(t=t.split("||"),jQuery.each(t,function(e){t[e]=encodeURIComponent(t[e])}),t=t.join("||")),""!==t&&(m[r+"_"+a]=t),jQuery.each(i,function(e){r===e?""!==t&&(m[e+"_"+a]=t):m[e+"_"+a]=i[e]}),jQuery.each(um_member_directories,function(e){var r=um_member_directories[e];if(r!==a){var t=um_get_data_for_directory(jQuery('.um-directory[data-hash="'+r+'"]'));jQuery.each(t,function(e){m[e+"_"+r]=t[e]})}});var d=[];jQuery.each(m,function(e){d.push(e+"="+m[e])});var u="?"+(d=wp.hooks.applyFilters("um_member_directory_url_attrs",d)).join("&");"?"===u&&(u=""),window.history.pushState("string","UM Member Directory",window.location.origin+window.location.pathname+u)}function um_members_get_hash(e){return e.data("hash")}function um_is_directory_busy(e){var r=um_members_get_hash(e);return void 0!==um_members_directory_busy[r]&&um_members_directory_busy[r]}function um_members_show_preloader(e){um_members_directory_busy[um_members_get_hash(e)]=!0,e.find(".um-members-overlay").show()}function um_members_hide_preloader(e){um_members_directory_busy[um_members_get_hash(e)]=!1,e.find(".um-members-overlay").hide()}function um_set_range_label(e,r){var t=e.siblings(".um-slider-range").data("placeholder");t=r?t.replace("{min_range}",r.values[0]).replace("{max_range}",r.values[1]).replace("{field_label}",e.siblings(".um-slider-range").data("label")):t.replace("{min_range}",e.slider("values",0)).replace("{max_range}",e.slider("values",1)).replace("{field_label}",e.siblings(".um-slider-range").data("label")),e.siblings(".um-slider-range").html(t),e.siblings(".um_range_min").val(e.slider("values",0)),e.siblings(".um_range_max").val(e.slider("values",1))}function um_get_search(e){return e.find(".um-search-line").length?e.find(".um-search-line").val():""}function um_get_sort(e){return e.data("sorting")}function um_get_current_page(e){var r=e.data("page");return r&&void 0!==r||(r=1),r}function um_time_convert(e,r){var t=Math.floor(e/60),a=e%60;return 60<=a&&(a=0,24<=(t+=1)&&(t=0)),a<10&&(a="0"+a),t+":"+a}function um_ajax_get_members(s,t){var a=um_members_get_hash(s),e=um_get_current_page(s),r=um_get_search(s),i=um_get_sort(s),m=-(new Date).getTimezoneOffset()/60,_={directory_id:a,page:e,search:r,sorting:i,gmt_offset:m,post_refferer:s.data("base-post"),nonce:um_scripts.nonce};s.find(".um-search-filter").length&&s.find(".um-search-filter").each(function(){var e=jQuery(this);if(e.find(".um-slider").length){var r=e.find(".um-slider").data("field_name"),t=um_get_data_for_directory(s,"filter_"+r+"_from"),a=um_get_data_for_directory(s,"filter_"+r+"_to");void 0===t&&void 0===a||(_[r]=[t,a])}else if(e.find(".um-datepicker-filter").length){r=e.find(".um-datepicker-filter").data("filter_name"),t=um_get_data_for_directory(s,"filter_"+r+"_from"),a=um_get_data_for_directory(s,"filter_"+r+"_to");void 0===t&&void 0===a||(_[r]=[t,a])}else if(e.find(".um-timepicker-filter").length){r=e.find(".um-timepicker-filter").data("filter_name"),t=um_get_data_for_directory(s,"filter_"+r+"_from"),a=um_get_data_for_directory(s,"filter_"+r+"_to");if(void 0!==t)(i=1*(t=t.split(":"))[0])<10&&(i="0"+i),(d=1*t[1])<10&&(d="0"+d),t=i+":"+d+":00";if(void 0!==a){var i,m=a.split(":"),d=1*m[1];(i=1*m[0])<10&&(i="0"+i),d<10&&(d="0"+d),a=i+":"+d+":59"}void 0===t&&void 0===a||(_[r]=[t,a])}else if(e.find("select").length){r=e.find("select").attr("name");void 0!==(u=um_get_data_for_directory(s,"filter_"+r))&&(_[r]=u.split("||"))}else{var u;r=e.find('input[type="text"]').attr("name");void 0!==(u=um_get_data_for_directory(s,"filter_"+r))&&(_[r]=u)}}),_=wp.hooks.applyFilters("um_member_directory_filter_request",_),wp.ajax.send("um_get_members",{data:_,success:function(e){um_member_directory_last_data[a]=e,um_build_template(s,e);var r=wp.template("um-members-pagination");s.find(".um-members-pagination-box").html(r(e)),s.data("total_pages",e.pagination.total_pages),e.pagination.total_pages?(s.find(".um-member-directory-sorting-options").prop("disabled",!1),s.find(".um-member-directory-view-type").removeClass("um-disabled")):(s.find(".um-member-directory-sorting-options").prop("disabled",!0),s.find(".um-member-directory-view-type").addClass("um-disabled")),jQuery(document).trigger("um_members_rendered",t),um_init_new_dropdown(),um_members_hide_preloader(s)},error:function(e){console.log(e),um_members_hide_preloader(s)}})}function um_build_template(e,r){var t=e.data("view_type"),a=wp.template("um-member-"+t+"-"+um_members_get_hash(e));e.find(".um-members-grid, .um-members-list").remove(),e.find(".um-members-wrapper").prepend(a(r.users));var i=wp.template("um-members-header");e.find(".um-members-intro").remove(),void 0!==r.is_search&&r.is_search&&e.find(".um-members-wrapper").prepend(i(r)),e.addClass("um-loaded"),e.find(".um-members.um-members-grid").length&&UM_Member_Grid(e.find(".um-members.um-members-grid")),jQuery(document).trigger("um_build_template",[e,r]),jQuery(window).trigger("resize"),init_tipsy()}function UM_Member_Grid(e){e.find(".um-member").length&&e.imagesLoaded(function(){e.masonry({itemSelector:".um-member",columnWidth:".um-member",gutter:".um-gutter-sizer"}).on("layoutComplete",function(e,r){jQuery(document).trigger("um_grid_initialized",[e,r])})})}function um_get_filters_data(s){var _=[];return s.find(".um-search-filter").each(function(){var t,a,d,i=jQuery(this);if(i.find("input.um-datepicker-filter").length)d="datepicker",i.find("input.um-datepicker-filter").each(function(){if("to"!==jQuery(this).data("range")){var e=jQuery(this).data("filter_name"),r=um_get_data_for_directory(s,"filter_"+e+"_from"),t=um_get_data_for_directory(s,"filter_"+e+"_to");if(void 0!==r||void 0!==t){var a,i=jQuery(this).val(),m=s.find('input.um-datepicker-filter[data-range="to"][data-filter_name="'+e+'"]').val();i===m?a=m:""!==i&&""!==m?a=i+" - "+m:""===i?a="before "+m:""===m&&(a="since "+i),_.push({name:e,label:jQuery(this).data("filter-label"),value_label:a,value:[r,t],type:d})}}});else if(i.find("input.um-timepicker-filter").length)d="timepicker",i.find("input.um-timepicker-filter").each(function(){if("to"!==jQuery(this).data("range")){var e=jQuery(this).data("filter_name"),r=um_get_data_for_directory(s,"filter_"+e+"_from"),t=um_get_data_for_directory(s,"filter_"+e+"_to");if(void 0!==r||void 0!==t){var a,i=jQuery(this).val(),m=s.find('input.um-timepicker-filter[data-range="to"][data-filter_name="'+e+'"]').val();i===m?a=m:""!==i&&""!==m?a=i+" - "+m:""===i?a="before "+m:""===m&&(a="since "+i),_.push({name:e,label:jQuery(this).data("filter-label"),value_label:a,value:[r,t],type:d})}}});else if(i.find("select").length){d="select",t=i.find("select").attr("name"),a=i.find("select").data("placeholder"),m=void 0===(m=um_get_data_for_directory(s,"filter_"+t))?[]:m.split("||"),jQuery.each(m,function(e){var r=i.find('select option[value="'+m[e]+'"]').data("value_label");_.push({name:t,label:a,value_label:r,value:m[e],type:d})})}else if(i.find('input[type="text"]').length){var m;d="text",t=i.find('input[type="text"]').attr("name"),a=i.find('input[type="text"]').attr("placeholder"),void 0===(m=um_get_data_for_directory(s,"filter_"+t))&&(m=""),""!=m&&_.push({name:t,label:a,value_label:m,value:m,type:d})}else if(i.find("div.ui-slider").length){d="slider",t=i.find("div.ui-slider").data("field_name");var e=um_get_data_for_directory(s,"filter_"+t+"_from"),r=um_get_data_for_directory(s,"filter_"+t+"_to");if(void 0===e&&void 0===r)return;a=i.find("div.um-slider-range").data("label");var u=i.find("div.um-slider-range").data("placeholder").replace("{min_range}",e).replace("{max_range}",r).replace("{field_label}",i.find("div.um-slider-range").data("label"));_.push({name:t,label:a,value_label:u,value:[e,r],type:d})}}),_}function um_change_tag(e){var r=um_get_filters_data(e);e.find(".um-members-filter-tag").remove();var t=e.find(".um-filtered-line");if(t.length){var a=wp.template("um-members-filtered-line");t.prepend(a({filters:r})),0===e.find(".um-members-filter-remove").length?(e.find(".um-clear-filters").hide(),e.find(".um-clear-filters").parents(".um-member-directory-header-row").addClass("um-header-row-invisible")):(e.find(".um-clear-filters").show(),e.find(".um-clear-filters").parents(".um-member-directory-header-row").removeClass("um-header-row-invisible"))}}function um_run_search(e){if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=um_get_data_for_directory(e,"search");if((t=e.find(".um-search-line").val())===r||""===t&&void 0===r)um_members_hide_preloader(e);else{if(e.data("general_search",t),um_set_url_from_data(e,"search",t),e.data("page",1),um_set_url_from_data(e,"page",""),1===e.data("must-search")){var t=um_get_search(e);if(0===e.find(".um-members-filter-remove").length&&!t)return e.data("searched",0),e.find(".um-members-grid, .um-members-list").remove(),e.find(".um-member-directory-sorting-options").prop("disabled",!0),e.find(".um-member-directory-view-type").addClass("um-disabled"),void um_members_hide_preloader(e)}e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"),um_ajax_get_members(e)}}}jQuery(document.body).ready(function(){jQuery(".um-directory .um-search-filter select").each(function(){1===jQuery(this).find("option:not(:disabled)").length&&jQuery(this).prop("disabled",!0),jQuery(this).select2("destroy").select2()}),jQuery(document.body).on("mouseover",".um-directory .um-member-directory-view-type",function(){if(!jQuery(this).hasClass("um-disabled")){var e=jQuery(this).find(".um-member-directory-view-type-a:visible");e.hide(),e.next().length?e.next().show().tipsy("show"):jQuery(this).find(".um-member-directory-view-type-a:first").show().tipsy("show")}}).on("mouseout",".um-directory .um-member-directory-view-type",function(){jQuery(this).hasClass("um-disabled")||(jQuery(this).find(".um-member-directory-view-type-a").hide().tipsy("hide"),jQuery(this).find('.um-member-directory-view-type-a[data-type="'+jQuery(this).parents(".um-directory").data("view_type")+'"]').show())}),jQuery(document.body).on("click",".um-directory .um-member-directory-view-type-a",function(){var e=jQuery(this).parents(".um-directory");if(um_is_directory_busy(e))return!1;var r=jQuery(this),t=r.parents(".um-member-directory-view-type");if(!t.hasClass("um-disabled")){um_members_show_preloader(e);var a=t.find(".um-member-directory-view-type-a:visible");a.hide(),a.next().length?a.next().show().tipsy("show"):t.find(".um-member-directory-view-type-a:first").show().tipsy("show");var i=um_member_directory_last_data[um_members_get_hash(e)];if(null!==i){var m=r.data("type");um_set_url_from_data(e,"view_type",m),e.data("view_type",m),um_build_template(e,i)}um_members_hide_preloader(e)}}),jQuery(document.body).on("click",".um-directory .um-do-search",function(){um_run_search(jQuery(this).parents(".um-directory"))}),jQuery(document.body).on("keypress",".um-directory .um-search-line",function(e){13===e.which&&um_run_search(jQuery(this).parents(".um-directory"))}),jQuery(document.body).on("click",".um-directory .um-member-directory-sorting-a .um-new-dropdown li a",function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)&&1!==jQuery(this).data("selected")){um_members_show_preloader(e);var r=jQuery(this).data("value");e.data("sorting",r),um_set_url_from_data(e,"sort",r),um_ajax_get_members(e),jQuery(this).parents(".um-new-dropdown").find("a").data("selected",0).prop("data-selected",0).attr("data-selected",0),jQuery(this).data("selected",1).prop("data-selected",1).attr("data-selected",1),jQuery(this).parents(".um-member-directory-sorting-a").find("> a").html(jQuery(this).html())}}),jQuery(document.body).on("click",".um-directory .pagi:not(.current)",function(){if(!jQuery(this).hasClass("disabled")){var e,r=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(r))um_members_show_preloader(r),1===(e="first"===jQuery(this).data("page")?1:"prev"===jQuery(this).data("page")?1*r.data("page")-1:"next"===jQuery(this).data("page")?1*r.data("page")+1:"last"===jQuery(this).data("page")?parseInt(r.data("total_pages")):parseInt(jQuery(this).data("page")))?(r.find('.pagi[data-page="first"], .pagi[data-page="prev"]').addClass("disabled"),r.find('.pagi[data-page="prev"], .pagi[data-page="last"]').removeClass("disabled")):(e===parseInt(r.data("total_pages"))?r.find('.pagi[data-page="prev"], .pagi[data-page="last"]').addClass("disabled"):r.find('.pagi[data-page="prev"], .pagi[data-page="last"]').removeClass("disabled"),r.find('.pagi[data-page="first"], .pagi[data-page="prev"]').removeClass("disabled")),r.find(".pagi").removeClass("current"),r.find('.pagi[data-page="'+e+'"]').addClass("current"),r.data("page",e),um_set_url_from_data(r,"page",1===e?"":e),um_ajax_get_members(r)}}),jQuery(document.body).on("change",".um-directory .um-members-pagi-dropdown",function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=jQuery(this).val();e.find(".pagi").removeClass("current"),e.find('.pagi[data-page="'+r+'"]').addClass("current"),e.data("page",r),um_set_url_from_data(e,"page",1===r?"":r),um_ajax_get_members(e)}}),jQuery(document.body).on("click",".um-directory .um-members.um-members-list .um-member-more a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member");return r.find(".um-member-more").hide(),r.find(".um-member-meta-main").slideDown(),r.find(".um-member-less").fadeIn(),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-list .um-member-less a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member");return r.find(".um-member-less").hide(),r.find(".um-member-meta-main").slideUp(),r.find(".um-member-more").fadeIn(),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-grid .um-member-more a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member"),t=jQuery(this).parents(".um-members");return r.find(".um-member-more").hide(),r.find(".um-member-meta").slideDown(function(){UM_Member_Grid(t)}),r.find(".um-member-less").fadeIn(),setTimeout(function(){UM_Member_Grid(t)},100),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-grid .um-member-less a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member"),t=jQuery(this).parents(".um-members");return r.find(".um-member-less").hide(),r.find(".um-member-meta").slideUp(function(){r.find(".um-member-more").fadeIn(),UM_Member_Grid(t)}),!1}),jQuery(".um-member-directory-filters-a").click(function(){var e=jQuery(this),r=e.parents(".um-directory").find(".um-search");r.is(":visible")?r.slideUp(250,function(){e.toggleClass("um-member-directory-filters-visible"),r.parents(".um-member-directory-header-row").toggleClass("um-header-row-invisible")}):r.slideDown({duration:250,start:function(){jQuery(this).css({display:"grid"}),e.toggleClass("um-member-directory-filters-visible"),r.parents(".um-member-directory-header-row").toggleClass("um-header-row-invisible")}})}),jQuery(document.body).on("change",".um-directory .um-search-filter select",function(){if(""!==jQuery(this).val()){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=jQuery(this).prop("name"),t=um_get_data_for_directory(e,"filter_"+r);t=void 0===t?[]:t.split("||"),-1===jQuery.inArray(jQuery(this).val(),t)&&(t.push(jQuery(this).val()),um_set_url_from_data(e,"filter_"+r,t=t.join("||")),e.data("page",1),um_set_url_from_data(e,"page","")),jQuery(this).find('option[value="'+jQuery(this).val()+'"]').prop("disabled",!0).hide(),1===jQuery(this).find("option:not(:disabled)").length&&jQuery(this).prop("disabled",!0),jQuery(this).select2("destroy").select2(),jQuery(this).val("").trigger("change"),um_ajax_get_members(e),um_change_tag(e),e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled")}}}),jQuery(document.body).on("blur",'.um-directory .um-search-filter.um-text-filter-type input[type="text"]',function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)){var r=jQuery(this).val(),t=jQuery(this).prop("name"),a=um_get_data_for_directory(e,"filter_"+t);void 0===a&&(a=""),r!==a&&(um_members_show_preloader(e),um_set_url_from_data(e,"filter_"+t,r),e.data("page",1),um_set_url_from_data(e,"page",""),um_ajax_get_members(e),um_change_tag(e),e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"))}}),jQuery(document.body).on("keypress",'.um-directory .um-search-filter.um-text-filter-type input[type="text"]',function(e){if(13===e.which){var r=jQuery(this).parents(".um-directory");if(um_is_directory_busy(r))return;var t=jQuery(this).val(),a=jQuery(this).prop("name"),i=um_get_data_for_directory(r,"filter_"+a);if(void 0===i&&(i=""),t===i)return;um_members_show_preloader(r),um_set_url_from_data(r,"filter_"+a,t),r.data("page",1),um_set_url_from_data(r,"page",""),um_ajax_get_members(r),um_change_tag(r),r.data("searched",1),r.find(".um-member-directory-sorting-options").prop("disabled",!1),r.find(".um-member-directory-view-type").removeClass("um-disabled")}}),jQuery(document.body).on("click",".um-directory .um-members-filter-remove",function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)&&e){um_members_show_preloader(e);var r=jQuery(this).data("value"),t=jQuery(this).data("name"),a=jQuery(this).data("type");if("text"===a)um_set_url_from_data(e,"filter_"+t,""),jQuery('.um-search-filter input[name="'+t+'"]').val("");else if("select"===a){var i=um_get_data_for_directory(e,"filter_"+t);i=void 0===i?[]:i.split("||"),-1!==jQuery.inArray(r.toString(),i)&&(i=jQuery.grep(i,function(e){return e!==r.toString()})),i.length||(i=""),um_set_url_from_data(e,"filter_"+t,i);var m=jQuery('.um-search-filter select[name="'+t+'"]');m.find('option[value="'+r+'"]').prop("disabled",!1).show(),1d.data("total_pages")&&(r=d.data("total_pages")),d.data("page",r).attr("data-page",r),d.find(".um-member-directory-sorting").length){var t=um_get_data_for_directory(d,"sort");void 0===t&&(t=d.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]').find('a[data-default="1"]').data("value")),d.data("sorting",t);var a=d.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]');a.find("a").data("selected",0).prop("data-selected",0).attr("data-selected",0),a.find('a[data-value="'+t+'"]').data("selected",1).prop("data-selected",1).attr("data-selected",1),d.find(".um-member-directory-sorting-a").find("> a").html(a.find('a[data-value="'+t+'"]').html())}if(d.find(".um-member-directory-view-type").length){var i=um_get_data_for_directory(d,"view_type");void 0===i&&(i=d.find('.um-member-directory-view-type-a[data-default="1"]').data("type")),d.data("view_type",i),d.find(".um-member-directory-view-type .um-member-directory-view-type-a").hide(),d.find('.um-member-directory-view-type .um-member-directory-view-type-a[data-type="'+i+'"]').show()}if(d.find(".um-datepicker-filter").each(function(){var e=jQuery(this),r=e.pickadate("picker"),t=e.data("filter_name"),a=e.data("range"),i=um_get_data_for_directory(d,"filter_"+t+"_"+a);void 0!==i?r.set("select",1e3*i):r.clear()}),d.find(".um-slider").each(function(){var e=jQuery(this),r=e.data("field_name"),t=um_get_data_for_directory(d,"filter_"+r+"_from"),a=um_get_data_for_directory(d,"filter_"+r+"_to");void 0===t&&(t=e.data("min")),t=parseInt(t),void 0===a&&(a=e.data("max")),a=parseInt(a),e.slider("values",[t,a]),um_set_range_label(e)}),d.find(".um-timepicker-filter").each(function(){var e=jQuery(this),r=e.pickatime("picker"),t=e.data("filter_name"),a=e.data("range"),i=um_get_data_for_directory(d,"filter_"+t+"_"+a);if(void 0!==i){var m=i.split(":");r.set("select",60*m[0])}else r.clear()}),1===d.data("must-search")){var m=um_get_search(d);if(!um_get_filters_data(d).length&&!m)return d.data("searched",0),void um_members_hide_preloader(d);d.data("searched",1)}um_ajax_get_members(d),um_change_tag(d)})})}); \ No newline at end of file +var um_members_directory_busy=[],um_member_directories=[],um_member_directory_last_data=[];function um_parse_current_url(){var t={},a=window.location.search.substring(1).split("&");return jQuery.each(a,function(e){var r=a[e].split("=");t[r[0]]=r[1]}),t}function um_get_data_for_directory(e,r){var t=um_members_get_hash(e),a={},i=um_parse_current_url();if(jQuery.each(i,function(e){-1!==e.indexOf("_"+t)&&""!==i[e]&&(a[e.replace("_"+t,"")]=i[e])}),r){if(void 0!==a[r])try{a[r]=decodeURIComponent(a[r])}catch(e){console.error(e)}return a[r]}return a}function um_set_url_from_data(e,r,t){var a=um_members_get_hash(e),i=um_get_data_for_directory(e),m={};jQuery.isArray(t)?(jQuery.each(t,function(e){t[e]=encodeURIComponent(t[e])}),t=t.join("||")):jQuery.isNumeric(t)||(t=t.split("||"),jQuery.each(t,function(e){t[e]=encodeURIComponent(t[e])}),t=t.join("||")),""!==t&&(m[r+"_"+a]=t),jQuery.each(i,function(e){r===e?""!==t&&(m[e+"_"+a]=t):m[e+"_"+a]=i[e]}),jQuery.each(um_member_directories,function(e){var r=um_member_directories[e];if(r!==a){var t=um_get_data_for_directory(jQuery('.um-directory[data-hash="'+r+'"]'));jQuery.each(t,function(e){m[e+"_"+r]=t[e]})}});var d=[];jQuery.each(m,function(e){d.push(e+"="+m[e])});var u="?"+(d=wp.hooks.applyFilters("um_member_directory_url_attrs",d)).join("&");"?"===u&&(u=""),window.history.pushState("string","UM Member Directory",window.location.origin+window.location.pathname+u)}function um_members_get_hash(e){return e.data("hash")}function um_is_directory_busy(e){var r=um_members_get_hash(e);return void 0!==um_members_directory_busy[r]&&um_members_directory_busy[r]}function um_members_show_preloader(e){um_members_directory_busy[um_members_get_hash(e)]=!0,e.find(".um-members-overlay").show()}function um_members_hide_preloader(e){um_members_directory_busy[um_members_get_hash(e)]=!1,e.find(".um-members-overlay").hide()}function um_set_range_label(e,r){var t=e.siblings(".um-slider-range").data("placeholder");t=r?t.replace("{min_range}",r.values[0]).replace("{max_range}",r.values[1]).replace("{field_label}",e.siblings(".um-slider-range").data("label")):t.replace("{min_range}",e.slider("values",0)).replace("{max_range}",e.slider("values",1)).replace("{field_label}",e.siblings(".um-slider-range").data("label")),e.siblings(".um-slider-range").html(t),e.siblings(".um_range_min").val(e.slider("values",0)),e.siblings(".um_range_max").val(e.slider("values",1))}function um_get_search(e){return e.find(".um-search-line").length?e.find(".um-search-line").val():""}function um_get_sort(e){return e.data("sorting")}function um_get_current_page(e){var r=e.data("page");return r&&void 0!==r||(r=1),r}function um_time_convert(e,r){var t=Math.floor(e/60),a=e%60;return 60<=a&&(a=0,24<=(t+=1)&&(t=0)),a<10&&(a="0"+a),t+":"+a}function um_ajax_get_members(s,t){var a=um_members_get_hash(s),e=um_get_current_page(s),r=um_get_search(s),i=um_get_sort(s),m=-(new Date).getTimezoneOffset()/60,_={directory_id:a,page:e,search:r,sorting:i,gmt_offset:m,post_refferer:s.data("base-post"),nonce:um_scripts.nonce};s.find(".um-search-filter").length&&s.find(".um-search-filter").each(function(){var e=jQuery(this);if(e.find(".um-slider").length){var r=e.find(".um-slider").data("field_name"),t=um_get_data_for_directory(s,"filter_"+r+"_from"),a=um_get_data_for_directory(s,"filter_"+r+"_to");void 0===t&&void 0===a||(_[r]=[t,a])}else if(e.find(".um-datepicker-filter").length){r=e.find(".um-datepicker-filter").data("filter_name"),t=um_get_data_for_directory(s,"filter_"+r+"_from"),a=um_get_data_for_directory(s,"filter_"+r+"_to");void 0===t&&void 0===a||(_[r]=[t,a])}else if(e.find(".um-timepicker-filter").length){r=e.find(".um-timepicker-filter").data("filter_name"),t=um_get_data_for_directory(s,"filter_"+r+"_from"),a=um_get_data_for_directory(s,"filter_"+r+"_to");if(void 0!==t)(i=1*(t=t.split(":"))[0])<10&&(i="0"+i),(d=1*t[1])<10&&(d="0"+d),t=i+":"+d+":00";if(void 0!==a){var i,m=a.split(":"),d=1*m[1];(i=1*m[0])<10&&(i="0"+i),d<10&&(d="0"+d),a=i+":"+d+":59"}void 0===t&&void 0===a||(_[r]=[t,a])}else if(e.find("select").length){r=e.find("select").attr("name");void 0!==(u=um_get_data_for_directory(s,"filter_"+r))&&(_[r]=u.split("||"))}else{var u;r=e.find('input[type="text"]').attr("name");void 0!==(u=um_get_data_for_directory(s,"filter_"+r))&&(_[r]=u)}}),_=wp.hooks.applyFilters("um_member_directory_filter_request",_),wp.ajax.send("um_get_members",{data:_,success:function(e){um_member_directory_last_data[a]=e,um_build_template(s,e);var r=wp.template("um-members-pagination");s.find(".um-members-pagination-box").html(r(e)),s.data("total_pages",e.pagination.total_pages),e.pagination.total_pages?(s.find(".um-member-directory-sorting-options").prop("disabled",!1),s.find(".um-member-directory-view-type").removeClass("um-disabled")):(s.find(".um-member-directory-sorting-options").prop("disabled",!0),s.find(".um-member-directory-view-type").addClass("um-disabled")),jQuery(document).trigger("um_members_rendered",t),um_init_new_dropdown(),um_members_hide_preloader(s)},error:function(e){console.log(e),um_members_hide_preloader(s)}})}function um_build_template(e,r){var t=e.data("view_type"),a=wp.template("um-member-"+t+"-"+um_members_get_hash(e));e.find(".um-members-grid, .um-members-list").remove(),e.find(".um-members-wrapper").prepend(a(r.users));var i=wp.template("um-members-header");e.find(".um-members-intro").remove(),void 0!==r.is_search&&r.is_search&&e.find(".um-members-wrapper").prepend(i(r)),e.addClass("um-loaded"),e.find(".um-members.um-members-grid").length&&UM_Member_Grid(e.find(".um-members.um-members-grid")),jQuery(document).trigger("um_build_template",[e,r]),jQuery(window).trigger("resize"),init_tipsy()}function UM_Member_Grid(e){e.find(".um-member").length&&e.imagesLoaded(function(){e.masonry({itemSelector:".um-member",columnWidth:".um-member",gutter:".um-gutter-sizer"}).on("layoutComplete",function(e,r){jQuery(document).trigger("um_grid_initialized",[e,r])})})}function um_get_filters_data(s){var _=[];return s.find(".um-search-filter").each(function(){var t,a,d,i=jQuery(this);if(i.find("input.um-datepicker-filter").length)d="datepicker",i.find("input.um-datepicker-filter").each(function(){if("to"!==jQuery(this).data("range")){var e=jQuery(this).data("filter_name"),r=um_get_data_for_directory(s,"filter_"+e+"_from"),t=um_get_data_for_directory(s,"filter_"+e+"_to");if(void 0!==r||void 0!==t){var a,i=jQuery(this).val(),m=s.find('input.um-datepicker-filter[data-range="to"][data-filter_name="'+e+'"]').val();i===m?a=m:""!==i&&""!==m?a=i+" - "+m:""===i?a="before "+m:""===m&&(a="since "+i),_.push({name:e,label:jQuery(this).data("filter-label"),value_label:a,value:[r,t],type:d})}}});else if(i.find("input.um-timepicker-filter").length)d="timepicker",i.find("input.um-timepicker-filter").each(function(){if("to"!==jQuery(this).data("range")){var e=jQuery(this).data("filter_name"),r=um_get_data_for_directory(s,"filter_"+e+"_from"),t=um_get_data_for_directory(s,"filter_"+e+"_to");if(void 0!==r||void 0!==t){var a,i=jQuery(this).val(),m=s.find('input.um-timepicker-filter[data-range="to"][data-filter_name="'+e+'"]').val();i===m?a=m:""!==i&&""!==m?a=i+" - "+m:""===i?a="before "+m:""===m&&(a="since "+i),_.push({name:e,label:jQuery(this).data("filter-label"),value_label:a,value:[r,t],type:d})}}});else if(i.find("select").length){d="select",t=i.find("select").attr("name"),a=i.find("select").data("placeholder"),m=void 0===(m=um_get_data_for_directory(s,"filter_"+t))?[]:m.split("||"),jQuery.each(m,function(e){var r=i.find('select option[value="'+m[e]+'"]').data("value_label");_.push({name:t,label:a,value_label:r,value:m[e],type:d})})}else if(i.find('input[type="text"]').length){var m;d="text",t=i.find('input[type="text"]').attr("name"),a=i.find('input[type="text"]').attr("placeholder"),void 0===(m=um_get_data_for_directory(s,"filter_"+t))&&(m=""),""!=m&&_.push({name:t,label:a,value_label:m,value:m,type:d})}else if(i.find("div.ui-slider").length){d="slider",t=i.find("div.ui-slider").data("field_name");var e=um_get_data_for_directory(s,"filter_"+t+"_from"),r=um_get_data_for_directory(s,"filter_"+t+"_to");if(void 0===e&&void 0===r)return;a=i.find("div.um-slider-range").data("label");var u=i.find("div.um-slider-range").data("placeholder").replace("{min_range}",e).replace("{max_range}",r).replace("{field_label}",i.find("div.um-slider-range").data("label"));_.push({name:t,label:a,value_label:u,value:[e,r],type:d})}}),_}function um_change_tag(e){var r=um_get_filters_data(e);e.find(".um-members-filter-tag").remove();var t=e.find(".um-filtered-line");if(t.length){var a=wp.template("um-members-filtered-line");t.prepend(a({filters:r})),0===e.find(".um-members-filter-remove").length?(e.find(".um-clear-filters").hide(),e.find(".um-clear-filters").parents(".um-member-directory-header-row").addClass("um-header-row-invisible")):(e.find(".um-clear-filters").show(),e.find(".um-clear-filters").parents(".um-member-directory-header-row").removeClass("um-header-row-invisible"))}}function um_run_search(e){if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=um_get_data_for_directory(e,"search");if((a=e.find(".um-search-line").val())===r||""===a&&void 0===r)um_members_hide_preloader(e);else{e.data("general_search",a),um_set_url_from_data(e,"search",a),e.data("page",1),um_set_url_from_data(e,"page","");var t=!1;if(!(t=wp.hooks.applyFilters("um_member_directory_ignore_after_search",t)))if(1===e.data("must-search")){var a=um_get_search(e);if(0===e.find(".um-members-filter-remove").length&&!a)return e.data("searched",0),e.find(".um-members-grid, .um-members-list").remove(),e.find(".um-member-directory-sorting-options").prop("disabled",!0),e.find(".um-member-directory-view-type").addClass("um-disabled"),void um_members_hide_preloader(e)}e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"),um_ajax_get_members(e)}}}jQuery(document.body).ready(function(){jQuery(".um-directory .um-search-filter select").each(function(){1===jQuery(this).find("option:not(:disabled)").length&&jQuery(this).prop("disabled",!0),jQuery(this).select2("destroy").select2()}),jQuery(document.body).on("mouseover",".um-directory .um-member-directory-view-type",function(){if(!jQuery(this).hasClass("um-disabled")){var e=jQuery(this).find(".um-member-directory-view-type-a:visible");e.hide(),e.next().length?e.next().show().tipsy("show"):jQuery(this).find(".um-member-directory-view-type-a:first").show().tipsy("show")}}).on("mouseout",".um-directory .um-member-directory-view-type",function(){jQuery(this).hasClass("um-disabled")||(jQuery(this).find(".um-member-directory-view-type-a").hide().tipsy("hide"),jQuery(this).find('.um-member-directory-view-type-a[data-type="'+jQuery(this).parents(".um-directory").data("view_type")+'"]').show())}),jQuery(document.body).on("click",".um-directory .um-member-directory-view-type-a",function(){var e=jQuery(this).parents(".um-directory");if(um_is_directory_busy(e))return!1;var r=jQuery(this),t=r.parents(".um-member-directory-view-type");if(!t.hasClass("um-disabled")){um_members_show_preloader(e);var a=t.find(".um-member-directory-view-type-a:visible");a.hide(),a.next().length?a.next().show().tipsy("show"):t.find(".um-member-directory-view-type-a:first").show().tipsy("show");var i=um_member_directory_last_data[um_members_get_hash(e)];if(null!==i){var m=r.data("type");um_set_url_from_data(e,"view_type",m),e.data("view_type",m),um_build_template(e,i)}um_members_hide_preloader(e)}}),jQuery(document.body).on("click",".um-directory .um-do-search",function(){um_run_search(jQuery(this).parents(".um-directory"))}),jQuery(document.body).on("keypress",".um-directory .um-search-line",function(e){13===e.which&&um_run_search(jQuery(this).parents(".um-directory"))}),jQuery(document.body).on("click",".um-directory .um-member-directory-sorting-a .um-new-dropdown li a",function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)&&1!==jQuery(this).data("selected")){um_members_show_preloader(e);var r=jQuery(this).data("value");e.data("sorting",r),um_set_url_from_data(e,"sort",r),um_ajax_get_members(e),jQuery(this).parents(".um-new-dropdown").find("a").data("selected",0).prop("data-selected",0).attr("data-selected",0),jQuery(this).data("selected",1).prop("data-selected",1).attr("data-selected",1),jQuery(this).parents(".um-member-directory-sorting-a").find("> a").html(jQuery(this).html())}}),jQuery(document.body).on("click",".um-directory .pagi:not(.current)",function(){if(!jQuery(this).hasClass("disabled")){var e,r=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(r))um_members_show_preloader(r),1===(e="first"===jQuery(this).data("page")?1:"prev"===jQuery(this).data("page")?1*r.data("page")-1:"next"===jQuery(this).data("page")?1*r.data("page")+1:"last"===jQuery(this).data("page")?parseInt(r.data("total_pages")):parseInt(jQuery(this).data("page")))?(r.find('.pagi[data-page="first"], .pagi[data-page="prev"]').addClass("disabled"),r.find('.pagi[data-page="prev"], .pagi[data-page="last"]').removeClass("disabled")):(e===parseInt(r.data("total_pages"))?r.find('.pagi[data-page="prev"], .pagi[data-page="last"]').addClass("disabled"):r.find('.pagi[data-page="prev"], .pagi[data-page="last"]').removeClass("disabled"),r.find('.pagi[data-page="first"], .pagi[data-page="prev"]').removeClass("disabled")),r.find(".pagi").removeClass("current"),r.find('.pagi[data-page="'+e+'"]').addClass("current"),r.data("page",e),um_set_url_from_data(r,"page",1===e?"":e),um_ajax_get_members(r)}}),jQuery(document.body).on("change",".um-directory .um-members-pagi-dropdown",function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=jQuery(this).val();e.find(".pagi").removeClass("current"),e.find('.pagi[data-page="'+r+'"]').addClass("current"),e.data("page",r),um_set_url_from_data(e,"page",1===r?"":r),um_ajax_get_members(e)}}),jQuery(document.body).on("click",".um-directory .um-members.um-members-list .um-member-more a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member");return r.find(".um-member-more").hide(),r.find(".um-member-meta-main").slideDown(),r.find(".um-member-less").fadeIn(),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-list .um-member-less a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member");return r.find(".um-member-less").hide(),r.find(".um-member-meta-main").slideUp(),r.find(".um-member-more").fadeIn(),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-grid .um-member-more a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member"),t=jQuery(this).parents(".um-members");return r.find(".um-member-more").hide(),r.find(".um-member-meta").slideDown(function(){UM_Member_Grid(t)}),r.find(".um-member-less").fadeIn(),setTimeout(function(){UM_Member_Grid(t)},100),!1}),jQuery(document.body).on("click",".um-directory .um-members.um-members-grid .um-member-less a",function(e){e.preventDefault();var r=jQuery(this).parents(".um-member"),t=jQuery(this).parents(".um-members");return r.find(".um-member-less").hide(),r.find(".um-member-meta").slideUp(function(){r.find(".um-member-more").fadeIn(),UM_Member_Grid(t)}),!1}),jQuery(".um-member-directory-filters-a").click(function(){var e=jQuery(this),r=e.parents(".um-directory").find(".um-search");r.is(":visible")?r.slideUp(250,function(){e.toggleClass("um-member-directory-filters-visible"),r.parents(".um-member-directory-header-row").toggleClass("um-header-row-invisible")}):r.slideDown({duration:250,start:function(){jQuery(this).css({display:"grid"}),e.toggleClass("um-member-directory-filters-visible"),r.parents(".um-member-directory-header-row").toggleClass("um-header-row-invisible")}})}),jQuery(document.body).on("change",".um-directory .um-search-filter select",function(){if(""!==jQuery(this).val()){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)){um_members_show_preloader(e);var r=jQuery(this).prop("name"),t=um_get_data_for_directory(e,"filter_"+r);t=void 0===t?[]:t.split("||"),-1===jQuery.inArray(jQuery(this).val(),t)&&(t.push(jQuery(this).val()),um_set_url_from_data(e,"filter_"+r,t=t.join("||")),e.data("page",1),um_set_url_from_data(e,"page","")),jQuery(this).find('option[value="'+jQuery(this).val()+'"]').prop("disabled",!0).hide(),1===jQuery(this).find("option:not(:disabled)").length&&jQuery(this).prop("disabled",!0),jQuery(this).select2("destroy").select2(),jQuery(this).val("").trigger("change"),um_ajax_get_members(e),um_change_tag(e),e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled")}}}),jQuery(document.body).on("blur",'.um-directory .um-search-filter.um-text-filter-type input[type="text"]',function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)){var r=jQuery(this).val(),t=jQuery(this).prop("name"),a=um_get_data_for_directory(e,"filter_"+t);void 0===a&&(a=""),r!==a&&(um_members_show_preloader(e),um_set_url_from_data(e,"filter_"+t,r),e.data("page",1),um_set_url_from_data(e,"page",""),um_ajax_get_members(e),um_change_tag(e),e.data("searched",1),e.find(".um-member-directory-sorting-options").prop("disabled",!1),e.find(".um-member-directory-view-type").removeClass("um-disabled"))}}),jQuery(document.body).on("keypress",'.um-directory .um-search-filter.um-text-filter-type input[type="text"]',function(e){if(13===e.which){var r=jQuery(this).parents(".um-directory");if(um_is_directory_busy(r))return;var t=jQuery(this).val(),a=jQuery(this).prop("name"),i=um_get_data_for_directory(r,"filter_"+a);if(void 0===i&&(i=""),t===i)return;um_members_show_preloader(r),um_set_url_from_data(r,"filter_"+a,t),r.data("page",1),um_set_url_from_data(r,"page",""),um_ajax_get_members(r),um_change_tag(r),r.data("searched",1),r.find(".um-member-directory-sorting-options").prop("disabled",!1),r.find(".um-member-directory-view-type").removeClass("um-disabled")}}),jQuery(document.body).on("click",".um-directory .um-members-filter-remove",function(){var e=jQuery(this).parents(".um-directory");if(!um_is_directory_busy(e)&&e){um_members_show_preloader(e);var r=jQuery(this).data("value"),t=jQuery(this).data("name"),a=jQuery(this).data("type");if("text"===a)um_set_url_from_data(e,"filter_"+t,""),jQuery('.um-search-filter input[name="'+t+'"]').val("");else if("select"===a){var i=um_get_data_for_directory(e,"filter_"+t);i=void 0===i?[]:i.split("||"),-1!==jQuery.inArray(r.toString(),i)&&(i=jQuery.grep(i,function(e){return e!==r.toString()})),i.length||(i=""),um_set_url_from_data(e,"filter_"+t,i);var m=jQuery('.um-search-filter select[name="'+t+'"]');m.find('option[value="'+r+'"]').prop("disabled",!1).show(),1d.data("total_pages")&&(r=d.data("total_pages")),d.data("page",r).attr("data-page",r),d.find(".um-member-directory-sorting").length){var t=um_get_data_for_directory(d,"sort");void 0===t&&(t=d.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]').find('a[data-default="1"]').data("value")),d.data("sorting",t);var a=d.find('.um-new-dropdown[data-element=".um-member-directory-sorting-a"]');a.find("a").data("selected",0).prop("data-selected",0).attr("data-selected",0),a.find('a[data-value="'+t+'"]').data("selected",1).prop("data-selected",1).attr("data-selected",1),d.find(".um-member-directory-sorting-a").find("> a").html(a.find('a[data-value="'+t+'"]').html())}if(d.find(".um-member-directory-view-type").length){var i=um_get_data_for_directory(d,"view_type");void 0===i&&(i=d.find('.um-member-directory-view-type-a[data-default="1"]').data("type")),d.data("view_type",i),d.find(".um-member-directory-view-type .um-member-directory-view-type-a").hide(),d.find('.um-member-directory-view-type .um-member-directory-view-type-a[data-type="'+i+'"]').show()}d.find(".um-datepicker-filter").each(function(){var e=jQuery(this),r=e.pickadate("picker"),t=e.data("filter_name"),a=e.data("range"),i=um_get_data_for_directory(d,"filter_"+t+"_"+a);void 0!==i?r.set("select",1e3*i):r.clear()}),d.find(".um-slider").each(function(){var e=jQuery(this),r=e.data("field_name"),t=um_get_data_for_directory(d,"filter_"+r+"_from"),a=um_get_data_for_directory(d,"filter_"+r+"_to");void 0===t&&(t=e.data("min")),t=parseInt(t),void 0===a&&(a=e.data("max")),a=parseInt(a),e.slider("values",[t,a]),um_set_range_label(e)}),d.find(".um-timepicker-filter").each(function(){var e=jQuery(this),r=e.pickatime("picker"),t=e.data("filter_name"),a=e.data("range"),i=um_get_data_for_directory(d,"filter_"+t+"_"+a);if(void 0!==i){var m=i.split(":");r.set("select",60*m[0])}else r.clear()});var m=!1;if(!(m=wp.hooks.applyFilters("um_member_directory_ignore_after_search",m))&&1===d.data("must-search")){var u=um_get_search(d);if(!um_get_filters_data(d).length&&!u)return d.data("searched",0),void um_members_hide_preloader(d);d.data("searched",1)}um_ajax_get_members(d),um_change_tag(d)})})}); \ No newline at end of file diff --git a/includes/admin/assets/js/um-admin-modal.js b/includes/admin/assets/js/um-admin-modal.js index a74eb8bd..cec5ee6c 100644 --- a/includes/admin/assets/js/um-admin-modal.js +++ b/includes/admin/assets/js/um-admin-modal.js @@ -387,13 +387,13 @@ jQuery(document).ready(function() { jQuery(document.body).on('click', '#UM_fonticons a.um-admin-modal-back:not(.um-admin-modal-cancel)', function(){ var v_id = ''; var icon_selected = jQuery(this).attr('data-code'); - if (icon_selected != ''){ + if ( icon_selected != '' ) { if ( jQuery(this).attr('data-modal') ) { v_id = '#' + jQuery(this).attr('data-modal'); } else { v_id = '.postbox'; } - jQuery( v_id ).find('input#_icon,input#_um_icon,input#notice__um_icon').val( icon_selected ); + jQuery( v_id ).find('input#_icon,input#_um_icon,input#notice__um_icon,input#um_profile_tab__icon').val( icon_selected ); jQuery( v_id ).find('span.um-admin-icon-value').html(''); jQuery( v_id ).find('.um-admin-icon-clear').show(); } From 772089fcf34e6a5abf8b420be1e6313863f56d76 Mon Sep 17 00:00:00 2001 From: Champ Camba Date: Wed, 11 Dec 2019 18:20:27 +0800 Subject: [PATCH 5/9] Fix missing directory filters when dropdown options has trailing slashes --- includes/core/class-member-directory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php index f0a5a3e1..37c1b57c 100644 --- a/includes/core/class-member-directory.php +++ b/includes/core/class-member-directory.php @@ -546,7 +546,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { } if ( $attrs['metakey'] != 'role_select' && empty( $custom_dropdown ) ) { - $attrs['options'] = array_intersect( $attrs['options'], $values_array ); + $attrs['options'] = array_intersect( array_map( 'stripslashes', $attrs['options'] ), $values_array ); } elseif ( ! empty( $custom_dropdown ) ) { $attrs['options'] = array_intersect_key( $attrs['options'], array_flip( $values_array ) ); } else { From 1eac16f6203033a16cab1db9e70d8aa3f6f08add Mon Sep 17 00:00:00 2001 From: nikitasinelnikov Date: Wed, 11 Dec 2019 12:34:17 +0200 Subject: [PATCH 6/9] - fixed JS results template; - fixed member directory pagination settings; --- assets/css/um-members.css | 2 +- assets/sass/um-members.sass | 2 +- includes/core/class-member-directory.php | 33 ++++++++++++++++++++++++ readme.txt | 6 +++++ templates/members-header.php | 4 +-- ultimate-member.php | 2 +- 6 files changed, 44 insertions(+), 5 deletions(-) diff --git a/assets/css/um-members.css b/assets/css/um-members.css index 771f515b..8ed7073d 100644 --- a/assets/css/um-members.css +++ b/assets/css/um-members.css @@ -161,7 +161,7 @@ body #content .um-directory a { display: flex; flex-direction: row; justify-content: flex-start; - align-items: baseline; + align-items: center; flex-wrap: nowrap; width: 60%; } .um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line label { diff --git a/assets/sass/um-members.sass b/assets/sass/um-members.sass index 63e292e1..780b8b88 100644 --- a/assets/sass/um-members.sass +++ b/assets/sass/um-members.sass @@ -130,7 +130,7 @@ body &.um-member-directory-search-row justify-content: flex-end .um-member-directory-search-line - +flex( row, flex-start, baseline, nowrap ) + +flex( row, flex-start, center, nowrap ) width: 60% label flex: 1 diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php index f0a5a3e1..db4ac905 100644 --- a/includes/core/class-member-directory.php +++ b/includes/core/class-member-directory.php @@ -2124,6 +2124,35 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { } + /** + * Update limit query + * + * @param $user_query + */ + function pagination_changes( $user_query ) { + global $wpdb; + + $directory_id = $this->get_directory_by_hash( $_POST['directory_id'] ); + $directory_data = UM()->query()->post_data( $directory_id ); + + $qv = $user_query->query_vars; + + $number = $qv['number']; + if ( ! empty( $directory_data['max_users'] ) && $qv['paged']*$qv['number'] > $directory_data['max_users'] ) { + $number = ( $qv['paged']*$qv['number'] - ( $qv['paged']*$qv['number'] - $directory_data['max_users'] ) ) % $qv['number']; + } + + // limit + if ( isset( $qv['number'] ) && $qv['number'] > 0 ) { + if ( $qv['offset'] ) { + $user_query->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['offset'], $number ); + } else { + $user_query->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['number'] * ( $qv['paged'] - 1 ), $number ); + } + } + } + + /** * Main Query function for getting members via AJAX */ @@ -2238,8 +2267,12 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { add_filter( 'get_meta_sql', array( &$this, 'change_meta_sql' ), 10, 6 ); + add_filter( 'pre_user_query', array( &$this, 'pagination_changes' ), 10, 1 ); + $user_query = new \WP_User_Query( $this->query_args ); + remove_filter( 'pre_user_query', array( &$this, 'pagination_changes' ), 10 ); + remove_filter( 'get_meta_sql', array( &$this, 'change_meta_sql' ), 10 ); /** diff --git a/readme.txt b/readme.txt index 0ec16527..c57fd7b2 100644 --- a/readme.txt +++ b/readme.txt @@ -151,6 +151,12 @@ The plugin works with popular caching plugins by automatically excluding Ultimat - Added sorting by Last & First name +* Bugfixes: + + - Fixed issues with pagination settings + - Fixed issues with member results JS template + - Fixed small CSS issues + = 2.1.2: December 4, 2019 = * Enhancements: diff --git a/templates/members-header.php b/templates/members-header.php index ae64e71a..a7b186ea 100644 --- a/templates/members-header.php +++ b/templates/members-header.php @@ -4,9 +4,9 @@