Merge pull request #1475 from ultimatemember/development/2.8.x

Version 2.8.5
This commit is contained in:
Mykyta Synelnikov
2024-04-09 15:35:25 +03:00
committed by GitHub
63 changed files with 3877 additions and 2817 deletions
+1 -1
View File
@@ -44,7 +44,7 @@ GNU Version 2 or Any Later Version
### IMPORTANT: PLEASE UPDATE THE PLUGIN TO AT LEAST VERSION 2.6.7 IMMEDIATELY. VERSION 2.6.7 PATCHES SECURITY PRIVILEGE ESCALATION VULNERABILITY. PLEASE SEE [THIS ARTICLE](https://docs.ultimatemember.com/article/1866-security-incident-update-and-recommended-actions) FOR MORE INFORMATION
[Official Release Version: 2.8.4](https://github.com/ultimatemember/ultimatemember/releases/tag/2.8.4).
[Official Release Version: 2.8.5](https://github.com/ultimatemember/ultimatemember/releases/tag/2.8.5).
## Changelog
+10 -7
View File
@@ -1,14 +1,17 @@
.um_block_settings .um_block_settings_hide {
display: none; }
display: none;
}
.um_block_settings .components-select-control .components-select-control__input[multiple] {
height: auto; }
.um_block_settings .components-select-control .components-select-control__input[multiple] + .components-input-control__suffix {
display: none; }
height: auto;
}
.um_block_settings .components-select-control .components-select-control__input[multiple] + .components-input-control__suffix {
display: none;
}
.um-block-notice {
background: #fff;
font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen-Sans, Ubuntu, Cantarell, Helvetica Neue, sans-serif;
font-size: 13px;
padding: 20px;
border: 1px solid #000; }
border: 1px solid #000;
}
+21 -12
View File
@@ -1,29 +1,38 @@
.um-admin-drag-ctrls-demo.um-admin-drag-ctrls {
left: 12px;
right: auto; }
right: auto;
}
.um-admin-drag-row-icons {
left: 0;
right: auto; }
.um-admin-drag-row-icons a {
float: right; }
right: auto;
}
.um-admin-drag-row-icons a {
float: right;
}
.um-admin-drag-ctrls.columns {
right: 0 !important;
left: auto; }
.um-admin-drag-ctrls.columns a {
float: right; }
left: auto;
}
.um-admin-drag-ctrls.columns a {
float: right;
}
.um-admin-drag-rowsub-icons {
right: auto;
left: 0; }
left: 0;
}
.um-admin-drag-fld-icons {
float: left; }
.um-admin-drag-fld-icons a {
float: right; }
float: left;
}
.um-admin-drag-fld-icons a {
float: right;
}
.um-admin-drag-fld-title,
.um-admin-drag-fld-type {
float: right;
margin: 0 20px 0 0; }
margin: 0 20px 0 0;
}
+474 -364
View File
@@ -1,123 +1,145 @@
@-webkit-keyframes um-ajax-spinning {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
transform: rotate(360deg);
}
}
@-moz-keyframes um-ajax-spinning {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
transform: rotate(360deg);
}
}
@-ms-keyframes um-ajax-spinning {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
transform: rotate(360deg);
}
}
@keyframes um-ajax-spinning {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
transform: rotate(360deg);
}
}
.um-admin-row-loading {
position: absolute;
width: 100%;
height: calc( 100% + 30px);
height: calc(100% + 30px);
top: -30px;
left: 0;
background: rgba(241, 241, 241, 0.6);
z-index: 999;
display: none; }
.um-admin-row-loading > span {
display: block;
-webkit-transition: 0.1s opacity;
-moz-transition: 0.1s opacity;
-ms-transition: 0.1s opacity;
-o-transition: 0.1s opacity;
transition: 0.1s opacity;
color: #c6c6c6 !important;
-webkit-animation: um-ajax-spinning 1.1s infinite linear;
animation: um-ajax-spinning 1.1s infinite linear;
border-top: 0.2em solid black;
border-right: 0.2em solid black;
border-bottom: 0.2em solid black;
border-left: 0.2em solid #c6c6c6;
font-size: 1.75em;
filter: alpha(opacity=0);
-ms-transform: translateZ(0);
transform: translateZ(0);
border-radius: 50%;
width: 40px;
height: 40px;
margin: -20px 0 0 -20px;
outline: 0;
padding: 0;
vertical-align: baseline;
position: absolute;
left: 50%;
top: 50%; }
display: none;
}
.um-admin-row-loading > span {
display: block;
-webkit-transition: 0.1s opacity;
-moz-transition: 0.1s opacity;
-ms-transition: 0.1s opacity;
-o-transition: 0.1s opacity;
transition: 0.1s opacity;
color: #c6c6c6 !important;
-webkit-animation: um-ajax-spinning 1.1s infinite linear;
animation: um-ajax-spinning 1.1s infinite linear;
border-top: 0.2em solid rgb(0, 0, 0);
border-right: 0.2em solid rgb(0, 0, 0);
border-bottom: 0.2em solid rgb(0, 0, 0);
border-left: 0.2em solid #c6c6c6;
font-size: 1.75em;
filter: alpha(opacity=0);
-ms-transform: translateZ(0);
transform: translateZ(0);
border-radius: 50%;
width: 40px;
height: 40px;
margin: -20px 0 0 -20px;
outline: 0;
padding: 0;
vertical-align: baseline;
position: absolute;
left: 50%;
top: 50%;
}
.um-admin-boxed-links {
width: 100%;
text-align: center; }
.um-admin-boxed-links a {
width: 33.3%;
float: left;
border-left: 1px solid #fff;
border-right: 1px solid #fff;
padding: 30px 25px !important;
background: #f8f8f8;
text-align: center;
display: inline-block !important;
font-size: 14px;
transition: all .2s linear;
text-decoration: none;
color: #666;
margin: 0 !important;
box-sizing: border-box !important;
border-radius: 2px;
font-weight: 600; }
.um-admin-boxed-links a:hover {
background: #eee; }
.um-admin-boxed-links a.um-admin-activebg {
background: #0085ba;
color: #fff; }
.um-admin-boxed-links a.um-admin-activebg:hover {
background: #0085ba;
color: #fff; }
.um-admin-boxed-links i {
font-size: 28px;
vertical-align: middle;
margin: 0 10px 0 0; }
text-align: center;
}
.um-admin-boxed-links a {
width: 33.3%;
float: left;
border-left: 1px solid #fff;
border-right: 1px solid #fff;
padding: 30px 25px !important;
background: #f8f8f8;
text-align: center;
display: inline-block !important;
font-size: 14px;
transition: all 0.2s linear;
text-decoration: none;
color: #666;
margin: 0 !important;
box-sizing: border-box !important;
border-radius: 2px;
font-weight: 600;
}
.um-admin-boxed-links a:hover {
background: #eee;
}
.um-admin-boxed-links a.um-admin-activebg {
background: #0085ba;
color: #fff;
}
.um-admin-boxed-links a.um-admin-activebg:hover {
background: #0085ba;
color: #fff;
}
.um-admin-boxed-links i {
font-size: 28px;
vertical-align: middle;
margin: 0 10px 0 0;
}
.um-admin-half {
float: left;
width: 48%; }
.um-admin-half select {
box-sizing: border-box; }
.um-admin-half.um-admin-right {
float: right; }
.um-admin-half p:first-child {
margin-top: 0; }
.um-admin-half .um {
opacity: 1;
margin-bottom: 0 !important; }
width: 48%;
}
.um-admin-half select {
box-sizing: border-box;
}
.um-admin-half.um-admin-right {
float: right;
}
.um-admin-half p:first-child {
margin-top: 0;
}
.um-admin-half .um {
opacity: 1;
margin-bottom: 0 !important;
}
.um-admin-tri {
float: left;
width: 33%;
position: relative; }
position: relative;
}
.um-admin-error-block,
.um-admin-success-block {
@@ -131,16 +153,20 @@
padding: 12px;
font-size: 13px;
line-height: 1em !important;
margin: 0 0 16px 0; }
margin: 0 0 16px 0;
}
.um-admin-success-block {
background: #7acf58; }
background: #7acf58;
}
.um-admin-cur-condition-template {
display: none; }
display: none;
}
.dynamic-mce-content {
display: none; }
display: none;
}
.um-admin-btns {
line-height: 1.5em;
@@ -149,70 +175,88 @@
flex-direction: row;
justify-content: flex-start;
align-items: baseline;
flex-wrap: wrap; }
.um-admin-btns .um-no-custom-fields {
margin: 0; }
.um-admin-btns a {
margin: 0 3px 8px 0 !important;
font-size: 12px !important;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
flex-wrap: nowrap;
display: flex !important; }
.um-admin-btns a.with-icon span {
color: #aaa;
font-size: 15px !important;
padding-left: 5px;
height: auto;
width: auto; }
.um-admin-btns a.with-icon:hover span {
color: #cb3838; }
flex-wrap: wrap;
}
.um-admin-btns .um-no-custom-fields {
margin: 0;
}
.um-admin-btns a {
margin: 0 3px 8px 0 !important;
font-size: 12px !important;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
flex-wrap: nowrap;
display: flex !important;
}
.um-admin-btns a.with-icon span {
color: #aaa;
font-size: 15px !important;
padding-left: 5px;
height: auto;
width: auto;
}
.um-admin-btns a.with-icon:hover span {
color: #cb3838;
}
.um-admin-btn-toggle {
padding: 10px 0; }
.um-admin-btn-toggle p {
margin: 0 5px 0 0 !important; }
.um-admin-btn-toggle p.um-admin-reset-conditions a {
margin-bottom: 5px; }
.um-admin-btn-toggle a {
text-decoration: none;
color: #999; }
.um-admin-btn-toggle a.um-admin-new-condition {
margin-bottom: 5px; }
.um-admin-btn-toggle a.active {
color: #0085ba; }
.um-admin-btn-toggle a.active:hover {
color: #0085ba; }
.um-admin-btn-toggle i {
margin: 0 5px 0 0 !important;
height: 100%;
color: #666;
position: relative;
top: 1px; }
padding: 10px 0;
}
.um-admin-btn-toggle p {
margin: 0 5px 0 0 !important;
}
.um-admin-btn-toggle p.um-admin-reset-conditions a {
margin-bottom: 5px;
}
.um-admin-btn-toggle a {
text-decoration: none;
color: #999;
}
.um-admin-btn-toggle a.um-admin-new-condition {
margin-bottom: 5px;
}
.um-admin-btn-toggle a.active {
color: #0085ba;
}
.um-admin-btn-toggle a.active:hover {
color: #0085ba;
}
.um-admin-btn-toggle i {
margin: 0 5px 0 0 !important;
height: 100%;
color: #666;
position: relative;
top: 1px;
}
.um-admin-btn-content {
display: none;
padding: 5px 0 0 0; }
.um-admin-btn-content p {
float: left;
margin-right: 10px !important;
padding: 0 !important; }
.um-admin-btn-content p.um-admin-conditions-notice {
width: 100%;
margin: 0 0 9px 0 !important; }
.um-admin-btn-content .um-admin-cur-condition:not(:last-child) {
margin: 0 0 5px 0; }
padding: 5px 0 0 0;
}
.um-admin-btn-content p {
float: left;
margin-right: 10px !important;
padding: 0 !important;
}
.um-admin-btn-content p.um-admin-conditions-notice {
width: 100%;
margin: 0 0 9px 0 !important;
}
.um-admin-btn-content .um-admin-cur-condition:not(:last-child) {
margin: 0 0 5px 0;
}
.um-admin-builder i {
font-size: 15px !important;
height: 100% !important;
line-height: 100% !important;
margin: 0 5px 0 0 !important; }
margin: 0 5px 0 0 !important;
}
.um-admin-builder .um-admin-drag {
margin-top: 40px; }
margin-top: 40px;
}
.um-admin-drag-add-field {
display: block;
@@ -221,52 +265,66 @@
line-height: 30px;
text-align: center;
color: #aaa;
text-decoration: none; }
.um-admin-drag-add-field:hover {
color: #0085ba; }
.um-admin-drag-add-field i {
font-size: 23px !important;
margin: 0 !important; }
text-decoration: none;
}
.um-admin-drag-add-field:hover {
color: #0085ba;
}
.um-admin-drag-add-field i {
font-size: 23px !important;
margin: 0 !important;
}
.um-admin-drag-ctrls {
position: absolute;
top: -30px;
left: 0; }
.um-admin-drag-ctrls.um-admin-drag-ctrls-demo {
position: absolute;
right: 7px;
top: -30px;
left: auto; }
.um-admin-drag-ctrls a {
float: left;
margin: 0 5px 0 0;
height: 30px;
line-height: 30px;
background: #eee;
color: #888;
padding: 0 8px;
text-decoration: none;
border-radius: 2px 2px 0 0; }
.um-admin-drag-ctrls a:hover {
background-color: #e5e5e5; }
.um-admin-drag-ctrls a.active, .um-admin-drag-ctrls a.active:hover {
background-color: #0085ba;
color: #fff; }
.um-admin-drag-ctrls.columns a {
width: 30px !important;
background-image: url(../../img/builder/1-column.gif);
background-repeat: no-repeat;
background-position: center; }
.um-admin-drag-ctrls.columns a:nth-child(2) {
background-image: url(../../img/builder/2-columns.gif); }
.um-admin-drag-ctrls.columns a:last-child {
background-image: url(../../img/builder/3-columns.gif); }
.um-admin-drag-ctrls.columns a.active {
background-image: url(../../img/builder/1-column-active.gif); }
.um-admin-drag-ctrls.columns a.active:nth-child(2) {
background-image: url(../../img/builder/2-columns-active.gif); }
.um-admin-drag-ctrls.columns a.active:last-child {
background-image: url(../../img/builder/3-columns-active.gif); }
left: 0;
}
.um-admin-drag-ctrls.um-admin-drag-ctrls-demo {
position: absolute;
right: 7px;
top: -30px;
left: auto;
}
.um-admin-drag-ctrls a {
float: left;
margin: 0 5px 0 0;
height: 30px;
line-height: 30px;
background: #eee;
color: #888;
padding: 0 8px;
text-decoration: none;
border-radius: 2px 2px 0 0;
}
.um-admin-drag-ctrls a:hover {
background-color: #e5e5e5;
}
.um-admin-drag-ctrls a.active, .um-admin-drag-ctrls a.active:hover {
background-color: #0085ba;
color: #fff;
}
.um-admin-drag-ctrls.columns a {
width: 30px !important;
background-image: url(../../img/builder/1-column.gif);
background-repeat: no-repeat;
background-position: center;
}
.um-admin-drag-ctrls.columns a:nth-child(2) {
background-image: url(../../img/builder/2-columns.gif);
}
.um-admin-drag-ctrls.columns a:last-child {
background-image: url(../../img/builder/3-columns.gif);
}
.um-admin-drag-ctrls.columns a.active {
background-image: url(../../img/builder/1-column-active.gif);
}
.um-admin-drag-ctrls.columns a.active:nth-child(2) {
background-image: url(../../img/builder/2-columns-active.gif);
}
.um-admin-drag-ctrls.columns a.active:last-child {
background-image: url(../../img/builder/3-columns-active.gif);
}
.um-admin-drag {
width: 100%;
@@ -275,7 +333,8 @@
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
position: relative;
padding: 60px 20px 20px 20px; }
padding: 60px 20px 20px 20px;
}
.um-admin-drag-row {
width: 100%;
@@ -285,51 +344,59 @@
-webkit-box-sizing: border-box;
position: relative;
padding: 60px 20px 20px 20px;
margin: 0 0 60px 0; }
.um-admin-drag-row:last-child {
margin-bottom: 0; }
margin: 0 0 60px 0;
}
.um-admin-drag-row:last-child {
margin-bottom: 0;
}
.um-admin-drag-row-icons {
position: absolute;
right: 0;
top: -30px;
height: 30px; }
.um-admin-drag-row-icons a {
text-decoration: none;
color: #fff;
width: 40px;
height: 30px;
line-height: 30px;
text-align: center;
display: block !important;
float: left;
background: #0085ba;
padding: 0 4px;
transition: all .2s linear;
border-left: 1px solid #379dd5; }
.um-admin-drag-row-icons a:hover {
background: #008ec2; }
.um-admin-drag-row-icons span {
cursor: move !important;
text-decoration: none;
color: #fff;
width: 40px;
height: 30px;
line-height: 30px;
text-align: center;
display: block !important;
float: left;
background: #0085ba;
padding: 0 4px;
transition: all .2s linear;
border-left: 1px solid #379dd5; }
.um-admin-drag-row-icons span:hover {
background: #008ec2; }
.um-admin-drag-row-icons i {
font-size: 18px !important;
margin: 0 !important;
top: 2px;
position: relative; }
height: 30px;
}
.um-admin-drag-row-icons a {
text-decoration: none;
color: #fff;
width: 40px;
height: 30px;
line-height: 30px;
text-align: center;
display: block !important;
float: left;
background: #0085ba;
padding: 0 4px;
transition: all 0.2s linear;
border-left: 1px solid #379dd5;
}
.um-admin-drag-row-icons a:hover {
background: #008ec2;
}
.um-admin-drag-row-icons span {
cursor: move !important;
text-decoration: none;
color: #fff;
width: 40px;
height: 30px;
line-height: 30px;
text-align: center;
display: block !important;
float: left;
background: #0085ba;
padding: 0 4px;
transition: all 0.2s linear;
border-left: 1px solid #379dd5;
}
.um-admin-drag-row-icons span:hover {
background: #008ec2;
}
.um-admin-drag-row-icons i {
font-size: 18px !important;
margin: 0 !important;
top: 2px;
position: relative;
}
.um-admin-drag-rowsub {
position: relative;
@@ -338,51 +405,59 @@
-webkit-box-sizing: border-box;
background: #f1f1f1;
padding: 20px;
margin: 0 0 60px 0; }
.um-admin-drag-rowsub:last-child {
margin-bottom: 0; }
margin: 0 0 60px 0;
}
.um-admin-drag-rowsub:last-child {
margin-bottom: 0;
}
.um-admin-drag-rowsub-icons {
position: absolute;
right: 0;
top: -30px;
height: 30px; }
.um-admin-drag-rowsub-icons a {
text-decoration: none;
color: #fff;
width: 40px;
height: 30px;
line-height: 30px;
text-align: center;
display: block !important;
float: left;
background: #0085ba;
padding: 0 4px;
transition: all .2s linear;
border-left: 1px solid #379dd5; }
.um-admin-drag-rowsub-icons a:hover {
background: #008ec2; }
.um-admin-drag-rowsub-icons span {
cursor: move !important;
text-decoration: none;
color: #fff;
width: 40px;
height: 30px;
line-height: 30px;
text-align: center;
display: block !important;
float: left;
background: #0085ba;
padding: 0 4px;
transition: all .2s linear;
border-left: 1px solid #379dd5; }
.um-admin-drag-rowsub-icons span:hover {
background: #008ec2; }
.um-admin-drag-rowsub-icons i {
font-size: 18px !important;
margin: 0 !important;
top: 2px;
position: relative; }
height: 30px;
}
.um-admin-drag-rowsub-icons a {
text-decoration: none;
color: #fff;
width: 40px;
height: 30px;
line-height: 30px;
text-align: center;
display: block !important;
float: left;
background: #0085ba;
padding: 0 4px;
transition: all 0.2s linear;
border-left: 1px solid #379dd5;
}
.um-admin-drag-rowsub-icons a:hover {
background: #008ec2;
}
.um-admin-drag-rowsub-icons span {
cursor: move !important;
text-decoration: none;
color: #fff;
width: 40px;
height: 30px;
line-height: 30px;
text-align: center;
display: block !important;
float: left;
background: #0085ba;
padding: 0 4px;
transition: all 0.2s linear;
border-left: 1px solid #379dd5;
}
.um-admin-drag-rowsub-icons span:hover {
background: #008ec2;
}
.um-admin-drag-rowsub-icons i {
font-size: 18px !important;
margin: 0 !important;
top: 2px;
position: relative;
}
.um-admin-drag-col {
float: left;
@@ -390,51 +465,65 @@
background: #fff;
border: 1px dashed #bbb;
box-sizing: border-box;
padding: 20px; }
.um-admin-drag-col.cols-3 {
width: 32%; }
.um-admin-drag-col.cols-3.cols-last {
width: 32%; }
.um-admin-drag-col.cols-3.cols-middle {
width: 32%;
margin: 0 2%; }
.um-admin-drag-col.cols-3 .um-admin-drag-fld-title {
height: auto;
line-height: 18px;
margin: 10px;
margin-bottom: 0; }
.um-admin-drag-col.cols-3 .um-admin-drag-fld-type {
height: auto;
line-height: 18px;
margin: 0 0 10px 0; }
.um-admin-drag-col.cols-3 .um-admin-drag-fld-icons {
float: none;
position: absolute;
bottom: 0;
right: 0;
height: 30px;
display: none; }
.um-admin-drag-col.cols-3 .um-admin-drag-fld-icons.um-field-type-group {
float: left;
position: relative;
bottom: auto;
right: auto;
height: 30px;
display: block; }
.um-admin-drag-col.cols-3 .um-admin-drag-fld:hover .um-admin-drag-fld-icons {
display: block; }
.um-admin-drag-col.cols-1 {
width: 100%; }
.um-admin-drag-col.cols-1.cols-last {
width: 100%; }
.um-admin-drag-col.cols-2 {
width: 49%;
margin: 0 1% 0 0; }
.um-admin-drag-col.cols-2.cols-last {
width: 49%;
margin: 0 0 0 1%; }
.um-admin-drag-col > .um-admin-drag-fld:last-of-type {
margin-bottom: 20px; }
padding: 20px;
}
.um-admin-drag-col.cols-3 {
width: 32%;
}
.um-admin-drag-col.cols-3.cols-last {
width: 32%;
}
.um-admin-drag-col.cols-3.cols-middle {
width: 32%;
margin: 0 2%;
}
.um-admin-drag-col.cols-3 .um-admin-drag-fld-title {
height: auto;
line-height: 18px;
margin: 10px;
margin-bottom: 0;
}
.um-admin-drag-col.cols-3 .um-admin-drag-fld-type {
height: auto;
line-height: 18px;
margin: 0 0 10px 0;
}
.um-admin-drag-col.cols-3 .um-admin-drag-fld-icons {
float: none;
position: absolute;
bottom: 0;
right: 0;
height: 30px;
display: none;
}
.um-admin-drag-col.cols-3 .um-admin-drag-fld-icons.um-field-type-group {
float: left;
position: relative;
bottom: auto;
right: auto;
height: 30px;
display: block;
}
.um-admin-drag-col.cols-3 .um-admin-drag-fld:hover .um-admin-drag-fld-icons {
display: block;
}
.um-admin-drag-col.cols-1 {
width: 100%;
}
.um-admin-drag-col.cols-1.cols-last {
width: 100%;
}
.um-admin-drag-col.cols-2 {
width: 49%;
margin: 0 1% 0 0;
}
.um-admin-drag-col.cols-2.cols-last {
width: 49%;
margin: 0 0 0 1%;
}
.um-admin-drag-col > .um-admin-drag-fld:last-of-type {
margin-bottom: 20px;
}
.um-admin-drag-addrow {
text-align: center;
@@ -443,12 +532,15 @@
cursor: pointer;
border: 1px dashed #bbb;
padding: 10px 0;
margin: 20px 0 0 0; }
.um-admin-drag-addrow i {
font-size: 23px !important;
margin: 0 !important; }
.um-admin-drag-addrow:hover {
color: #0085ba; }
margin: 20px 0 0 0;
}
.um-admin-drag-addrow i {
font-size: 23px !important;
margin: 0 !important;
}
.um-admin-drag-addrow:hover {
color: #0085ba;
}
.um-admin-drag-fld {
display: block;
@@ -456,10 +548,12 @@
border: 1px solid #dddddd;
margin: 0 0 15px 0;
background: #f5f5f5;
cursor: move !important; }
.um-admin-drag-fld.um-field-type-group {
background: #555;
border: 0; }
cursor: move !important;
}
.um-admin-drag-fld.um-field-type-group {
background: #555;
border: 0;
}
.um-admin-drag-fld-title {
float: left;
@@ -468,19 +562,23 @@
color: #666;
height: 30px;
line-height: 30px;
margin: 0 0 0 20px; }
.um-admin-drag-fld-title.um-field-type-group {
color: #fff; }
.um-admin-drag-fld-title i {
width: 24px;
display: inline-block;
text-align: center; }
margin: 0 0 0 20px;
}
.um-admin-drag-fld-title.um-field-type-group {
color: #fff;
}
.um-admin-drag-fld-title i {
width: 24px;
display: inline-block;
text-align: center;
}
.um-admin-drag-group {
background: #fcfcfc;
cursor: default;
padding: 20px;
border: 1px dashed #bbb; }
border: 1px dashed #bbb;
}
.um-admin-drag-fld-type {
float: left;
@@ -489,60 +587,72 @@
line-height: 30px;
margin: 0 0 0 20px;
font-weight: 400;
color: #999; }
.um-admin-drag-fld-type.um-field-type-group {
color: #fff; }
color: #999;
}
.um-admin-drag-fld-type.um-field-type-group {
color: #fff;
}
.um-admin-drag-fld-icons {
float: right; }
.um-admin-drag-fld-icons a {
text-decoration: none;
color: #fff;
width: 40px;
height: 30px;
line-height: 30px;
text-align: center;
display: block !important;
float: left;
background: #0085ba;
padding: 0 4px;
transition: all .2s linear;
border-left: 1px solid #379dd5; }
.um-admin-drag-fld-icons a:hover {
background: #008ec2; }
.um-admin-drag-fld-icons i {
font-size: 18px !important;
margin: 0 !important;
top: 2px;
position: relative; }
.um-admin-drag-fld-icons.um-field-type-group a.um_admin_duplicate_field {
display: none !important; }
float: right;
}
.um-admin-drag-fld-icons a {
text-decoration: none;
color: #fff;
width: 40px;
height: 30px;
line-height: 30px;
text-align: center;
display: block !important;
float: left;
background: #0085ba;
padding: 0 4px;
transition: all 0.2s linear;
border-left: 1px solid #379dd5;
}
.um-admin-drag-fld-icons a:hover {
background: #008ec2;
}
.um-admin-drag-fld-icons i {
font-size: 18px !important;
margin: 0 !important;
top: 2px;
position: relative;
}
.um-admin-drag-fld-icons.um-field-type-group a.um_admin_duplicate_field {
display: none !important;
}
.um-row-placeholder {
width: 100%;
border: 2px dashed #aaa;
box-sizing: border-box; }
box-sizing: border-box;
}
.um-rowsub-placeholder {
width: 100%;
border: 2px dashed #ccc;
box-sizing: border-box;
display: block; }
display: block;
}
.um-fld-placeholder {
display: block;
border: 1px dashed #ddd;
background: #fff;
box-sizing: border-box;
width: 100%; }
width: 100%;
}
.um-admin-modal #UM_preview_form .um-admin-modal-body {
position: relative; }
.um-admin-modal #UM_preview_form .um-admin-modal-body .um-admin-preview-overlay {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: rgba(255, 255, 255, 0);
z-index: 100; }
position: relative;
}
.um-admin-modal #UM_preview_form .um-admin-modal-body .um-admin-preview-overlay {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: rgba(255, 255, 255, 0);
z-index: 100;
}
+61 -47
View File
@@ -3,19 +3,23 @@
width: 18px;
text-align: center;
display: inline-block;
color: #7acf58; }
.um-adm-ico.inactive {
color: #c74a4a; }
.um-adm-ico.pointer {
cursor: pointer; }
color: #7acf58;
}
.um-adm-ico.inactive {
color: #c74a4a;
}
.um-adm-ico.pointer {
cursor: pointer;
}
body.um-admin-modal-open {
overflow: hidden; }
overflow: hidden;
}
.um-admin #major-publishing-actions {
background-color: #fff !important;
border-top: 0; }
border-top: 0;
}
.um-admin a.button i,
.um-admin a.button-primary i {
font-size: 15px !important;
@@ -23,36 +27,38 @@ body.um-admin-modal-open {
width: 15px !important;
text-align: center !important;
margin: 0 5px 0 0 !important;
display: inline-block; }
.um-admin a.button i:before,
.um-admin a.button-primary i:before {
position: relative;
top: 1px; }
display: inline-block;
}
.um-admin a.button i:before,
.um-admin a.button-primary i:before {
position: relative;
top: 1px;
}
.um-admin-metabox h6 {
font-size: 14px;
margin: 12px 0 0 0; }
margin: 12px 0 0 0;
}
.um-admin-metabox h3 {
padding-left: 0 !important; }
padding-left: 0 !important;
}
.um-admin-metabox h4 {
font-size: 14px;
background: #f5f5f5;
padding: 8px 4px;
color: #333; }
color: #333;
}
.um-admin-metabox p {
margin: 10px 0 0 0; }
margin: 10px 0 0 0;
}
.um-admin-metabox label {
display: block;
cursor: default;
padding: 0 !important;
font-size: 13px;
color: #666; }
.um-admin-metabox input[type="text"] {
color: #666;
}
.um-admin-metabox input[type=text] {
height: auto !important;
width: 100%;
max-width: 100%;
@@ -60,15 +66,18 @@ body.um-admin-modal-open {
box-sizing: border-box !important;
font-size: 13px !important;
line-height: 1.4em !important;
padding: 4px 10px !important; }
.um-admin-metabox input[type="text"]:disabled {
opacity: 0.7 !important;
color: #aaa !important; }
.um-admin-metabox input[type="text"].small {
width: 54px; }
.um-admin-metabox input[type="text"].um-admin-error {
border-color: #c74a4a !important; }
padding: 4px 10px !important;
}
.um-admin-metabox input[type=text]:disabled {
opacity: 0.7 !important;
color: #aaa !important;
}
.um-admin-metabox input[type=text].small {
width: 54px;
}
.um-admin-metabox input[type=text].um-admin-error {
border-color: #c74a4a !important;
}
.um-admin-metabox textarea {
width: 100%;
max-width: 100%;
@@ -79,18 +88,21 @@ body.um-admin-modal-open {
padding: 8px !important;
color: #888 !important;
min-height: 100px;
height: 100px; }
.um-admin-metabox textarea.tall {
min-height: 200px;
height: 200px; }
.um-admin-metabox textarea.um-admin-error {
border-color: #c74a4a !important; }
height: 100px;
}
.um-admin-metabox textarea.tall {
min-height: 200px;
height: 200px;
}
.um-admin-metabox textarea.um-admin-error {
border-color: #c74a4a !important;
}
.um .picker__box,
.um .picker__nav--prev:hover,
.um .picker__nav--next:hover {
background: #0085ba; }
background: #0085ba;
}
.um .picker__footer,
.um .picker__header,
.um .picker__day--infocus:hover,
@@ -103,13 +115,15 @@ body.um-admin-modal-open {
.um .picker__list-item--selected,
.um .picker__list-item--selected:hover,
.um .picker--focused .picker__list-item--selected {
background: #008ec2; }
background: #008ec2;
}
body.um .picker .picker__frame {
top: 32px; }
top: 32px;
}
body.um .picker .picker__footer > button:not(:disabled):not(.button) {
color: #fff; }
color: #fff;
}
body.um .picker .picker__footer > button.picker__button--close {
margin-top: 5px; }
margin-top: 5px;
}
+50 -35
View File
@@ -8,60 +8,75 @@
border-radius: 3px;
top: 5px;
left: 3px;
border: none !important; }
border: none !important;
}
#um-metaboxes-general.wrap a.red,
#um-metaboxes-general.wrap span.red {
color: #c74a4a; }
color: #c74a4a;
}
#um-metaboxes-general.wrap span.ok {
color: #7acf58; }
color: #7acf58;
}
.um-metabox-holder p.sub {
padding: 0 4px 2px 4px;
margin: 0 0 8px 0;
color: #8F8F8F;
font-size: 14px;
border-bottom: 1px solid #ECECEC; }
.um-metabox-holder .table {
float: left;
width: 45%; }
.um-metabox-holder .table td {
white-space: nowrap;
font-size: 12px; }
border-bottom: 1px solid #ECECEC;
}
.um-metabox-holder a.warning {
color: #c74a4a !important;
background: transparent !important;
border: 0; }
.um-metabox-holder .table_right {
float: right;
width: 45%; }
.um-metabox-holder td.b {
padding-right: 6px;
text-align: right;
font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif;
font-size: 14px;
width: 1%; }
.um-metabox-holder td.b a {
font-size: 18px; }
border: 0;
}
.um-metabox-holder .norm i {
display: inline-block;
width: 30px;
text-align: center; }
text-align: center;
}
.um-metabox-holder .norm p {
margin: 5px 0; }
margin: 5px 0;
}
.um-metabox-holder .norm .count {
font-size: 16px;
font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif;
font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
color: #999;
width: 40px;
display: inline-block;
text-align: right;
margin-right: 10px; }
margin-right: 10px;
}
#um-users-overview-table {
width: 100%;
}
#um-users-overview-table td {
width: auto;
min-width: 120px;
vertical-align: middle;
padding: 0 0 0 5px;
box-sizing: border-box;
}
#um-users-overview-table td:first-child {
padding: 0 5px 0 0;
}
#um-users-overview-table td > span {
width: 100%;
direction: ltr;
display: grid;
grid-gap: 6px;
grid-template-columns: repeat(2, minmax(20px, auto));
align-content: start;
align-items: center;
justify-content: start;
justify-items: center;
}
#um-users-overview-table td > span a {
word-break: break-word;
}
#um-users-overview-table td > span a.count {
justify-self: end;
font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
font-size: 18px;
}
+1 -1
View File
@@ -1 +1 @@
#um-metaboxes-general h1 sup{font-size:14px;position:relative;font-weight:400;background:#0085ba;color:#fff!important;padding:2px 4px!important;border-radius:3px;top:5px;left:3px;border:none!important}#um-metaboxes-general.wrap a.red,#um-metaboxes-general.wrap span.red{color:#c74a4a}#um-metaboxes-general.wrap span.ok{color:#7acf58}.um-metabox-holder p.sub{padding:0 4px 2px 4px;margin:0 0 8px 0;color:#8f8f8f;font-size:14px;border-bottom:1px solid #ececec}.um-metabox-holder .table{float:left;width:45%}.um-metabox-holder .table td{white-space:nowrap;font-size:12px}.um-metabox-holder a.warning{color:#c74a4a!important;background:0 0!important;border:0}.um-metabox-holder .table_right{float:right;width:45%}.um-metabox-holder td.b{padding-right:6px;text-align:right;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:14px;width:1%}.um-metabox-holder td.b a{font-size:18px}.um-metabox-holder .norm i{display:inline-block;width:30px;text-align:center}.um-metabox-holder .norm p{margin:5px 0}.um-metabox-holder .norm .count{font-size:16px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;color:#999;width:40px;display:inline-block;text-align:right;margin-right:10px}
#um-metaboxes-general h1 sup{font-size:14px;position:relative;font-weight:400;background:#0085ba;color:#fff!important;padding:2px 4px!important;border-radius:3px;top:5px;left:3px;border:none!important}#um-metaboxes-general.wrap a.red,#um-metaboxes-general.wrap span.red{color:#c74a4a}#um-metaboxes-general.wrap span.ok{color:#7acf58}.um-metabox-holder p.sub{padding:0 4px 2px 4px;margin:0 0 8px 0;color:#8f8f8f;font-size:14px;border-bottom:1px solid #ececec}.um-metabox-holder a.warning{color:#c74a4a!important;background:0 0!important;border:0}.um-metabox-holder .norm i{display:inline-block;width:30px;text-align:center}.um-metabox-holder .norm p{margin:5px 0}.um-metabox-holder .norm .count{font-size:16px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;color:#999;width:40px;display:inline-block;text-align:right;margin-right:10px}#um-users-overview-table{width:100%}#um-users-overview-table td{width:auto;min-width:120px;vertical-align:middle;padding:0 0 0 5px;box-sizing:border-box}#um-users-overview-table td:first-child{padding:0 5px 0 0}#um-users-overview-table td>span{width:100%;direction:ltr;display:grid;grid-gap:6px;grid-template-columns:repeat(2,minmax(20px,auto));align-content:start;align-items:center;justify-content:start;justify-items:center}#um-users-overview-table td>span a{word-break:break-word}#um-users-overview-table td>span a.count{justify-self:end;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:18px}
+27 -20
View File
@@ -30,31 +30,11 @@
font-size: 14px
border-bottom: 1px solid #ECECEC
.table
float: left
width: 45%
td
white-space: nowrap
font-size: 12px
a.warning
color: #{$admin-warning} !important
background: transparent !important
border: 0
.table_right
float: right
width: 45%
td.b
padding-right: 6px
text-align: right
font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif
font-size: 14px
width: 1%
a
font-size: 18px
.norm
i
display: inline-block
@@ -72,3 +52,30 @@
display: inline-block
text-align: right
margin-right: 10px
#um-users-overview-table
width: 100%
td
width: auto
min-width: 120px
vertical-align: middle
padding: 0 0 0 5px
box-sizing: border-box
&:first-child
padding: 0 5px 0 0
td > span
width: 100%
direction: ltr
display: grid
grid-gap: 6px
grid-template-columns: repeat(2, minmax(20px, auto))
align-content: start
align-items: center
justify-content: start
justify-items: center
a
word-break: break-word
&.count
justify-self: end
font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif
font-size: 18px
+9 -6
View File
@@ -1,13 +1,16 @@
.um-admin.post-type-um_directory .wp-list-table.posts .manage-column.column-id {
width: 60px; }
width: 60px;
}
.um-admin.post-type-um_directory .wp-list-table.posts .manage-column.column-shortcode {
width: 35%; }
width: 35%;
}
.um-admin.post-type-um_directory .wp-list-table.posts .column-is_default {
width: 120px;
text-align: center !important; }
text-align: center !important;
}
@media screen and (max-width: 782px) {
.um-admin.post-type-um_directory .wp-list-table.posts td.column-is_default {
text-align: left !important; } }
text-align: left !important;
}
}
+79 -66
View File
@@ -10,8 +10,8 @@
-ms-grid-template-columns: repeat(3, 1fr);
-ms-grid-gap: 10px;
-ms-grid-auto-rows: minmax(max-content, auto);
align-items: center; }
align-items: center;
}
#um-extensions-wrap .plugin-card {
display: flex;
flex-direction: column;
@@ -20,8 +20,8 @@
flex-wrap: nowrap;
width: 100%;
margin: 0;
padding: 20px; }
padding: 20px;
}
#um-extensions-wrap .plugin-image-wrapper {
display: flex;
flex-direction: row;
@@ -35,43 +35,48 @@
border-radius: 60px;
box-shadow: 0 2px 9px rgba(50, 50, 93, 0.21);
border: solid 4px #fff;
overflow: hidden; }
#um-extensions-wrap .plugin-image-wrapper a {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
background-color: #7856ff; }
overflow: hidden;
}
#um-extensions-wrap .plugin-image-wrapper a {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
background-color: #7856ff;
}
#um-extensions-wrap a.plugin-image {
display: block; }
#um-extensions-wrap a.plugin-image img {
display: block; }
#um-extensions-wrap a.plugin-image.svg-image {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
flex-wrap: nowrap; }
#um-extensions-wrap a.plugin-image.svg-image img {
filter: invert(1);
background-color: transparent;
width: 38px;
height: auto; }
#um-extensions-wrap a.plugin-image:not(.svg-image) img {
width: 70px;
margin: 0;
height: 70px;
padding: 0; }
display: block;
}
#um-extensions-wrap a.plugin-image img {
display: block;
}
#um-extensions-wrap a.plugin-image.svg-image {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
flex-wrap: nowrap;
}
#um-extensions-wrap a.plugin-image.svg-image img {
filter: invert(1);
background-color: transparent;
width: 38px;
height: auto;
}
#um-extensions-wrap a.plugin-image:not(.svg-image) img {
width: 70px;
margin: 0;
height: 70px;
padding: 0;
}
#um-extensions-wrap #um_bbpress_image {
background-color: #fff !important;
filter: none !important;
width: 70px !important; }
width: 70px !important;
}
#um-extensions-wrap #um_mycred_image {
background-color: #fff; }
background-color: #fff;
}
#um-extensions-wrap #um_groups_image,
#um-extensions-wrap #um_profile-tabs_image,
#um-extensions-wrap #um_user-tags_image,
@@ -80,44 +85,46 @@
#um-extensions-wrap #um_verified-users_image,
#um-extensions-wrap #um_private-content_image,
#um-extensions-wrap #um_online-users_image {
width: 36px !important; }
width: 36px !important;
}
#um-extensions-wrap #um_notices_image,
#um-extensions-wrap #um_social-activity_image,
#um-extensions-wrap #um_profile-completeness_image,
#um-extensions-wrap #um_private-messages_image,
#um-extensions-wrap #um_user-photos_image,
#um-extensions-wrap #um_terms-conditions_image {
width: 29px !important; }
width: 29px !important;
}
#um-extensions-wrap #um_social-login_image {
width: 28px !important; }
width: 28px !important;
}
#um-extensions-wrap #um_real-time-notifications_image,
#um-extensions-wrap #um_user-notes_image {
width: 26px !important; }
width: 26px !important;
}
#um-extensions-wrap #um_followers_image,
#um-extensions-wrap #um_user-locations_image {
width: 32px !important; }
width: 32px !important;
}
#um-extensions-wrap #um_user-bookmarks_image {
width: 23px !important; }
width: 23px !important;
}
#um-extensions-wrap .plugin-card-top {
margin: 0;
padding: 20px 0 0 0;
width: 100%;
min-height: 100px; }
#um-extensions-wrap .plugin-card-top h3 {
text-align: center;
margin: 0 0 20px 0;
padding: 0; }
#um-extensions-wrap .plugin-card-top .desc {
text-align: center;
margin: 0 !important;
padding: 0 !important; }
min-height: 100px;
}
#um-extensions-wrap .plugin-card-top h3 {
text-align: center;
margin: 0 0 20px 0;
padding: 0;
}
#um-extensions-wrap .plugin-card-top .desc {
text-align: center;
margin: 0 !important;
padding: 0 !important;
}
#um-extensions-wrap .plugin-action-links {
display: flex;
flex-direction: row;
@@ -125,22 +132,28 @@
align-items: baseline;
flex-wrap: nowrap;
width: 100%;
padding: 20px 0 0 0; }
padding: 20px 0 0 0;
}
@media (max-width: 1152px) {
#um-extensions-wrap .plugin-card-top {
min-height: 120px; } }
min-height: 120px;
}
}
@media (max-width: 992px) {
#um-extensions-wrap #the-list {
grid-template-columns: repeat(2, 1fr);
-ms-grid-template-columns: repeat(2, 1fr); } }
-ms-grid-template-columns: repeat(2, 1fr);
}
}
@media (max-width: 782px) {
#um-extensions-wrap #the-list {
grid-template-columns: repeat(1, 1fr);
-ms-grid-template-columns: repeat(1, 1fr); } }
-ms-grid-template-columns: repeat(1, 1fr);
}
}
@media screen and (max-width: 782px) {
#um-extensions-wrap .plugin-card-top {
min-height: 80px; } }
min-height: 80px;
}
}
+5 -3
View File
@@ -1,5 +1,7 @@
.um-form-fields-section {
padding: 0 0 0 10px;
float: right; }
.um-form-fields-section label input {
float: right; }
float: right;
}
.um-form-fields-section label input {
float: right;
}
+12 -11
View File
@@ -1,17 +1,18 @@
.um-admin.post-type-um_form .manage-column.column-id {
width: 60px; }
width: 60px;
}
.um-admin.post-type-um_form .manage-column.column-mode {
width: 100px; }
width: 100px;
}
.um-admin.post-type-um_form .manage-column.column-is_default {
width: 60px; }
width: 60px;
}
.um-admin.post-type-um_form .manage-column.column-title {
width: 200px; }
width: 200px;
}
.um-admin.post-type-um_form .manage-column.column-shortcode {
width: 200px; }
width: 200px;
}
.um-admin.post-type-um_form td.column-shortcode, .um-admin.post-type-um_form td.column-id {
font-size: 14px; }
font-size: 14px;
}
+312 -246
View File
@@ -1,20 +1,21 @@
.um-form-table .um-forms-line[data-conditional] {
display: none; }
display: none;
}
.um-form-table .um-forms-line label .um-req {
color: #a00;
margin: 0 0 0 3px;
font-weight: normal; }
font-weight: normal;
}
.um-form-table .um-forms-line .um-text-delete {
color: #a00;
float: left; }
.um-form-table .um-forms-line .um-text-delete:hover {
color: red; }
float: left;
}
.um-form-table .um-forms-line .um-text-delete:hover {
color: red;
}
.um-form-table .um-forms-line .um-multi-text-add-option {
margin-bottom: 14px; }
margin-bottom: 14px;
}
.um-form-table .um-forms-line .icon_preview {
display: none;
max-width: 200px;
@@ -25,115 +26,131 @@
background: #f7f7f7;
border-radius: 3px;
height: auto;
width: auto !important; }
width: auto !important;
}
.um-form-table .um-forms-line td .um-same-page-update-wrapper {
display: none;
margin: 7px 0 0 0; }
.um-form-table .um-forms-line td .um-same-page-update-wrapper input.um-admin-form-same-page-update {
margin: 7px 0 0 0; }
.um-form-table .um-forms-line td .um-same-page-update-wrapper .upgrade_log {
margin: 7px 0 0 0;
width: 100%;
height: 150px;
overflow: auto;
border: 1px solid #a1a1a1; }
.um-form-table .um-forms-line[data-field_type="same_page_update"] {
vertical-align: baseline; }
.um-form-table .um-forms-line[data-field_type="same_page_update"] th,
.um-form-table .um-forms-line[data-field_type="same_page_update"] td {
vertical-align: baseline; }
margin: 7px 0 0 0;
}
.um-form-table .um-forms-line td .um-same-page-update-wrapper input.um-admin-form-same-page-update {
margin: 7px 0 0 0;
}
.um-form-table .um-forms-line td .um-same-page-update-wrapper .upgrade_log {
margin: 7px 0 0 0;
width: 100%;
height: 150px;
overflow: auto;
border: 1px solid #a1a1a1;
}
.um-form-table .um-forms-line[data-field_type=same_page_update] {
vertical-align: baseline;
}
.um-form-table .um-forms-line[data-field_type=same_page_update] th,
.um-form-table .um-forms-line[data-field_type=same_page_update] td {
vertical-align: baseline;
}
.um-form-table.um-third-column .um-forms-line th {
width: 33%; }
width: 33%;
}
.um-form-table.um-half-column .um-forms-line th {
width: 50%; }
width: 50%;
}
.um-form-table.um-two-thirds-column .um-forms-line th {
width: 83%; }
width: 83%;
}
.um-form-table.um-top-label .um-forms-line td {
padding: 0 0 15px 0; }
.um-form-table.um-top-label .um-forms-line td label {
margin: 0 0 5px 0;
display: inline-block; }
.um-form-table.um-top-label .um-forms-line[data-field_type="icon"] td label {
padding: 0 0 15px 0;
}
.um-form-table.um-top-label .um-forms-line td label {
margin: 0 0 5px 0;
display: inline-block;
}
.um-form-table.um-top-label .um-forms-line[data-field_type=icon] td label {
width: 100%;
display: block;
margin: 0 0 5px 0; }
margin: 0 0 5px 0;
}
.um-external-link-icon {
width: 1em;
height: 1em;
margin: 0;
vertical-align: middle;
fill: currentcolor; }
fill: currentcolor;
}
.um_admin_fonticon_wrapper {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
flex-wrap: nowrap; }
.um_admin_fonticon_wrapper .um-admin-icon-value {
line-height: 1; }
.um_admin_fonticon_wrapper .um-admin-icon-value i {
top: 0; }
flex-wrap: nowrap;
}
.um_admin_fonticon_wrapper .um-admin-icon-value {
line-height: 1;
}
.um_admin_fonticon_wrapper .um-admin-icon-value i {
top: 0;
}
input[type="text"].um-forms-field,
input[type="url"].um-forms-field,
input[type="number"].um-forms-field,
input[type="date"].um-forms-field,
input[type="time"].um-forms-field,
input[type="password"].um-forms-field,
input[type=text].um-forms-field,
input[type=url].um-forms-field,
input[type=number].um-forms-field,
input[type=date].um-forms-field,
input[type=time].um-forms-field,
input[type=password].um-forms-field,
select.um-forms-field,
textarea.um-forms-field {
box-sizing: border-box; }
input[type="text"].um-forms-field.um-long-field,
input[type="url"].um-forms-field.um-long-field,
input[type="number"].um-forms-field.um-long-field,
input[type="date"].um-forms-field.um-long-field,
input[type="time"].um-forms-field.um-long-field,
input[type="password"].um-forms-field.um-long-field,
select.um-forms-field.um-long-field,
textarea.um-forms-field.um-long-field {
width: 100% !important; }
input[type="text"].um-forms-field.um-medium-field,
input[type="url"].um-forms-field.um-medium-field,
input[type="number"].um-forms-field.um-medium-field,
input[type="date"].um-forms-field.um-medium-field,
input[type="time"].um-forms-field.um-medium-field,
input[type="password"].um-forms-field.um-medium-field,
select.um-forms-field.um-medium-field,
textarea.um-forms-field.um-medium-field {
width: 50% !important; }
input[type="text"].um-forms-field.um-small-field,
input[type="url"].um-forms-field.um-small-field,
input[type="number"].um-forms-field.um-small-field,
input[type="date"].um-forms-field.um-small-field,
input[type="time"].um-forms-field.um-small-field,
input[type="password"].um-forms-field.um-small-field,
select.um-forms-field.um-small-field,
textarea.um-forms-field.um-small-field {
width: 25% !important; }
box-sizing: border-box;
}
input[type=text].um-forms-field.um-long-field,
input[type=url].um-forms-field.um-long-field,
input[type=number].um-forms-field.um-long-field,
input[type=date].um-forms-field.um-long-field,
input[type=time].um-forms-field.um-long-field,
input[type=password].um-forms-field.um-long-field,
select.um-forms-field.um-long-field,
textarea.um-forms-field.um-long-field {
width: 100% !important;
}
input[type=text].um-forms-field.um-medium-field,
input[type=url].um-forms-field.um-medium-field,
input[type=number].um-forms-field.um-medium-field,
input[type=date].um-forms-field.um-medium-field,
input[type=time].um-forms-field.um-medium-field,
input[type=password].um-forms-field.um-medium-field,
select.um-forms-field.um-medium-field,
textarea.um-forms-field.um-medium-field {
width: 50% !important;
}
input[type=text].um-forms-field.um-small-field,
input[type=url].um-forms-field.um-small-field,
input[type=number].um-forms-field.um-small-field,
input[type=date].um-forms-field.um-small-field,
input[type=time].um-forms-field.um-small-field,
input[type=password].um-forms-field.um-small-field,
select.um-forms-field.um-small-field,
textarea.um-forms-field.um-small-field {
width: 25% !important;
}
input[type="number"].um-forms-field {
padding-right: 0; }
input[type=number].um-forms-field {
padding-right: 0;
}
.um-multi-text-list,
.um-multi-selects-list,
.um-md-default-filters-list {
float: left;
width: 100%;
margin: 0 0 10px 0; }
margin: 0 0 10px 0;
}
.um-hidden-multi-text,
.um-hidden-multi-selects,
.um-hidden-md-default-filters {
display: none !important; }
display: none !important;
}
.um-md-default-filters-option-line {
float: left;
@@ -141,128 +158,153 @@ input[type="number"].um-forms-field {
clear: both;
border-bottom: 1px solid #eee;
padding: 0 0 5px 0;
margin: 5px 0 0 0; }
.um-md-default-filters-option-line .um-field-wrapper {
float: left;
width: calc( 100% - 60px);
line-height: 30px;
box-sizing: border-box; }
.um-md-default-filters-option-line .um-field-wrapper2 {
float: left;
width: calc( 100% - 60px);
line-height: 30px;
box-sizing: border-box; }
.um-md-default-filters-option-line .um-field-wrapper2.um {
margin: 5px 0 0 0; }
.um-md-default-filters-option-line .um-field-wrapper2 .ui-slider-range.ui-widget-header {
background: #44b0ec;
border: 1px solid #44b0ec !important;
margin-top: -1px; }
.um-md-default-filters-option-line .um-field-wrapper2 > select {
width: 100%;
float: left; }
.um-md-default-filters-option-line .um-field-wrapper2 > input {
width: 100%;
float: left; }
.um-md-default-filters-option-line .um-field-wrapper2 > input.um-timepicker-filter, .um-md-default-filters-option-line .um-field-wrapper2 > input.um-datepicker-filter {
width: calc( 50% - 7px) !important;
float: left; }
.um-md-default-filters-option-line .um-field-wrapper2 > input.um-timepicker-filter:first-child, .um-md-default-filters-option-line .um-field-wrapper2 > input.um-datepicker-filter:first-child {
margin-right: 11px; }
.um-md-default-filters-option-line .um-field-wrapper2 .um-slider {
margin: 5px 9px 0 9px;
width: calc( 100% - 18px);
box-sizing: border-box;
display: block; }
.um-md-default-filters-option-line .um-field-control {
float: left;
width: 60px;
line-height: 30px;
padding: 0 10px;
box-sizing: border-box; }
margin: 5px 0 0 0;
}
.um-md-default-filters-option-line .um-field-wrapper {
float: left;
width: calc(100% - 60px);
line-height: 30px;
box-sizing: border-box;
}
.um-md-default-filters-option-line .um-field-wrapper2 {
float: left;
width: calc(100% - 60px);
line-height: 30px;
box-sizing: border-box;
}
.um-md-default-filters-option-line .um-field-wrapper2.um {
margin: 5px 0 0 0;
}
.um-md-default-filters-option-line .um-field-wrapper2 .ui-slider-range.ui-widget-header {
background: #44b0ec;
border: 1px solid #44b0ec !important;
margin-top: -1px;
}
.um-md-default-filters-option-line .um-field-wrapper2 > select {
width: 100%;
float: left;
}
.um-md-default-filters-option-line .um-field-wrapper2 > input {
width: 100%;
float: left;
}
.um-md-default-filters-option-line .um-field-wrapper2 > input.um-timepicker-filter, .um-md-default-filters-option-line .um-field-wrapper2 > input.um-datepicker-filter {
width: calc(50% - 7px) !important;
float: left;
}
.um-md-default-filters-option-line .um-field-wrapper2 > input.um-timepicker-filter:first-child, .um-md-default-filters-option-line .um-field-wrapper2 > input.um-datepicker-filter:first-child {
margin-right: 11px;
}
.um-md-default-filters-option-line .um-field-wrapper2 .um-slider {
margin: 5px 9px 0 9px;
width: calc(100% - 18px);
box-sizing: border-box;
display: block;
}
.um-md-default-filters-option-line .um-field-control {
float: left;
width: 60px;
line-height: 30px;
padding: 0 10px;
box-sizing: border-box;
}
.um-multi-selects-option-line {
float: left;
width: 100%;
padding: 0;
clear: both;
margin: 0 0 5px 0; }
.um-multi-selects-option-line.um-admin-drag-fld {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
flex-wrap: nowrap;
background: none;
border: none; }
.um-multi-selects-option-line.um-admin-drag-fld .um-field-wrapper {
width: calc( 100% - 90px); }
.um-multi-selects-option-line.um-admin-drag-fld .um-field-icon {
float: left;
width: 20px;
text-align: left;
line-height: 30px; }
.um-multi-selects-option-line .um-field-wrapper {
float: left;
width: calc( 100% - 60px);
line-height: 30px;
box-sizing: border-box; }
.um-multi-selects-option-line .um-field-wrapper.um-custom-order-fields {
margin: 5px 0 0 0; }
.um-multi-selects-option-line .um-field-wrapper.um-custom-order-fields label {
float: left;
width: 100%;
line-height: 30px;
box-sizing: border-box;
margin: 0 !important;
padding: 0 !important;
font-weight: bold;
display: flex;
flex-direction: row;
justify-content: space-beetween;
align-items: baseline;
flex-wrap: nowrap; }
.um-multi-selects-option-line .um-field-wrapper.um-custom-order-fields label input[type="text"],
.um-multi-selects-option-line .um-field-wrapper.um-custom-order-fields label select {
width: auto;
display: inline;
font-weight: normal;
max-width: 70%;
flex: 0.9; }
.um-multi-selects-option-line .um-field-wrapper input,
.um-multi-selects-option-line .um-field-wrapper select {
float: left;
width: 100%;
margin: 0; }
.um-multi-selects-option-line .um-field-control {
float: left;
width: 60px;
line-height: 30px;
padding: 0 10px;
box-sizing: border-box; }
margin: 0 0 5px 0;
}
.um-multi-selects-option-line.um-admin-drag-fld {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
flex-wrap: nowrap;
background: none;
border: none;
}
.um-multi-selects-option-line.um-admin-drag-fld .um-field-wrapper {
width: calc(100% - 90px);
}
.um-multi-selects-option-line.um-admin-drag-fld .um-field-icon {
float: left;
width: 20px;
text-align: left;
line-height: 30px;
}
.um-multi-selects-option-line .um-field-wrapper {
float: left;
width: calc(100% - 60px);
line-height: 30px;
box-sizing: border-box;
}
.um-multi-selects-option-line .um-field-wrapper.um-custom-order-fields {
margin: 5px 0 0 0;
}
.um-multi-selects-option-line .um-field-wrapper.um-custom-order-fields label {
float: left;
width: 100%;
line-height: 30px;
box-sizing: border-box;
margin: 0 !important;
padding: 0 !important;
font-weight: bold;
display: flex;
flex-direction: row;
justify-content: space-beetween;
align-items: baseline;
flex-wrap: nowrap;
}
.um-multi-selects-option-line .um-field-wrapper.um-custom-order-fields label input[type=text],
.um-multi-selects-option-line .um-field-wrapper.um-custom-order-fields label select {
width: auto;
display: inline;
font-weight: normal;
max-width: 70%;
flex: 0.9;
}
.um-multi-selects-option-line .um-field-wrapper input,
.um-multi-selects-option-line .um-field-wrapper select {
float: left;
width: 100%;
margin: 0;
}
.um-multi-selects-option-line .um-field-control {
float: left;
width: 60px;
line-height: 30px;
padding: 0 10px;
box-sizing: border-box;
}
.um-multi-text-option-line {
float: left;
width: 100%;
padding: 0;
clear: both;
margin: 0 0 5px 0; }
.um-multi-text-option-line .um-field-wrapper {
float: left;
width: calc( 100% - 90px);
line-height: 30px;
box-sizing: border-box; }
.um-multi-text-option-line .um-field-wrapper input,
.um-multi-text-option-line .um-field-wrapper select {
float: left;
width: 100%;
margin: 0; }
.um-multi-text-option-line .um-field-control {
float: left;
width: 60px;
line-height: 30px;
padding: 0 10px;
box-sizing: border-box; }
margin: 0 0 5px 0;
}
.um-multi-text-option-line .um-field-wrapper {
float: left;
width: calc(100% - 90px);
line-height: 30px;
box-sizing: border-box;
}
.um-multi-text-option-line .um-field-wrapper input,
.um-multi-text-option-line .um-field-wrapper select {
float: left;
width: 100%;
margin: 0;
}
.um-multi-text-option-line .um-field-control {
float: left;
width: 60px;
line-height: 30px;
padding: 0 10px;
box-sizing: border-box;
}
.um-form-fields-section {
float: left;
@@ -271,52 +313,66 @@ input[type="number"].um-forms-field {
padding: 0 10px 0 0;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box; }
.um-form-fields-section label {
float: left;
width: 100%;
margin: 0;
padding: 0; }
.um-form-fields-section label input {
float: left;
margin-top: 0; }
.um-form-fields-section label span {
float: left;
width: calc( 100% - 20px); }
-webkit-box-sizing: border-box;
}
.um-form-fields-section label {
float: left;
width: 100%;
margin: 0;
padding: 0;
}
.um-form-fields-section label input {
float: left;
margin-top: 0;
}
.um-form-fields-section label span {
float: left;
width: calc(100% - 20px);
}
@media screen and (max-width: 782px) {
input[type="text"].um-forms-field.um-medium-field,
input[type=text].um-forms-field.um-medium-field,
select.um-forms-field.um-medium-field,
textarea.um-forms-field.um-medium-field {
width: 100% !important; }
input[type="text"].um-forms-field.um-small-field,
width: 100% !important;
}
input[type=text].um-forms-field.um-small-field,
select.um-forms-field.um-small-field,
textarea.um-forms-field.um-small-field {
width: 50% !important; }
width: 50% !important;
}
.um-form-fields-section {
width: 100% !important; }
width: 100% !important;
}
.um-admin-metabox .um-form-fields-section label {
line-height: 22px !important;
margin: 0 0 12px 0 !important; }
.um-admin-metabox .um-form-fields-section label span {
width: calc( 100% - 30px); }
margin: 0 0 12px 0 !important;
}
.um-admin-metabox .um-form-fields-section label span {
width: calc(100% - 30px);
}
.um-multi-text-option-line,
.um-multi-selects-option-line {
margin: 0 0 6px 0; }
margin: 0 0 6px 0;
}
.um-forms-line label {
float: left;
width: 100%; }
width: 100%;
}
.um-form-table.um-third-column .um-forms-line th, .um-form-table.um-half-column .um-forms-line th, .um-form-table.um-two-thirds-column .um-forms-line th {
float: left;
width: 100%;
margin-bottom: 5px; }
.um-form-table.um-third-column .um-forms-line th label, .um-form-table.um-half-column .um-forms-line th label, .um-form-table.um-two-thirds-column .um-forms-line th label {
float: left;
width: 100%; }
margin-bottom: 5px;
}
.um-form-table.um-third-column .um-forms-line th label, .um-form-table.um-half-column .um-forms-line th label, .um-form-table.um-two-thirds-column .um-forms-line th label {
float: left;
width: 100%;
}
.um-form-table.um-third-column .um-forms-line td, .um-form-table.um-half-column .um-forms-line td, .um-form-table.um-two-thirds-column .um-forms-line td {
float: left;
width: 100%; } }
width: 100%;
}
}
.um-sortable-items-field .um-sortable-item {
cursor: move !important;
padding: 5px;
@@ -333,38 +389,48 @@ input[type="number"].um-forms-field {
flex-direction: row;
justify-content: flex-start;
align-items: center;
flex-wrap: nowrap; }
.um-sortable-items-field .um-sortable-item.um-hidden-item {
display: none; }
.um-sortable-items-field .um-sortable-item .um-field-icon {
width: 20px;
text-align: left;
margin: 0 10px 0 0; }
flex-wrap: nowrap;
}
.um-sortable-items-field .um-sortable-item.um-hidden-item {
display: none;
}
.um-sortable-items-field .um-sortable-item .um-field-icon {
width: 20px;
text-align: left;
margin: 0 10px 0 0;
}
.wp-picker-container input.wp-color-picker[type="text"] {
.wp-picker-container input.wp-color-picker[type=text] {
width: 68px !important;
float: left !important;
padding: 2px 4px !important;
border-width: 1px !important; }
border-width: 1px !important;
}
span.um-admin-icon-value {
margin: 0 10px;
font-size: 13px; }
span.um-admin-icon-value i {
font-size: 28px;
color: #0085ba;
position: relative;
top: 5px; }
font-size: 13px;
}
span.um-admin-icon-value i {
font-size: 28px;
color: #0085ba;
position: relative;
top: 5px;
}
span.um-admin-icon-clear {
display: none;
cursor: pointer;
position: relative;
color: #ccc; }
span.um-admin-icon-clear.show {
display: inline-block; }
span.um-admin-icon-clear:hover {
color: #777; }
span.um-admin-icon-clear i {
font-size: 20px;
vertical-align: middle; }
color: #ccc;
}
span.um-admin-icon-clear.show {
display: inline-block;
}
span.um-admin-icon-clear:hover {
color: #777;
}
span.um-admin-icon-clear i {
font-size: 20px;
vertical-align: middle;
}
+57 -38
View File
@@ -1,34 +1,44 @@
ul#adminmenu li#toplevel_page_ultimatemember a.wp-has-current-submenu:after {
display: none !important; }
display: none !important;
}
ul#adminmenu li#toplevel_page_ultimatemember.wp-has-submenu.wp-not-current-submenu:hover:after {
right: -9999999px; }
right: -9999999px;
}
ul#adminmenu > li#toplevel_page_ultimatemember.current > a.current:after {
display: none !important; }
display: none !important;
}
.um-admin-notice {
border-color: #0085ba;
color: #555; }
.um-admin-notice.error {
border-color: #dc3232; }
.um-admin-notice.notice-warning {
border-color: #dba617; }
.um-admin-notice a {
text-decoration: none;
color: #0085ba; }
.um-admin-notice a:hover {
color: #44b0ec; }
.um-admin-notice a.button-primary {
background-color: #0085ba;
border-color: #0085ba; }
.um-admin-notice a.button-primary:hover {
background-color: #008ec2;
border-color: #008ec2; }
.um-admin-notice a.button-secondary {
opacity: 0.7; }
.um-admin-notice a.button-secondary:hover {
opacity: 0.9; }
color: #555;
}
.um-admin-notice.error {
border-color: #dc3232;
}
.um-admin-notice.notice-warning {
border-color: #dba617;
}
.um-admin-notice a {
text-decoration: none;
color: #0085ba;
}
.um-admin-notice a:hover {
color: #44b0ec;
}
.um-admin-notice a.button-primary {
background-color: #0085ba;
border-color: #0085ba;
}
.um-admin-notice a.button-primary:hover {
background-color: #008ec2;
border-color: #008ec2;
}
.um-admin-notice a.button-secondary {
opacity: 0.7;
}
.um-admin-notice a.button-secondary:hover {
opacity: 0.9;
}
/* UM Tooltip ( future helptip ) */
.um .ui-tooltip.um_tooltip {
@@ -41,19 +51,28 @@ ul#adminmenu > li#toplevel_page_ultimatemember.current > a.current:after {
font-size: 12px;
border-radius: 5px;
border: none !important;
text-shadow: none !important; }
text-shadow: none !important;
}
.um_tooltip {
cursor: pointer;
vertical-align: middle; }
.um_tooltip:hover {
opacity: 1; }
.um_tooltip:hover:before {
opacity: 0.8; }
.um_tooltip.dashicons, .um_tooltip.dashicons:before {
height: 22px; }
.um_tooltip.dashicons-editor-help:before {
float: left;
font-size: 20px;
line-height: 20px;
color: rgba(0, 0, 0, 0.85) !important; }
vertical-align: middle;
}
.um_tooltip:hover {
opacity: 1;
}
.um_tooltip:hover:before {
opacity: 0.8;
}
.um_tooltip.dashicons {
height: 22px;
}
.um_tooltip.dashicons:before {
height: 22px;
}
.um_tooltip.dashicons-editor-help:before {
float: left;
font-size: 20px;
line-height: 20px;
color: rgba(0, 0, 0, 0.85) !important;
}
+1 -1
View File
@@ -1 +1 @@
ul#adminmenu li#toplevel_page_ultimatemember a.wp-has-current-submenu:after{display:none!important}ul#adminmenu li#toplevel_page_ultimatemember.wp-has-submenu.wp-not-current-submenu:hover:after{right:-9999999px}ul#adminmenu>li#toplevel_page_ultimatemember.current>a.current:after{display:none!important}.um-admin-notice{border-color:#0085ba;color:#555}.um-admin-notice.error{border-color:#dc3232}.um-admin-notice.notice-warning{border-color:#dba617}.um-admin-notice a{text-decoration:none;color:#0085ba}.um-admin-notice a:hover{color:#44b0ec}.um-admin-notice a.button-primary{background-color:#0085ba;border-color:#0085ba}.um-admin-notice a.button-primary:hover{background-color:#008ec2;border-color:#008ec2}.um-admin-notice a.button-secondary{opacity:.7}.um-admin-notice a.button-secondary:hover{opacity:.9}.um .ui-tooltip.um_tooltip{padding:8px;color:#eee!important;background:rgba(0,0,0,.85)!important;position:absolute;z-index:10002;max-width:300px;font-size:12px;border-radius:5px;border:none!important;text-shadow:none!important}.um_tooltip{cursor:pointer;vertical-align:middle}.um_tooltip:hover{opacity:1}.um_tooltip:hover:before{opacity:.8}.um_tooltip.dashicons,.um_tooltip.dashicons:before{height:22px}.um_tooltip.dashicons-editor-help:before{float:left;font-size:20px;line-height:20px;color:rgba(0,0,0,.85)!important}
ul#adminmenu li#toplevel_page_ultimatemember a.wp-has-current-submenu:after{display:none!important}ul#adminmenu li#toplevel_page_ultimatemember.wp-has-submenu.wp-not-current-submenu:hover:after{right:-9999999px}ul#adminmenu>li#toplevel_page_ultimatemember.current>a.current:after{display:none!important}.um-admin-notice{border-color:#0085ba;color:#555}.um-admin-notice.error{border-color:#dc3232}.um-admin-notice.notice-warning{border-color:#dba617}.um-admin-notice a{text-decoration:none;color:#0085ba}.um-admin-notice a:hover{color:#44b0ec}.um-admin-notice a.button-primary{background-color:#0085ba;border-color:#0085ba}.um-admin-notice a.button-primary:hover{background-color:#008ec2;border-color:#008ec2}.um-admin-notice a.button-secondary{opacity:.7}.um-admin-notice a.button-secondary:hover{opacity:.9}.um .ui-tooltip.um_tooltip{padding:8px;color:#eee!important;background:rgba(0,0,0,.85)!important;position:absolute;z-index:10002;max-width:300px;font-size:12px;border-radius:5px;border:none!important;text-shadow:none!important}.um_tooltip{cursor:pointer;vertical-align:middle}.um_tooltip:hover{opacity:1}.um_tooltip:hover:before{opacity:.8}.um_tooltip.dashicons{height:22px}.um_tooltip.dashicons:before{height:22px}.um_tooltip.dashicons-editor-help:before{float:left;font-size:20px;line-height:20px;color:rgba(0,0,0,.85)!important}
+1 -1
View File
@@ -57,7 +57,7 @@ ul#adminmenu
&.dashicons
height: 22px
&:before
@extend .#{$helptip}.dashicons
height: 22px
&.dashicons-editor-help:before
float: left
font-size: 20px
+126 -93
View File
@@ -5,7 +5,8 @@
position: fixed;
top: 0;
left: 0;
z-index: 10000; }
z-index: 10000;
}
.um-admin-modal {
border-radius: 3px;
@@ -17,59 +18,78 @@
z-index: 10001;
box-sizing: border-box;
width: 730px;
margin-left: -365px; }
.um-admin-modal.normal {
width: 730px;
margin-left: -365px; }
.um-admin-modal.smaller {
width: 500px;
margin-left: -250px; }
.um-admin-modal.small {
width: 400px;
margin-left: -200px; }
.um-admin-modal input[type="submit"].button-primary {
padding: 0 12px !important;
vertical-align: middle !important;
line-height: 24px !important; }
.um-admin-modal .um-admin-modal-body {
padding: 10px 20px 10px 20px;
max-height: 500px;
overflow: auto; }
.um-admin-modal .um-admin-modal-body.um-admin-metabox label {
margin: 0 !important; }
.um-admin-modal .um-admin-modal-body.um-admin-metabox .um-admin-editor-h {
margin-top: 12px; }
.um-admin-modal .um-admin-modal-body.um-admin-metabox .um-admin-editor-h label {
margin: 0 0 4px 0 !important; }
.um-admin-modal .um-admin-modal-body.um-admin-metabox .wp-editor-wrap {
margin: 0 0 4px 0 !important; }
.um-admin-modal .um-admin-modal-body.um-admin-metabox .wp-editor-wrap textarea {
border: 0 !important; }
.um-admin-modal a.button-primary {
padding: 0 12px !important;
vertical-align: middle !important; }
.um-admin-modal a.button {
padding: 0 12px !important;
vertical-align: middle !important; }
.um-admin-modal a.button i:before {
display: block;
top: 0; }
.um-admin-modal h3 {
font-size: 14px;
line-height: 14px;
font-weight: normal;
color: #fff; }
.um-admin-modal h4 {
margin: 0 0 10px 0 !important; }
.um-admin-modal label {
font-size: 13px;
color: #aaa; }
.um-admin-modal p {
font-size: 13px;
color: #aaa; }
.um-admin-modal.loading .um-admin-modal-body {
height: 200px;
background: url(../../img/ajax-loader.gif) no-repeat center; }
margin-left: -365px;
}
.um-admin-modal.normal {
width: 730px;
margin-left: -365px;
}
.um-admin-modal.smaller {
width: 500px;
margin-left: -250px;
}
.um-admin-modal.small {
width: 400px;
margin-left: -200px;
}
.um-admin-modal input[type=submit].button-primary {
padding: 0 12px !important;
vertical-align: middle !important;
line-height: 24px !important;
}
.um-admin-modal .um-admin-modal-body {
padding: 10px 20px 10px 20px;
max-height: 500px;
overflow: auto;
}
.um-admin-modal .um-admin-modal-body.um-admin-metabox label {
margin: 0 !important;
}
.um-admin-modal .um-admin-modal-body.um-admin-metabox .um-admin-editor-h {
margin-top: 12px;
}
.um-admin-modal .um-admin-modal-body.um-admin-metabox .um-admin-editor-h label {
margin: 0 0 4px 0 !important;
}
.um-admin-modal .um-admin-modal-body.um-admin-metabox .wp-editor-wrap {
margin: 0 0 4px 0 !important;
}
.um-admin-modal .um-admin-modal-body.um-admin-metabox .wp-editor-wrap textarea {
border: 0 !important;
}
.um-admin-modal a.button-primary {
padding: 0 12px !important;
vertical-align: middle !important;
}
.um-admin-modal a.button {
padding: 0 12px !important;
vertical-align: middle !important;
}
.um-admin-modal a.button i:before {
display: block;
top: 0;
}
.um-admin-modal h3 {
font-size: 14px;
line-height: 14px;
font-weight: normal;
color: #fff;
}
.um-admin-modal h4 {
margin: 0 0 10px 0 !important;
}
.um-admin-modal label {
font-size: 13px;
color: #aaa;
}
.um-admin-modal p {
font-size: 13px;
color: #aaa;
}
.um-admin-modal.loading .um-admin-modal-body {
height: 200px;
background: url(../../img/ajax-loader.gif) no-repeat center;
}
.um-admin-modal-close {
position: absolute;
@@ -78,63 +98,76 @@
top: 14px;
font-size: 22px;
text-decoration: none;
opacity: 0.4; }
.um-admin-modal-close:hover {
opacity: 1; }
opacity: 0.4;
}
.um-admin-modal-close:hover {
opacity: 1;
}
.um-admin-modal-head {
padding: 4px 20px;
background: #0085ba;
position: relative;
border-radius: 3px 3px 0 0; }
border-radius: 3px 3px 0 0;
}
.um-admin-modal-foot {
padding: 20px 0 !important;
border-top: 1px solid #ddd;
text-align: center;
background: #eee;
border-radius: 0 0 3px 3px; }
.um-admin-modal-foot a,
.um-admin-modal-foot input {
margin: 0 10px !important;
font-size: 14px !important; }
border-radius: 0 0 3px 3px;
}
.um-admin-modal-foot a,
.um-admin-modal-foot input {
margin: 0 10px !important;
font-size: 14px !important;
}
#UM_fonticons div.um-admin-metabox {
padding-bottom: 22px !important; }
padding-bottom: 22px !important;
}
p._icon_search {
position: relative;
width: 85% !important;
margin: 0 auto !important;
padding: 12px 0 0 0 !important; }
p._icon_search:before {
position: absolute;
right: 6px;
top: 12px;
font-size: 20px;
content: "\f4a4";
font-family: "Ionicons";
color: #999; }
p._icon_search:before input[type="text"] {
padding-right: 40px !important; }
padding: 12px 0 0 0 !important;
}
p._icon_search:before {
position: absolute;
right: 6px;
top: 12px;
font-size: 20px;
content: "\f4a4";
font-family: "Ionicons";
color: #999;
}
p._icon_search:before input[type=text] {
padding-right: 40px !important;
}
.um-admin-icons {
padding: 0 0 15px 12px;
float: left; }
.um-admin-icons span {
cursor: pointer;
float: left;
margin: 5px;
color: #777;
border: 4px solid #eee;
border-radius: 3px; }
.um-admin-icons span:hover, .um-admin-icons span.highlighted {
color: #0085ba;
border-color: #0085ba; }
.um-admin-icons i {
vertical-align: middle !important;
font-size: 24px;
width: 24px;
text-align: center;
padding: 15px 20px;
display: inline-block; }
float: left;
}
.um-admin-icons span {
cursor: pointer;
float: left;
margin: 5px;
color: #777;
border: 4px solid #eee;
border-radius: 3px;
}
.um-admin-icons span:hover, .um-admin-icons span.highlighted {
color: #0085ba;
border-color: #0085ba;
}
.um-admin-icons i {
vertical-align: middle !important;
font-size: 24px;
width: 24px;
text-align: center;
padding: 15px 20px;
display: inline-block;
}
+7 -7
View File
@@ -1,11 +1,11 @@
.um-admin-overlay
background: rgba( 0, 0, 0, 0.7)
width: 100%
height: 100%
position: fixed
top: 0
left: 0
z-index: 10000
background: rgba( 0, 0, 0, 0.7)
width: 100%
height: 100%
position: fixed
top: 0
left: 0
z-index: 10000
.um-admin-modal
border-radius: 3px
+11 -8
View File
@@ -1,11 +1,14 @@
.wp-admin p.um-nav-roles {
display: none;
margin-top: 5px; }
.wp-admin p.um-nav-roles label {
margin-top: 2px !important;
margin-bottom: 2px !important; }
.wp-admin p.um-nav-roles label input[type="checkbox"] {
margin-top: 2px !important; }
margin-top: 5px;
}
.wp-admin p.um-nav-roles label {
margin-top: 2px !important;
margin-bottom: 2px !important;
}
.wp-admin p.um-nav-roles label input[type=checkbox] {
margin-top: 2px !important;
}
.wp-admin p.um-nav-mode {
margin-top: 10px; }
margin-top: 10px;
}
+20 -13
View File
@@ -1,39 +1,46 @@
#um-roles .row-actions .reset a {
color: #a00; }
#um-roles .row-actions .reset a:hover {
color: red; }
color: #a00;
}
#um-roles .row-actions .reset a:hover {
color: red;
}
.wp-list-table.roles .column-core,
.wp-list-table.roles .column-users {
width: 15%;
text-align: center !important; }
text-align: center !important;
}
.wp-list-table.roles .column-admin_access,
.wp-list-table.roles .column-priority {
width: 10%;
text-align: center !important; }
text-align: center !important;
}
@media screen and (max-width: 782px) {
.wp-list-table.roles .column-core,
.wp-list-table.roles .column-users,
.wp-list-table.roles .column-admin_access,
.wp-list-table.roles .column-priority {
text-align: left !important; } }
text-align: left !important;
}
}
#um-admin-form-wp-capabilities .um-metadata-line th {
width: auto; }
width: auto;
}
#um-admin-form-wp-capabilities .um-metadata-line td {
width: 20px; }
width: 20px;
}
#um_edit_role #titlewrap > span {
width: 40px;
font-size: 24px;
float: left;
display: block;
line-height: 37px; }
line-height: 37px;
}
#um-admin-form-publish #major-publishing-actions {
padding-top: 0;
padding-left: 0;
padding-right: 0; }
padding-right: 0;
}
+124 -87
View File
@@ -1,5 +1,6 @@
.um-settings-section .description {
font-style: italic; }
font-style: italic;
}
.um-notification-status {
margin-right: 18px;
@@ -9,74 +10,93 @@
float: left;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box; }
.um-notification-status.um-notification-is-active {
color: #7acf58; }
-webkit-box-sizing: border-box;
}
.um-notification-status.um-notification-is-active {
color: #7acf58;
}
.um-email-configure span {
line-height: 24px; }
line-height: 24px;
}
.um-long-field {
width: 100%; }
width: 100%;
}
.um-medium-field {
width: 50%; }
width: 50%;
}
.um-small-field {
width: 25%; }
width: 25%;
}
.column-configure {
width: 10%;
text-align: right; }
text-align: right;
}
th.column-email.column-primary {
padding-left: 48px; }
padding-left: 48px;
}
.um-form-table .um-forms-line td {
padding-right: 0; }
padding-right: 0;
}
#um-settings-emails {
margin: 15px 0; }
margin: 15px 0;
}
#um-settings-template-versions {
margin: 15px 0; }
#um-settings-template-versions .wp-list-table .column-core_version {
width: 100px;
text-align: center; }
#um-settings-template-versions .wp-list-table .column-theme_version {
width: 100px;
text-align: center; }
#um-settings-template-versions .wp-list-table .column-status {
width: 260px; }
margin: 15px 0;
}
#um-settings-template-versions .wp-list-table .column-core_version {
width: 100px;
text-align: center;
}
#um-settings-template-versions .wp-list-table .column-theme_version {
width: 100px;
text-align: center;
}
#um-settings-template-versions .wp-list-table .column-status {
width: 260px;
}
#um-settings-form {
float: left;
width: 100%;
margin: 0; }
#um-settings-form .subsubsub {
float: left;
width: 100%; }
#um-settings-form h2.title a.um-back-button {
font-weight: normal;
font-size: 30px;
line-height: 1;
text-decoration: none;
margin-right: 5px; }
margin: 0;
}
#um-settings-form .subsubsub {
float: left;
width: 100%;
}
#um-settings-form h2.title a.um-back-button {
font-weight: normal;
font-size: 30px;
line-height: 1;
text-decoration: none;
margin-right: 5px;
}
.um-settings-line .multi-checkbox-line {
float: left;
width: 100%;
clear: both;
margin: 0 0 10px 0;
padding: 0; }
padding: 0;
}
.um-settings-line .multi-checkbox-column {
float: left;
margin: 0;
padding: 0; }
.um-settings-line .multi-checkbox-column label {
float: left;
width: 100%; }
padding: 0;
}
.um-settings-line .multi-checkbox-column label {
float: left;
width: 100%;
}
.wrap-licenses .form-table,
.wrap-licenses thead,
@@ -86,8 +106,8 @@ th.column-email.column-primary {
.wrap-licenses td,
.wrap-licenses th,
.wrap-licenses caption {
display: block; }
display: block;
}
.wrap-licenses .form-table tr {
float: left;
margin: 0 15px 15px 0;
@@ -98,23 +118,23 @@ th.column-email.column-primary {
padding: 14px;
min-height: 240px;
position: relative;
box-sizing: border-box; }
box-sizing: border-box;
}
.wrap-licenses .form-table th {
background: #f9f9f9;
padding: 14px;
border-bottom: 1px solid #ccc;
margin: -14px -14px 20px;
width: 100%; }
width: 100%;
}
.wrap-licenses .form-table td {
padding: 0; }
padding: 0;
}
.wrap-licenses td input.regular-text {
margin: 0 0 8px;
width: 100%; }
.wrap-licenses .edd-license-data[class*="edd-license-"] {
width: 100%;
}
.wrap-licenses .edd-license-data[class*=edd-license-] {
position: absolute;
background: #fafafa;
padding: 14px;
@@ -123,75 +143,92 @@ th.column-email.column-primary {
min-height: 67px;
width: 100%;
bottom: 14px;
box-sizing: border-box; }
.wrap-licenses .edd-license-data[class*="edd-license-"] a {
color: #444; }
.wrap-licenses .edd-license-data[class*="edd-license-"] a:hover {
text-decoration: none; }
box-sizing: border-box;
}
.wrap-licenses .edd-license-data[class*=edd-license-] a {
color: #444;
}
.wrap-licenses .edd-license-data[class*=edd-license-] a:hover {
text-decoration: none;
}
.wrap-licenses .edd-license-data.license-expires-soon-notice {
background-color: #00a0d2;
color: #fff;
border-color: #00a0d2; }
.wrap-licenses .edd-license-data.license-expires-soon-notice a {
color: #fff; }
.wrap-licenses .edd-license-data.license-expires-soon-notice a:hover {
text-decoration: none; }
border-color: #00a0d2;
}
.wrap-licenses .edd-license-data.license-expires-soon-notice a {
color: #fff;
}
.wrap-licenses .edd-license-data.license-expires-soon-notice a:hover {
text-decoration: none;
}
.wrap-licenses .edd-license-data.edd-license-expired {
background-color: #e24e4e;
color: #fff;
border-color: #e24e4e; }
.wrap-licenses .edd-license-data.edd-license-expired a {
color: #fff; }
.wrap-licenses .edd-license-data.edd-license-expired a:hover {
text-decoration: none; }
border-color: #e24e4e;
}
.wrap-licenses .edd-license-data.edd-license-expired a {
color: #fff;
}
.wrap-licenses .edd-license-data.edd-license-expired a:hover {
text-decoration: none;
}
.wrap-licenses .edd-license-data.edd-license-valid {
background-color: #5abc55;
color: #fff;
border-color: #5abc55; }
border-color: #5abc55;
}
.wrap-licenses .edd-license-data.edd-license-error, .wrap-licenses .edd-license-data.edd-license-missing, .wrap-licenses .edd-license-data.edd-license-invalid, .wrap-licenses .edd-license-data.edd-license-site_inactive, .wrap-licenses .edd-license-data.edd-license-item_name_mismatch {
background-color: #ffebcd;
border-color: #ffebcd; }
border-color: #ffebcd;
}
.wrap-licenses .edd-license-data p {
font-size: 13px;
margin-top: 0; }
margin-top: 0;
}
.wrap-licenses ~ p.submit {
clear: both; }
clear: both;
}
@media screen and (max-width: 980px) {
.wrap-licenses .form-table tr {
width: calc( 50% - 15px);
max-width: none; } }
width: calc(50% - 15px);
max-width: none;
}
}
@media screen and (max-width: 782px) {
#um-settings-template-versions .wp-list-table .column-core_version,
#um-settings-template-versions .wp-list-table .column-theme_version {
width: auto;
text-align: left; }
text-align: left;
}
.wrap-licenses .form-table tr {
width: 100%;
margin-right: 0;
max-width: none; }
max-width: none;
}
.um-settings-line .multi-checkbox-column {
width: 100% !important; }
.um-settings-line .multi-checkbox-column label {
line-height: 30px !important; }
width: 100% !important;
}
.um-settings-line .multi-checkbox-column label {
line-height: 30px !important;
}
.um-medium-field {
width: 100%; }
width: 100%;
}
.um-small-field {
width: 50%; } }
width: 50%;
}
}
.um_setting_ajax_button_response.complete {
color: #7acf58;
font-style: italic; }
font-style: italic;
}
.wp-core-ui .button.um_license_activate, .wp-core-ui .button.um_license_deactivate, .wp-core-ui .button.um_license_reactivate {
margin-top: 5px; }
margin-top: 5px;
}
.um-media-upload .um-media-upload-url {
margin-bottom: 5px; }
margin-bottom: 5px;
}
+17 -13
View File
@@ -1,29 +1,33 @@
.um-admin.users-php .subsubsub li.subsep {
display: block;
visibility: hidden;
height: 0; }
height: 0;
}
.um-admin-modal .um-admin-infobox label {
font-weight: bold;
display: block;
color: #333;
cursor: default; }
cursor: default;
}
.um-admin-modal .um-admin-infobox p {
color: #666;
padding-top: 15px; }
padding-top: 15px;
}
.um-admin-modal .um-admin-infobox > p:not(:first-child) {
border-top: 1px solid #e5e5e5; }
border-top: 1px solid #e5e5e5;
}
.um-admin-modal .um-admin-infobox > p:first-child {
margin-top: 0;
padding-top: 0; }
padding-top: 0;
}
.um-admin-modal .um-admin-infobox > .um-row > p {
border-top: 1px solid #e5e5e5; }
.um-admin-modal .um-admin-infobox > .um-row > p:last-child {
margin-bottom: 0; }
border-top: 1px solid #e5e5e5;
}
.um-admin-modal .um-admin-infobox > .um-row > p:last-child {
margin-bottom: 0;
}
#UM_preview_registration .um-admin-modal-foot {
display: none; }
display: none;
}
+12 -11
View File
@@ -2,8 +2,8 @@
.um .tipsy,
.um-page .tipsy {
z-index: 9999999999;
font-size: inherit; }
font-size: inherit;
}
.um .tipsy-inner,
.um-page .tipsy-inner {
background-color: #333333;
@@ -15,20 +15,21 @@
line-height: 17px;
word-wrap: break-word;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; }
-moz-osx-font-smoothing: grayscale;
}
.um .tipsy-arrow-n,
.um-page .tipsy-arrow-n {
border-bottom-color: #333; }
border-bottom-color: #333;
}
.um .tipsy-arrow-s,
.um-page .tipsy-arrow-s {
border-top-color: #333; }
border-top-color: #333;
}
.um .tipsy-arrow-e,
.um-page .tipsy-arrow-e {
border-left-color: #333; }
border-left-color: #333;
}
.um .tipsy-arrow-w,
.um-page .tipsy-arrow-w {
border-right-color: #333; }
border-right-color: #333;
}
+66 -58
View File
@@ -1,85 +1,93 @@
.um-directory .um-member-directory-header .um-member-directory-header-row.um-member-directory-search-row {
justify-content: flex-start; }
justify-content: flex-start;
}
.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-search-line label {
margin: 0 0 0 10px; }
margin: 0 0 0 10px;
}
.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type {
margin: 0 0 0 10px; }
margin: 0 0 0 10px;
}
.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a a {
margin: 0 0 0 5px; }
margin: 0 0 0 5px;
}
.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-member-directory-sorting-a .um-new-dropdown {
right: -12px;
left: auto; }
left: auto;
}
.um-directory .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-filters .um-member-directory-filters-a a {
margin: 0 0 0 5px; }
margin: 0 0 0 5px;
}
.um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-datepicker-filter-type input, .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-timepicker-filter-type input {
margin: 0 0 0 5px !important; }
.um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-datepicker-filter-type input:nth-child(even), .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-timepicker-filter-type input:nth-child(even) {
margin: 0 5px 0 0 !important; }
margin: 0 0 0 5px !important;
}
.um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-datepicker-filter-type input:nth-child(even), .um-directory .um-member-directory-header .um-member-directory-header-row .um-search .um-search-filter.um-timepicker-filter-type input:nth-child(even) {
margin: 0 5px 0 0 !important;
}
.um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .um-members-filter-tag {
margin: 0 0 5px 10px; }
.um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .um-members-filter-tag:first-child {
margin-left: 10px; }
.um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .um-members-filter-tag .um-members-filter-remove {
margin-left: 0;
margin-right: 10px; }
margin: 0 0 5px 10px;
}
.um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .um-members-filter-tag:first-child {
margin-left: 10px;
}
.um-directory .um-member-directory-header .um-member-directory-header-row .um-filtered-line .um-members-filter-tag .um-members-filter-remove {
margin-left: 0;
margin-right: 10px;
}
.um-directory .um-members-wrapper .um-members.um-members-grid .um-member .um-member-card .um-members-edit-btn a.um-edit-profile-btn:before {
margin-right: 0;
margin-left: 8px; }
margin-left: 8px;
}
.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-photo {
margin: 0 0 0 15px; }
margin: 0 0 0 15px;
}
.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-content {
margin: 0 0 0 10px; }
margin: 0 0 0 10px;
}
.um-directory .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-container .um-member-card .um-member-card-actions .um-member-cog .um-new-dropdown {
right: auto;
left: 0;
text-align: right; }
text-align: right;
}
.um-directory .um-members-pagination-box .um-members-pagi {
align-items: center; }
.um-directory .um-members-pagination-box .um-members-pagi .pagi.pagi-arrow {
transform: rotate(180deg); }
align-items: center;
}
.um-directory .um-members-pagination-box .um-members-pagi .pagi.pagi-arrow {
transform: rotate(180deg);
}
.um-directory.uimob340 .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type {
margin: 0 0 0 2px; }
margin: 0 0 0 2px;
}
.um-directory.uimob340 .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-sorting .um-new-dropdown {
right: auto;
left: 0; }
left: 0;
}
.um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo {
margin: 0 0 0 10px; }
margin: 0 0 0 10px;
}
.um-directory.uimob340 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons {
margin: 0 0 0 10px; }
margin: 0 0 0 10px;
}
.um-directory.uimob500 .um-member-directory-header .um-member-directory-header-row .um-member-directory-nav-line .um-member-directory-view-type {
margin: 0 0 0 5px; }
margin: 0 0 0 5px;
}
.um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo {
margin: 0 0 0 10px; }
margin: 0 0 0 10px;
}
.um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer {
align-items: flex-start; }
.um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons {
margin: 0 0 0 10px; }
.um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper {
margin: 0 0 5px 10px; }
align-items: flex-start;
}
.um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons {
margin: 0 0 0 10px;
}
.um-directory.uimob500 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper {
margin: 0 0 5px 10px;
}
.um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-photo {
margin: 0 0 0 10px; }
margin: 0 0 0 10px;
}
.um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons {
margin: 0 0 0 10px; }
.um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper {
margin: 0 0 5px 10px; }
margin: 0 0 0 10px;
}
.um-directory.uimob800 .um-members-wrapper .um-members.um-members-list .um-member .um-member-card-footer .um-member-card-footer-buttons .um-members-list-footer-button-wrapper {
margin: 0 0 5px 10px;
}
+1194 -960
View File
File diff suppressed because it is too large Load Diff
+17 -2
View File
@@ -433,6 +433,14 @@ jQuery(document).ready( function() {
addClass('um-forms-field um-long-field').removeClass('um-hidden-multi-selects').attr('id', list.data('id_attr') + '-' + k);
});
jQuery('.um-multi-selects-add-option[data-name="um_metadata[_um_search_exclude_fields][]"]').on('click', function() {
jQuery('.um-multi-selects-list[data-field_id="_um_search_include_fields"] li.um-multi-selects-option-line').remove();
});
jQuery('.um-multi-selects-add-option[data-name="um_metadata[_um_search_include_fields][]"]').on('click', function() {
jQuery('.um-multi-selects-list[data-field_id="_um_search_exclude_fields"] li.um-multi-selects-option-line').remove();
});
var um_local_date = new Date();
var um_gmt_hours = -um_local_date.getTimezoneOffset() / 60;
jQuery('input[name="um-gmt-offset"]').val( um_gmt_hours );
@@ -819,11 +827,18 @@ jQuery(document).ready( function() {
});
jQuery('.um-clear-image').on('click', function(e) {
var clear_button = jQuery(this);
var default_image_url = clear_button.siblings('.um-forms-field').data('default');
let clear_button = jQuery(this);
let default_image_url = clear_button.siblings('.um-forms-field').data('default');
if ( undefined === default_image_url ) {
default_image_url = '';
}
clear_button.siblings('.um-set-image').show();
clear_button.hide();
clear_button.siblings('.icon_preview').attr( 'src', default_image_url );
if ( '' === default_image_url ) {
clear_button.siblings('.icon_preview').hide();
}
clear_button.siblings('.um-media-upload-data-id').val('');
clear_button.siblings('.um-media-upload-data-width').val('');
clear_button.siblings('.um-media-upload-data-height').val('');
+1 -1
View File
File diff suppressed because one or more lines are too long
+19
View File
@@ -1,5 +1,24 @@
== Changelog ==
= 2.8.5: April 9, 2024 =
* Enhancements:
- Added: "Hide my last login" via the Account > Privacy setting
- Added: Exclude and Include fields for member directory searching
- Tweak: Compatibility with WordPress 6.5
* Bugfixes:
- Fixed: URL attributes escaping (CVE-2024-2765)
- Fixed: wp-admin Ultimate Member > Dashboard layouts
- Fixed: Required fields labels
- Fixed: Change password and update account email notifications duplicates
- Fixed: Reset Password urlencoded username
- Fixed: Clear media JS in wp-admin settings
* Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade
= 2.8.4: March 6, 2024 =
* Enhancements:
+232 -46
View File
@@ -2,97 +2,283 @@
Ultimate Member dependencies
*/
var gulp = require('gulp')
, uglify = require('gulp-uglify'),
sass = require('gulp-sass'),
rename = require('gulp-rename'),
cleanCSS = require( 'gulp-clean-css' );
// var gulp = require('gulp')
// , uglify = require('gulp-uglify'),
// sass = require('gulp-sass'),
// rename = require('gulp-rename'),
// cleanCSS = require( 'gulp-clean-css' );
const { src, dest, parallel } = require( 'gulp' );
const sass = require( 'gulp-sass' )( require( 'sass' ) );
const uglify = require( 'gulp-uglify' );
const cleanCSS = require( 'gulp-clean-css' );
const rename = require( 'gulp-rename' );
// task
gulp.task( 'default', function ( done ) {
sass.compiler = require( 'node-sass' );
// gulp.task( 'default', function ( done ) {
// sass.compiler = require( 'node-sass' );
//
// gulp.src(['assets/sass/*.sass']).pipe( sass().on( 'error', sass.logError ) ).pipe( gulp.dest( 'assets/css' ) );
//
// gulp.src(['assets/js/*.js','!assets/js/*.min.js']) // path to your files
// .pipe( uglify() )
// .pipe( rename({ suffix: '.min' }) )
// .pipe( gulp.dest( 'assets/js/' ) );
//
// gulp.src(['assets/js/admin/*.js','!assets/js/admin/*.min.js']) // path to your files
// .pipe( uglify() )
// .pipe( rename({ suffix: '.min' }) )
// .pipe( gulp.dest( 'assets/js/admin/' ) );
// gulp.src(['assets/css/admin/*.css', '!assets/css/admin/*.min.css',])
// .pipe( cleanCSS() )
// .pipe( rename( { suffix: '.min' } ) )
// .pipe( gulp.dest( 'assets/css/admin/' ) );
//
// gulp.src(['assets/css/*.css', '!assets/css/*.min.css',])
// .pipe( cleanCSS() )
// .pipe( rename( { suffix: '.min' } ) )
// .pipe( gulp.dest( 'assets/css/' ) );
//
// // full CSS files
// gulp.src(['assets/css/admin/*.sass'])
// .pipe( sass().on( 'error', sass.logError ) )
// .pipe( gulp.dest( 'assets/css/admin/' ) );
// // min CSS files
// gulp.src(['assets/css/admin/*.sass'])
// .pipe( sass().on( 'error', sass.logError ) )
// .pipe( cleanCSS() )
// .pipe( rename( { suffix: '.min' } ) )
// .pipe( gulp.dest( 'assets/css/admin/' ) );
//
// // full CSS files
// gulp.src(['assets/css/*.sass'])
// .pipe( sass().on( 'error', sass.logError ) )
// .pipe( gulp.dest( 'assets/css/' ) );
// // min CSS files
// gulp.src(['assets/css/*.sass'])
// .pipe( sass().on( 'error', sass.logError ) )
// .pipe( cleanCSS() )
// .pipe( rename( { suffix: '.min' } ) )
// .pipe( gulp.dest( 'assets/css/' ) );
//
// gulp.src(['assets/libs/legacy/fonticons/*.css', '!assets/libs/legacy/fonticons/*.min.css',])
// .pipe( cleanCSS() )
// .pipe( rename( { suffix: '.min' } ) )
// .pipe( gulp.dest( 'assets/libs/legacy/fonticons/' ) );
//
// // Dropdown lib
// // full CSS files
// gulp.src(['assets/libs/dropdown/*.sass'])
// .pipe( sass().on( 'error', sass.logError ) )
// .pipe( gulp.dest( 'assets/libs/dropdown/' ) );
// // min CSS files
// gulp.src(['assets/libs/dropdown/*.sass'])
// .pipe( sass().on( 'error', sass.logError ) )
// .pipe( cleanCSS() )
// .pipe( rename( { suffix: '.min' } ) )
// .pipe( gulp.dest( 'assets/libs/dropdown/' ) );
// gulp.src(['assets/libs/dropdown/*.js', '!assets/libs/dropdown/*.min.js',])
// .pipe( uglify() )
// .pipe( rename({ suffix: '.min' }) )
// .pipe( gulp.dest( 'assets/libs/dropdown/' ) );
//
// // Modal lib
// // full CSS files
// gulp.src(['assets/libs/modal/*.sass'])
// .pipe( sass().on( 'error', sass.logError ) )
// .pipe( gulp.dest( 'assets/libs/modal/' ) );
// // min CSS files
// gulp.src(['assets/libs/modal/*.sass'])
// .pipe( sass().on( 'error', sass.logError ) )
// .pipe( cleanCSS() )
// .pipe( rename( { suffix: '.min' } ) )
// .pipe( gulp.dest( 'assets/libs/modal/' ) );
// gulp.src(['assets/libs/modal/*.js', '!assets/libs/modal/*.min.js',])
// .pipe( uglify() )
// .pipe( rename({ suffix: '.min' }) )
// .pipe( gulp.dest( 'assets/libs/modal/' ) );
//
// // Raty lib
// gulp.src(['assets/libs/raty/*.css', '!assets/libs/raty/*.min.css',])
// .pipe( cleanCSS() )
// .pipe( rename( { suffix: '.min' } ) )
// .pipe( gulp.dest( 'assets/libs/raty/' ) );
// gulp.src(['assets/libs/raty/*.js', '!assets/libs/raty/*.min.js',])
// .pipe( uglify() )
// .pipe( rename({ suffix: '.min' }) )
// .pipe( gulp.dest( 'assets/libs/raty/' ) );
//
// // Tipsy lib
// gulp.src(['assets/libs/tipsy/*.css', '!assets/libs/tipsy/*.min.css',])
// .pipe( cleanCSS() )
// .pipe( rename( { suffix: '.min' } ) )
// .pipe( gulp.dest( 'assets/libs/tipsy/' ) );
// gulp.src(['assets/libs/tipsy/*.js', '!assets/libs/tipsy/*.min.js',])
// .pipe( uglify() )
// .pipe( rename({ suffix: '.min' }) )
// .pipe( gulp.dest( 'assets/libs/tipsy/' ) );
//
// // Pickadate lib
// gulp.src(['assets/libs/pickadate/*.css', '!assets/libs/pickadate/*.min.css',])
// .pipe( cleanCSS() )
// .pipe( rename( { suffix: '.min' } ) )
// .pipe( gulp.dest( 'assets/libs/pickadate/' ) );
// gulp.src(['assets/libs/pickadate/*.js', '!assets/libs/pickadate/*.min.js',])
// .pipe( uglify() )
// .pipe( rename({ suffix: '.min' }) )
// .pipe( gulp.dest( 'assets/libs/pickadate/' ) );
// gulp.src(['assets/libs/pickadate/translations/*.js', '!assets/libs/pickadate/translations/*.min.js',])
// .pipe( uglify() )
// .pipe( rename({ suffix: '.min' }) )
// .pipe( gulp.dest( 'assets/libs/pickadate/translations/' ) );
//
// done();
// });
//
// function js( path ) {
// return src( ['assets/' + path + '/js/*.js', '!assets/' + path + '/js/*.min.js'] )
// .pipe( uglify() )
// .pipe( rename( { suffix: '.min' } ) )
// .pipe( dest( 'assets/' + path + '/js' ) );
// }
//
// function css( path ) {
// sass.compiler = require( 'node-sass' );
//
// var src_array = exclude_css( path );
// return src( src_array )
// .pipe( sass().on( 'error', sass.logError ) )
// .pipe( dest( 'assets/' + path + '/css' ) );
// }
//
// function min_css( path ) {
// sass.compiler = require( 'node-sass' );
//
// var src_array = exclude_css( path );
// return src( src_array )
// .pipe( sass().on( 'error', sass.logError ) )
// .pipe( cleanCSS() )
// .pipe( rename( { suffix: '.min' } ) )
// .pipe( dest( 'assets/' + path + '/css' ) );
// }
gulp.src(['assets/sass/*.sass']).pipe( sass().on( 'error', sass.logError ) ).pipe( gulp.dest( 'assets/css' ) );
function defaultTask( done ) {
// sass.compiler = require( 'node-sass' );
gulp.src(['assets/js/*.js','!assets/js/*.min.js']) // path to your files
.pipe( uglify() )
.pipe( rename({ suffix: '.min' }) )
.pipe( gulp.dest( 'assets/js/' ) );
src(['assets/sass/*.sass']).pipe( sass().on( 'error', sass.logError ) ).pipe( dest( 'assets/css' ) );
gulp.src(['assets/js/admin/*.js','!assets/js/admin/*.min.js']) // path to your files
.pipe( uglify() )
.pipe( rename({ suffix: '.min' }) )
.pipe( gulp.dest( 'assets/js/admin/' ) );
gulp.src(['assets/css/admin/*.css', '!assets/css/admin/*.min.css',])
src(['assets/js/*.js','!assets/js/*.min.js']) // path to your files
.pipe( uglify() )
.pipe( rename({ suffix: '.min' }) )
.pipe( dest( 'assets/js/' ) );
src(['assets/js/admin/*.js','!assets/js/admin/*.min.js']) // path to your files
.pipe( uglify() )
.pipe( rename({ suffix: '.min' }) )
.pipe( dest( 'assets/js/admin/' ) );
src(['assets/css/admin/*.css', '!assets/css/admin/*.min.css',])
.pipe( cleanCSS() )
.pipe( rename( { suffix: '.min' } ) )
.pipe( gulp.dest( 'assets/css/admin/' ) );
.pipe( dest( 'assets/css/admin/' ) );
gulp.src(['assets/css/*.css', '!assets/css/*.min.css',])
src(['assets/css/*.css', '!assets/css/*.min.css',])
.pipe( cleanCSS() )
.pipe( rename( { suffix: '.min' } ) )
.pipe( gulp.dest( 'assets/css/' ) );
.pipe( dest( 'assets/css/' ) );
// full CSS files
gulp.src(['assets/css/admin/*.sass'])
src(['assets/css/admin/*.sass'])
.pipe( sass().on( 'error', sass.logError ) )
.pipe( gulp.dest( 'assets/css/admin/' ) );
.pipe( dest( 'assets/css/admin/' ) );
// min CSS files
gulp.src(['assets/css/admin/*.sass'])
src(['assets/css/admin/*.sass'])
.pipe( sass().on( 'error', sass.logError ) )
.pipe( cleanCSS() )
.pipe( rename( { suffix: '.min' } ) )
.pipe( gulp.dest( 'assets/css/admin/' ) );
.pipe( dest( 'assets/css/admin/' ) );
// full CSS files
gulp.src(['assets/css/*.sass'])
src(['assets/css/*.sass'])
.pipe( sass().on( 'error', sass.logError ) )
.pipe( gulp.dest( 'assets/css/' ) );
.pipe( dest( 'assets/css/' ) );
// min CSS files
gulp.src(['assets/css/*.sass'])
src(['assets/css/*.sass'])
.pipe( sass().on( 'error', sass.logError ) )
.pipe( cleanCSS() )
.pipe( rename( { suffix: '.min' } ) )
.pipe( gulp.dest( 'assets/css/' ) );
.pipe( dest( 'assets/css/' ) );
gulp.src(['assets/libs/legacy/fonticons/*.css', '!assets/libs/legacy/fonticons/*.min.css',])
src(['assets/libs/legacy/fonticons/*.css', '!assets/libs/legacy/fonticons/*.min.css',])
.pipe( cleanCSS() )
.pipe( rename( { suffix: '.min' } ) )
.pipe( gulp.dest( 'assets/libs/legacy/fonticons/' ) );
.pipe( dest( 'assets/libs/legacy/fonticons/' ) );
// Dropdown lib
// full CSS files
src(['assets/libs/dropdown/*.sass'])
.pipe( sass().on( 'error', sass.logError ) )
.pipe( dest( 'assets/libs/dropdown/' ) );
// min CSS files
src(['assets/libs/dropdown/*.sass'])
.pipe( sass().on( 'error', sass.logError ) )
.pipe( cleanCSS() )
.pipe( rename( { suffix: '.min' } ) )
.pipe( dest( 'assets/libs/dropdown/' ) );
src(['assets/libs/dropdown/*.js', '!assets/libs/dropdown/*.min.js',])
.pipe( uglify() )
.pipe( rename({ suffix: '.min' }) )
.pipe( dest( 'assets/libs/dropdown/' ) );
// Modal lib
// full CSS files
src(['assets/libs/modal/*.sass'])
.pipe( sass().on( 'error', sass.logError ) )
.pipe( dest( 'assets/libs/modal/' ) );
// min CSS files
src(['assets/libs/modal/*.sass'])
.pipe( sass().on( 'error', sass.logError ) )
.pipe( cleanCSS() )
.pipe( rename( { suffix: '.min' } ) )
.pipe( dest( 'assets/libs/modal/' ) );
src(['assets/libs/modal/*.js', '!assets/libs/modal/*.min.js',])
.pipe( uglify() )
.pipe( rename({ suffix: '.min' }) )
.pipe( dest( 'assets/libs/modal/' ) );
// Raty lib
gulp.src(['assets/libs/raty/*.css', '!assets/libs/raty/*.min.css',])
src(['assets/libs/raty/*.css', '!assets/libs/raty/*.min.css',])
.pipe( cleanCSS() )
.pipe( rename( { suffix: '.min' } ) )
.pipe( gulp.dest( 'assets/libs/raty/' ) );
gulp.src(['assets/libs/raty/*.js', '!assets/libs/raty/*.min.js',])
.pipe( dest( 'assets/libs/raty/' ) );
src(['assets/libs/raty/*.js', '!assets/libs/raty/*.min.js',])
.pipe( uglify() )
.pipe( rename({ suffix: '.min' }) )
.pipe( gulp.dest( 'assets/libs/raty/' ) );
.pipe( dest( 'assets/libs/raty/' ) );
// Tipsy lib
gulp.src(['assets/libs/tipsy/*.css', '!assets/libs/tipsy/*.min.css',])
src(['assets/libs/tipsy/*.css', '!assets/libs/tipsy/*.min.css',])
.pipe( cleanCSS() )
.pipe( rename( { suffix: '.min' } ) )
.pipe( gulp.dest( 'assets/libs/tipsy/' ) );
gulp.src(['assets/libs/tipsy/*.js', '!assets/libs/tipsy/*.min.js',])
.pipe( dest( 'assets/libs/tipsy/' ) );
src(['assets/libs/tipsy/*.js', '!assets/libs/tipsy/*.min.js',])
.pipe( uglify() )
.pipe( rename({ suffix: '.min' }) )
.pipe( gulp.dest( 'assets/libs/tipsy/' ) );
.pipe( dest( 'assets/libs/tipsy/' ) );
// Pickadate lib
gulp.src(['assets/libs/pickadate/*.css', '!assets/libs/pickadate/*.min.css',])
src(['assets/libs/pickadate/*.css', '!assets/libs/pickadate/*.min.css',])
.pipe( cleanCSS() )
.pipe( rename( { suffix: '.min' } ) )
.pipe( gulp.dest( 'assets/libs/pickadate/' ) );
gulp.src(['assets/libs/pickadate/*.js', '!assets/libs/pickadate/*.min.js',])
.pipe( dest( 'assets/libs/pickadate/' ) );
src(['assets/libs/pickadate/*.js', '!assets/libs/pickadate/*.min.js',])
.pipe( uglify() )
.pipe( rename({ suffix: '.min' }) )
.pipe( gulp.dest( 'assets/libs/pickadate/' ) );
gulp.src(['assets/libs/pickadate/translations/*.js', '!assets/libs/pickadate/translations/*.min.js',])
.pipe( dest( 'assets/libs/pickadate/' ) );
src(['assets/libs/pickadate/translations/*.js', '!assets/libs/pickadate/translations/*.min.js',])
.pipe( uglify() )
.pipe( rename({ suffix: '.min' }) )
.pipe( gulp.dest( 'assets/libs/pickadate/translations/' ) );
.pipe( dest( 'assets/libs/pickadate/translations/' ) );
done();
});
done();
}
exports.default = defaultTask;
+14 -6
View File
@@ -95,16 +95,17 @@ final class Enqueue extends \um\common\Enqueue {
* @since 2.6.1
*/
public function block_editor() {
$suffix = self::get_suffix();
$js_url = self::get_url( 'js' );
$css_url = self::get_url( 'css' );
$suffix = self::get_suffix();
$js_url = self::get_url( 'js' );
$css_url = self::get_url( 'css' );
$libs_url = self::get_url( 'libs' );
$this->load_gutenberg_js();
wp_register_script( 'um_admin_blocks_shortcodes', $js_url . 'admin/block-renderer' . $suffix . '.js', array( 'wp-i18n', 'wp-blocks', 'wp-components' ), UM_VERSION, true );
wp_set_script_translations( 'um_admin_blocks_shortcodes', 'ultimate-member' );
$notifications_enabled = 0;
$notifications_enabled = false;
if ( false !== UM()->account()->is_notifications_tab_visible() ) {
$notifications_enabled = UM()->options()->get( 'account_tab_notifications' );
}
@@ -112,7 +113,7 @@ final class Enqueue extends \um\common\Enqueue {
$um_account_settings = array(
'general' => array(
'label' => __( 'General', 'ultimate-member' ),
'enabled' => 1,
'enabled' => true,
),
'password' => array(
'label' => __( 'Password', 'ultimate-member' ),
@@ -192,10 +193,14 @@ final class Enqueue extends \um\common\Enqueue {
wp_register_style( 'um_styles', $css_url . 'um-styles' . $suffix . '.css', array( 'um_ui', 'um_tipsy', 'um_raty', 'um_fonticons_ii', 'um_fonticons_fa', 'select2' ), UM_VERSION );
wp_register_style( 'um_profile', $css_url . 'um-profile' . $suffix . '.css', array(), UM_VERSION );
wp_register_style( 'um_responsive', $css_url . 'um-responsive' . $suffix . '.css', array( 'um_profile', 'um_crop' ), UM_VERSION );
wp_register_style( 'um_responsive', $css_url . 'um-responsive' . $suffix . '.css', array( 'um_profile' ), UM_VERSION );
wp_register_style( 'um_account', $css_url . 'um-account' . $suffix . '.css', array(), UM_VERSION );
wp_register_style( 'um_default_css', $css_url . 'um-old-default' . $suffix . '.css', array(), UM_VERSION );
wp_register_style( 'um_datetime', $libs_url . 'pickadate/default' . $suffix . '.css', array(), '3.6.2' );
wp_register_style( 'um_datetime_date', $libs_url . 'pickadate/default.date' . $suffix . '.css', array( 'um_datetime' ), '3.6.2' );
wp_register_style( 'um_datetime_time', $libs_url . 'pickadate/default.time' . $suffix . '.css', array( 'um_datetime' ), '3.6.2' );
wp_enqueue_style( 'um_default_css' );
wp_enqueue_style( 'um_members' );
wp_enqueue_style( 'um_styles' );
@@ -203,6 +208,9 @@ final class Enqueue extends \um\common\Enqueue {
wp_enqueue_style( 'um_responsive' );
wp_enqueue_style( 'um_account' );
wp_enqueue_style( 'um_datetime_date' );
wp_enqueue_style( 'um_datetime_time' );
$custom_css = '.wp-block .um{opacity: 1;}.um_request_name {display: none !important;}';
wp_add_inline_style( 'um_styles', $custom_css );
+1 -1
View File
@@ -331,7 +331,7 @@ if ( ! class_exists( 'um\admin\Secure' ) ) {
$val .= '<div><small>' . esc_html__( 'Blocked Due to Suspicious Activity', 'ultimate-member' ) . '</small></div>';
$nonce = wp_create_nonce( 'um-security-restore-account-nonce-' . $user_id );
$restore_account_url = admin_url( 'users.php?user_id=' . $user_id . '&um_secure_restore_account=1&_wpnonce=' . $nonce );
$action = ' &#183; <a href=" ' . esc_attr( $restore_account_url ) . ' " onclick=\'return confirm("' . esc_js( __( 'Are you sure that you want to restore this account after getting flagged for suspicious activity?', 'ultimate-member' ) ) . '");\'><small>' . esc_html__( 'Restore Account', 'ultimate-member' ) . '</small></a>';
$action = ' &#183; <a href=" ' . esc_url( $restore_account_url ) . ' " onclick=\'return confirm("' . esc_js( __( 'Are you sure that you want to restore this account after getting flagged for suspicious activity?', 'ultimate-member' ) ) . '");\'><small>' . esc_html__( 'Restore Account', 'ultimate-member' ) . '</small></a>';
if ( ! empty( $datetime ) ) {
$val .= '<div><small>' . human_time_diff( strtotime( $datetime ) ) . ' ' . __( 'ago', 'ultimate-member' ) . '</small>' . $action . '</div>';
}
+2 -2
View File
@@ -165,7 +165,7 @@ class Site_Health {
$pages = array();
$predefined_pages = UM()->config()->core_pages;
foreach ( $predefined_pages as $page_s => $page ) {
$page_id = UM()->options()->get_core_page_id( $page_s );
$page_id = UM()->options()->get_predefined_page_option_key( $page_s );
$page_title = ! empty( $page['title'] ) ? $page['title'] : '';
if ( empty( $page_title ) ) {
continue;
@@ -513,7 +513,7 @@ class Site_Health {
'value' => UM()->options()->get( 'enable_reset_password_limit' ) ? $labels['yes'] : $labels['no'],
),
);
if ( 1 === absint( UM()->options()->get( 'enable_reset_password_limit' ) ) ) {
if ( UM()->options()->get( 'enable_reset_password_limit' ) ) {
$access_other_settings['um-reset_password_limit_number'] = array(
'label' => __( 'Reset Password Limit ', 'ultimate-member' ),
'value' => UM()->options()->get( 'reset_password_limit_number' ),
+1 -1
View File
@@ -244,7 +244,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Columns' ) ) {
public function add_display_post_states( $post_states, $post ) {
foreach ( UM()->config()->core_pages as $page_key => $page_value ) {
$page_id = UM()->options()->get( UM()->options()->get_core_page_id( $page_key ) );
$page_id = UM()->options()->get( UM()->options()->get_predefined_page_option_key( $page_key ) );
if ( $page_id == $post->ID ) {
$post_states[ 'um_core_page_' . $page_key ] = sprintf( 'UM %s', $page_value['title'] );
@@ -1187,6 +1187,8 @@ if ( ! class_exists( 'um\admin\core\Admin_Metabox' ) ) {
delete_post_meta( $post_id, '_um_tagline_fields' );
delete_post_meta( $post_id, '_um_reveal_fields' );
delete_post_meta( $post_id, '_um_search_fields' );
delete_post_meta( $post_id, '_um_search_exclude_fields' );
delete_post_meta( $post_id, '_um_search_include_fields' );
delete_post_meta( $post_id, '_um_roles_can_search' );
delete_post_meta( $post_id, '_um_roles_can_filter' );
delete_post_meta( $post_id, '_um_show_these_users' );
+6 -38
View File
@@ -249,42 +249,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
),
);
// $core_pages = UM()->config()->core_pages;
//
// foreach ( $core_pages as $page_s => $page ) {
// $have_pages = UM()->query()->wp_pages();
// $page_id = UM()->options()->get_core_page_id( $page_s );
//
// $page_title = ! empty( $page['title'] ) ? $page['title'] : '';
//
// if ( 'reached_maximum_limit' === $have_pages ) {
// $general_pages_fields[] = array(
// 'id' => $page_id,
// 'type' => 'text',
// // translators: %s: Page title
// 'label' => sprintf( __( '%s page', 'ultimate-member' ), $page_title ),
// 'placeholder' => __( 'Add page ID', 'ultimate-member' ),
// 'compiler' => true,
// 'size' => 'small',
// );
// } else {
// $general_pages_fields[] = array(
// 'id' => $page_id,
// 'type' => 'select',
// // translators: %s: Page title
// 'label' => sprintf( __( '%s page', 'ultimate-member' ), $page_title ),
// 'options' => UM()->query()->wp_pages(),
// 'placeholder' => __( 'Choose a page...', 'ultimate-member' ),
// 'compiler' => true,
// 'size' => 'small',
// );
// }
//
// $settings_map[ $page_id ] = array(
// 'sanitize' => 'absint',
// );
// }
foreach ( UM()->config()->get( 'predefined_pages' ) as $slug => $page ) {
$page_id = UM()->options()->get_predefined_page_option_key( $slug );
$page_title = ! empty( $page['title'] ) ? $page['title'] : '';
@@ -786,6 +750,9 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
'use_um_gravatar_default_image' => array(
'sanitize' => 'bool',
),
'delete_comments' => array(
'sanitize' => 'bool',
),
'toggle_password' => array(
'sanitize' => 'bool',
),
@@ -1041,6 +1008,9 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
'rest_api_version' => array(
'sanitize' => 'text',
),
'disable_restriction_pre_queries' => array(
'sanitize' => 'bool',
),
'uninstall_on_delete' => array(
'sanitize' => 'bool',
),
@@ -1413,7 +1383,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
'args' => array(
'textarea_rows' => 6,
),
'conditional' => array( 'account_tab_delete', '=', '1' ),
),
array(
'id' => 'delete_account_no_pass_required_text',
@@ -1423,7 +1392,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
'args' => array(
'textarea_rows' => 6,
),
'conditional' => array( 'account_tab_delete', '=', '0' ),
),
),
),
+1 -1
View File
@@ -274,7 +274,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Users' ) ) {
public function user_row_actions( $actions, $user_object ) {
$user_id = $user_object->ID;
$actions['frontend_profile'] = '<a href="' . um_user_profile_url( $user_id ) . '">' . __( 'View profile', 'ultimate-member' ) . '</a>';
$actions['frontend_profile'] = '<a href="' . esc_url( um_user_profile_url( $user_id ) ) . '">' . __( 'View profile', 'ultimate-member' ) . '</a>';
$submitted = get_user_meta( $user_id, 'submitted', true );
if ( ! empty( $submitted ) ) {
+67 -86
View File
@@ -1,93 +1,74 @@
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
?>
<div class="table">
<table>
<tr class="first">
<td class="first b">
<a href="<?php echo esc_url( admin_url( 'users.php' ) ); ?>">
<table id="um-users-overview-table">
<tr>
<td>
<span>
<a class="count" href="<?php echo esc_url( admin_url( 'users.php' ) ); ?>">
<?php echo UM()->query()->count_users(); ?>
</a>
</td>
<td class="t">
<a href="<?php echo esc_url( admin_url( 'users.php' ) ); ?>">
<?php _e( 'Users', 'ultimate-member' ); ?>
</a>
</td>
</tr>
<tr>
<td class="first b">
<a href="<?php echo esc_url( admin_url( 'users.php?um_status=approved' ) ); ?>">
<?php echo UM()->query()->count_users_by_status( 'approved' ); ?>
</a>
</td>
<td class="t">
<a href="<?php echo esc_url( admin_url( 'users.php?um_status=approved' ) ); ?>">
<?php _e( 'Approved', 'ultimate-member' ); ?>
</a>
</td>
</tr>
<tr>
<td class="first b">
<a href="<?php echo esc_url( admin_url( 'users.php?um_status=rejected' ) ); ?>">
<?php echo UM()->query()->count_users_by_status( 'rejected' ); ?>
</a>
</td>
<td class="t">
<a href="<?php echo esc_url( admin_url( 'users.php?um_status=rejected' ) ); ?>">
<?php _e( 'Rejected', 'ultimate-member' ); ?>
</a>
</td>
</tr>
</table>
</div>
<div class="table table_right">
<table>
<tr class="first">
<td class="b">
<a href="<?php echo esc_url( admin_url( 'users.php?um_status=awaiting_admin_review' ) ); ?>">
<?php echo UM()->query()->count_users_by_status( 'awaiting_admin_review' ); ?>
</a>
</td>
<td class="last t">
<a href="<?php echo esc_url( admin_url( 'users.php?um_status=awaiting_admin_review' ) ); ?>" class="warning">
<?php _e( 'Pending Review', 'ultimate-member' ); ?>
</a>
</td>
</tr>
<tr>
<td class="b">
<a href="<?php echo esc_url( admin_url( 'users.php?um_status=awaiting_email_confirmation' ) ); ?>">
<?php echo UM()->query()->count_users_by_status( 'awaiting_email_confirmation' ); ?>
</a>
</td>
<td class="last t">
<a href="<?php echo esc_url( admin_url( 'users.php?um_status=awaiting_email_confirmation' ) ); ?>" class="warning">
<?php _e( 'Awaiting Email Confirmation', 'ultimate-member' ); ?>
</a>
</td>
</tr>
<tr>
<td class="first b">
<a href="<?php echo esc_url( admin_url( 'users.php?um_status=inactive' ) ); ?>">
<?php echo UM()->query()->count_users_by_status( 'inactive' ); ?>
</a>
</td>
<td class="t">
<a href="<?php echo esc_url( admin_url( 'users.php?um_status=inactive' ) ); ?>">
<?php _e( 'Inactive', 'ultimate-member' ); ?>
</a>
</td>
</tr>
</table>
</div>
</span>
</td>
<td>
<span>
<a class="count" href="<?php echo esc_url( admin_url( 'users.php?um_status=awaiting_admin_review' ) ); ?>">
<?php echo UM()->query()->count_users_by_status( 'awaiting_admin_review' ); ?>
</a>
<a href="<?php echo esc_url( admin_url( 'users.php?um_status=awaiting_admin_review' ) ); ?>" class="warning">
<?php _e( 'Pending Review', 'ultimate-member' ); ?>
</a>
</span>
</td>
</tr>
<tr>
<td>
<span>
<a class="count" href="<?php echo esc_url( admin_url( 'users.php?um_status=approved' ) ); ?>">
<?php echo UM()->query()->count_users_by_status( 'approved' ); ?>
</a>
<a href="<?php echo esc_url( admin_url( 'users.php?um_status=approved' ) ); ?>">
<?php _e( 'Approved', 'ultimate-member' ); ?>
</a>
</span>
</td>
<td>
<span>
<a class="count" href="<?php echo esc_url( admin_url( 'users.php?um_status=awaiting_email_confirmation' ) ); ?>">
<?php echo UM()->query()->count_users_by_status( 'awaiting_email_confirmation' ); ?>
</a>
<a href="<?php echo esc_url( admin_url( 'users.php?um_status=awaiting_email_confirmation' ) ); ?>" class="warning">
<?php _e( 'Awaiting Email Confirmation', 'ultimate-member' ); ?>
</a>
</span>
</td>
</tr>
<tr>
<td>
<span>
<a class="count" href="<?php echo esc_url( admin_url( 'users.php?um_status=rejected' ) ); ?>">
<?php echo UM()->query()->count_users_by_status( 'rejected' ); ?>
</a>
<a href="<?php echo esc_url( admin_url( 'users.php?um_status=rejected' ) ); ?>">
<?php _e( 'Rejected', 'ultimate-member' ); ?>
</a></span>
</td>
<td>
<span>
<a class="count" href="<?php echo esc_url( admin_url( 'users.php?um_status=inactive' ) ); ?>">
<?php echo UM()->query()->count_users_by_status( 'inactive' ); ?>
</a>
<a href="<?php echo esc_url( admin_url( 'users.php?um_status=inactive' ) ); ?>">
<?php _e( 'Inactive', 'ultimate-member' ); ?>
</a>
</span>
</td>
</tr>
</table>
<div class="clear"></div>
+28 -2
View File
@@ -10,8 +10,10 @@ $_um_roles_search_value = empty( $_um_roles_search_value ) ? array() : $_um_role
$_um_roles_filter_value = get_post_meta( $post_id, '_um_roles_can_filter', true );
$_um_roles_filter_value = empty( $_um_roles_filter_value ) ? array() : $_um_roles_filter_value;
$_um_search_fields = get_post_meta( $post_id, '_um_search_fields', true );
$_um_search_filters = get_post_meta( $post_id, '_um_search_filters', true ); ?>
$_um_search_exclude_fields = get_post_meta( $post_id, '_um_search_exclude_fields', true );
$_um_search_include_fields = get_post_meta( $post_id, '_um_search_include_fields', true );
$_um_search_fields = get_post_meta( $post_id, '_um_search_fields', true );
$_um_search_filters = get_post_meta( $post_id, '_um_search_filters', true ); ?>
<div class="um-admin-metabox">
@@ -38,6 +40,30 @@ $_um_search_filters = get_post_meta( $post_id, '_um_search_filters', true ); ?>
'columns' => 3,
'conditional' => array( '_um_search', '=', 1 ),
),
array(
'id' => '_um_search_exclude_fields',
'type' => 'multi_selects',
'label' => __( 'Exclude fields from search', 'ultimate-member' ),
'value' => $_um_search_exclude_fields,
'conditional' => array( '_um_search', '=', 1 ),
'options' => UM()->member_directory()->searching_fields,
'add_text' => __( 'Add New', 'ultimate-member' ),
'show_default_number' => 0,
'sorting' => true,
'tooltip' => __( 'Choose fields to exclude them from search. This option will delete all included fields.', 'ultimate-member' ),
),
array(
'id' => '_um_search_include_fields',
'type' => 'multi_selects',
'label' => __( 'Fields to search by', 'ultimate-member' ),
'value' => $_um_search_include_fields,
'conditional' => array( '_um_search', '=', 1 ),
'options' => UM()->member_directory()->searching_fields,
'add_text' => __( 'Add New', 'ultimate-member' ),
'show_default_number' => 0,
'sorting' => true,
'tooltip' => __( 'Choose fields to only include them in the search. This option will delete all excluded fields.', 'ultimate-member' ),
),
array(
'id' => '_um_filters',
'type' => 'checkbox',
+5 -5
View File
@@ -284,7 +284,7 @@ class Secure {
if ( $suspicious_accounts_count > 0 ) {
$lock_register_forms_url = admin_url( 'admin.php?page=um_options&tab=advanced&section=secure&um_secure_lock_register_forms=1&_wpnonce=' . wp_create_nonce( 'um_secure_lock_register_forms' ) );
$content .= $br . esc_html__( '1. Please temporarily lock all your active Register forms.', 'ultimate-member' );
$content .= ' <a href="' . esc_attr( $lock_register_forms_url ) . '" target="_blank">' . esc_html__( 'Click here to lock them now.', 'ultimate-member' ) . '</a>';
$content .= ' <a href="' . esc_url( $lock_register_forms_url ) . '" target="_blank">' . esc_html__( 'Click here to lock them now.', 'ultimate-member' ) . '</a>';
$content .= ' ' . esc_html__( 'You can unblock the Register forms later. Just go to Ultimate Member > Settings > Advanced > Security and uncheck the option "Lock All Register Forms".', 'ultimate-member' );
$content .= $br . $br;
$suspicious_accounts_url = admin_url( 'users.php?um_status=inactive' );
@@ -300,24 +300,24 @@ class Secure {
}
$content .= esc_html__( '2. Review all suspicious accounts and delete them completely.', 'ultimate-member' );
$content .= ' <a href="' . esc_attr( $suspicious_accounts_url ) . '" target="_blank">' . esc_html__( 'Click here to review accounts.', 'ultimate-member' ) . '</a>';
$content .= ' <a href="' . esc_url( $suspicious_accounts_url ) . '" target="_blank">' . esc_html__( 'Click here to review accounts.', 'ultimate-member' ) . '</a>';
$content .= $br . $br;
$nonce = wp_create_nonce( 'um-secure-expire-session-nonce' );
$destroy_all_sessions_url = admin_url( '?um_secure_expire_all_sessions=1&_wpnonce=' . esc_attr( $nonce ) . '&except_me=1' );
$content .= esc_html__( '3. If accounts are suspicious to you, please destroy all user sessions to logout active users on your site.', 'ultimate-member' );
$content .= ' <a href="' . esc_attr( $destroy_all_sessions_url ) . '" target="_blank">' . esc_html__( 'Click here to Destroy Sessions now', 'ultimate-member' ) . '</a>';
$content .= ' <a href="' . esc_url( $destroy_all_sessions_url ) . '" target="_blank">' . esc_html__( 'Click here to Destroy Sessions now', 'ultimate-member' ) . '</a>';
$content .= $br . $br;
$content .= esc_html__( '4. Run a complete scan on your site using third-party Security plugins such as', 'ultimate-member' );
$content .= ' <a target="_blank" href="' . esc_attr( admin_url( 'plugin-install.php?s=Jetpack%2520Protect%2520WP%2520Scan&tab=search&type=term' ) ) . '">' . esc_html__( 'WPScan/Jetpack Protect or WordFence Security', 'ultimate-member' ) . '</a>.';
$content .= ' <a target="_blank" href="' . esc_url( admin_url( 'plugin-install.php?s=Jetpack%2520Protect%2520WP%2520Scan&tab=search&type=term' ) ) . '">' . esc_html__( 'WPScan/Jetpack Protect or WordFence Security', 'ultimate-member' ) . '</a>.';
$content .= $br . $br;
$nonce = wp_create_nonce( 'um-secure-enable-reset-pass-nonce' );
$reset_pass_sessions_url = admin_url( '?um_secure_enable_reset_password=1&_wpnonce=' . esc_attr( $nonce ) . '&except_me=1' );
$content .= esc_html__( '5. Force users to Reset their Passwords.', 'ultimate-member' );
$content .= ' <a target="_blank" href="' . esc_attr( $reset_pass_sessions_url ) . '">' . esc_html__( 'Click here to enable this option', 'ultimate-member' ) . '</a>.';
$content .= ' <a target="_blank" href="' . esc_url( $reset_pass_sessions_url ) . '">' . esc_html__( 'Click here to enable this option', 'ultimate-member' ) . '</a>.';
$content .= ' ' . esc_html__( 'When this option is enabled, users will be asked to reset their passwords(one-time) on the next login in the UM Login form.', 'ultimate-member' );
$content .= $br . $br;
@@ -1 +1 @@
<?php return array('dependencies' => array('wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-server-side-render'), 'version' => 'a7aefdd7c81b99d7d5e3');
<?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-server-side-render'), 'version' => '5b1a8ec016836a5c26cd');
@@ -1 +1 @@
!function(){"use strict";var e={n:function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,{a:r}),r},d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t=window.wp.element,r=window.wp.data,n=window.wp.components,i=window.wp.blockEditor,o=window.wp.serverSideRender,l=e.n(o);(0,window.wp.blocks.registerBlockType)("um-block/um-member-directories",{edit:function(e){let{member_id:o,setAttributes:u}=e.attributes;const c=(0,i.useBlockProps)(),a=(0,r.useSelect)((e=>e("core").getEntityRecords("postType","um_directory",{per_page:-1,_fields:["id","title"]})));if(!a)return(0,t.createElement)("p",null,(0,t.createElement)(n.Spinner,null),wp.i18n.__("Loading...","ultimate-member"));if(0===a.length)return"No posts found.";let d=[{id:"",title:""}].concat(a).map((e=>({label:e.title.rendered,value:e.id})));return(0,t.createElement)("div",{...c},(0,t.createElement)(l(),{block:"um-block/um-member-directories",attributes:e.attributes}),(0,t.createElement)(i.InspectorControls,null,(0,t.createElement)(n.PanelBody,{title:wp.i18n.__("Select Directories","ultimate-member")},(0,t.createElement)(n.SelectControl,{label:wp.i18n.__("Select Directories","ultimate-member"),className:"um_select_directory",value:o,options:d,style:{height:"35px",lineHeight:"20px",padding:"0 7px"},onChange:t=>{e.setAttributes({member_id:t})}}))))},save:function(e){return null}}),jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".um.um-directory").each((function(){var e=jQuery(this);um_ajax_get_members(e),um_slider_filter_init(e),um_datepicker_filter_init(e),um_timepicker_filter_init(e)}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))}();
(()=>{"use strict";var e={n:t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},d:(t,r)=>{for(var i in r)e.o(r,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:r[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.React,r=window.wp.data,i=window.wp.components,n=window.wp.blockEditor,o=window.wp.serverSideRender;var l=e.n(o);(0,window.wp.blocks.registerBlockType)("um-block/um-member-directories",{edit:function(e){let{member_id:o,setAttributes:a}=e.attributes;const c=(0,n.useBlockProps)(),u=(0,r.useSelect)((e=>e("core").getEntityRecords("postType","um_directory",{per_page:-1,_fields:["id","title"]})));if(!u)return(0,t.createElement)("p",null,(0,t.createElement)(i.Spinner,null),wp.i18n.__("Loading...","ultimate-member"));if(0===u.length)return"No posts found.";let d=[{id:"",title:""}].concat(u).map((e=>({label:e.title.rendered,value:e.id})));return(0,t.createElement)("div",{...c},(0,t.createElement)(l(),{block:"um-block/um-member-directories",attributes:e.attributes}),(0,t.createElement)(n.InspectorControls,null,(0,t.createElement)(i.PanelBody,{title:wp.i18n.__("Select Directories","ultimate-member")},(0,t.createElement)(i.SelectControl,{label:wp.i18n.__("Select Directories","ultimate-member"),className:"um_select_directory",value:o,options:d,style:{height:"35px",lineHeight:"20px",padding:"0 7px"},onChange:t=>{e.setAttributes({member_id:t})}}))))},save:function(e){return null}}),jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".um.um-directory").each((function(){var e=jQuery(this);um_ajax_get_members(e),um_slider_filter_init(e),um_datepicker_filter_init(e),um_timepicker_filter_init(e)})),jQuery(e.addedNodes).find(".um-member").each((function(){var e=jQuery(this).parent();UM_Member_Grid(e)}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))})();
@@ -101,6 +101,10 @@ jQuery(window).on( 'load', function($) {
um_datepicker_filter_init( directory );
um_timepicker_filter_init( directory );
});
jQuery(mutation.addedNodes).find('.um-member').each(function() {
var directory = jQuery(this).parent();
UM_Member_Grid(directory);
});
});
});
+205 -236
View File
@@ -204,29 +204,7 @@ if ( ! class_exists( 'um\Config' ) ) {
'_um_secondary_color',
);
/**
* UM hook
*
* @type filter
* @title um_core_form_meta_all
* @description Extend UM forms meta keys
* @input_vars
* [{"var":"$meta","type":"array","desc":"UM forms meta"}]
* @change_log
* ["Since: 2.0"]
* @usage
* <?php add_filter( 'um_core_form_meta_all', 'function_name', 10, 1 ); ?>
* @example
* <?php
* add_filter( 'um_core_form_meta_all', 'my_core_form_meta', 10, 1 );
* function my_core_form_meta( $meta ) {
* // your code here
* $meta['my_meta_key'] = 'my_meta_value';
* return $meta;
* }
* ?>
*/
$this->core_form_meta_all = apply_filters( 'um_core_form_meta_all', array(
$this->core_form_meta_all = array(
/*Profile Form*/
'_um_profile_show_name' => 1,
'_um_profile_show_social_links' => 0,
@@ -279,62 +257,49 @@ if ( ! class_exists( 'um\Config' ) ) {
'_um_directory_template' => 'members',
'_um_directory_header' => __( '{total_users} Members', 'ultimate-member' ),
'_um_directory_header_single' => __( '{total_users} Member', 'ultimate-member' ),
) );
);
/**
* Filters the list of Ultimate Member forms meta.
*
* @param {array} $form_meta UM Forms meta.
*
* @return {array} Forms meta.
*
* @since 1.3.x
* @hook um_core_form_meta_all
*
* @example <caption>Add custom admin notice after {custom_update_key} action.</caption>
* function my_um_core_form_meta_all( $form_meta ) {
* // your code here
* $meta['my_meta_key'] = 'my_meta_value';
* return $meta;
* }
* add_filter( 'um_core_form_meta_all', 'my_um_core_form_meta_all' );
*/
$this->core_form_meta_all = apply_filters( 'um_core_form_meta_all', $this->core_form_meta_all );
$this->core_form_meta['register'] = array(
'_um_custom_fields' => 'a:6:{s:10:"user_login";a:15:{s:5:"title";s:8:"Username";s:7:"metakey";s:10:"user_login";s:4:"type";s:4:"text";s:5:"label";s:8:"Username";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";b:0;s:8:"validate";s:15:"unique_username";s:9:"min_chars";i:3;s:9:"max_chars";i:24;s:8:"position";s:1:"1";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:10:"user_email";a:13:{s:5:"title";s:14:"Email Address";s:7:"metakey";s:10:"user_email";s:4:"type";s:4:"text";s:5:"label";s:14:"E-mail Address";s:8:"required";i:0;s:6:"public";i:1;s:8:"editable";b:1;s:8:"validate";s:12:"unique_email";s:8:"position";s:1:"4";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:13:"user_password";a:16:{s:5:"title";s:8:"Password";s:7:"metakey";s:13:"user_password";s:4:"type";s:8:"password";s:5:"label";s:8:"Password";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";b:1;s:9:"min_chars";i:8;s:9:"max_chars";i:30;s:15:"force_good_pass";i:1;s:18:"force_confirm_pass";i:1;s:8:"position";s:1:"5";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:10:"first_name";a:12:{s:5:"title";s:10:"First Name";s:7:"metakey";s:10:"first_name";s:4:"type";s:4:"text";s:5:"label";s:10:"First Name";s:8:"required";i:0;s:6:"public";i:1;s:8:"editable";b:1;s:8:"position";s:1:"2";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:9:"last_name";a:12:{s:5:"title";s:9:"Last Name";s:7:"metakey";s:9:"last_name";s:4:"type";s:4:"text";s:5:"label";s:9:"Last Name";s:8:"required";i:0;s:6:"public";i:1;s:8:"editable";b:1;s:8:"position";s:1:"3";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:9:"_um_row_1";a:4:{s:4:"type";s:3:"row";s:2:"id";s:9:"_um_row_1";s:8:"sub_rows";s:1:"1";s:4:"cols";s:1:"1";}}',
'_um_mode' => 'register',
'_um_core' => 'register',
'_um_custom_fields' => 'a:6:{s:10:"user_login";a:15:{s:5:"title";s:8:"Username";s:7:"metakey";s:10:"user_login";s:4:"type";s:4:"text";s:5:"label";s:8:"Username";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";b:0;s:8:"validate";s:15:"unique_username";s:9:"min_chars";i:3;s:9:"max_chars";i:24;s:8:"position";s:1:"1";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:10:"user_email";a:13:{s:5:"title";s:14:"Email Address";s:7:"metakey";s:10:"user_email";s:4:"type";s:4:"text";s:5:"label";s:14:"E-mail Address";s:8:"required";i:0;s:6:"public";i:1;s:8:"editable";b:1;s:8:"validate";s:12:"unique_email";s:8:"position";s:1:"4";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:13:"user_password";a:16:{s:5:"title";s:8:"Password";s:7:"metakey";s:13:"user_password";s:4:"type";s:8:"password";s:5:"label";s:8:"Password";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";b:1;s:9:"min_chars";i:8;s:9:"max_chars";i:30;s:15:"force_good_pass";i:1;s:18:"force_confirm_pass";i:1;s:8:"position";s:1:"5";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:10:"first_name";a:12:{s:5:"title";s:10:"First Name";s:7:"metakey";s:10:"first_name";s:4:"type";s:4:"text";s:5:"label";s:10:"First Name";s:8:"required";i:0;s:6:"public";i:1;s:8:"editable";b:1;s:8:"position";s:1:"2";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:9:"last_name";a:12:{s:5:"title";s:9:"Last Name";s:7:"metakey";s:9:"last_name";s:4:"type";s:4:"text";s:5:"label";s:9:"Last Name";s:8:"required";i:0;s:6:"public";i:1;s:8:"editable";b:1;s:8:"position";s:1:"3";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:9:"_um_row_1";a:4:{s:4:"type";s:3:"row";s:2:"id";s:9:"_um_row_1";s:8:"sub_rows";s:1:"1";s:4:"cols";s:1:"1";}}',
'_um_mode' => 'register',
'_um_core' => 'register',
'_um_register_use_custom_settings' => 0,
);
$this->core_form_meta['login'] = array(
'_um_custom_fields' => 'a:3:{s:8:"username";a:13:{s:5:"title";s:18:"Username or Email";s:7:"metakey";s:8:"username";s:4:"type";s:4:"text";s:5:"label";s:18:"Username or E-mail";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";b:0;s:8:"validate";s:24:"unique_username_or_email";s:8:"position";s:1:"1";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:13:"user_password";a:16:{s:5:"title";s:8:"Password";s:7:"metakey";s:13:"user_password";s:4:"type";s:8:"password";s:5:"label";s:8:"Password";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";b:1;s:9:"min_chars";i:8;s:9:"max_chars";i:30;s:15:"force_good_pass";i:1;s:18:"force_confirm_pass";i:1;s:8:"position";s:1:"2";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:9:"_um_row_1";a:4:{s:4:"type";s:3:"row";s:2:"id";s:9:"_um_row_1";s:8:"sub_rows";s:1:"1";s:4:"cols";s:1:"1";}}',
'_um_mode' => 'login',
'_um_core' => 'login',
'_um_custom_fields' => 'a:3:{s:8:"username";a:13:{s:5:"title";s:18:"Username or Email";s:7:"metakey";s:8:"username";s:4:"type";s:4:"text";s:5:"label";s:18:"Username or E-mail";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";b:0;s:8:"validate";s:24:"unique_username_or_email";s:8:"position";s:1:"1";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:13:"user_password";a:16:{s:5:"title";s:8:"Password";s:7:"metakey";s:13:"user_password";s:4:"type";s:8:"password";s:5:"label";s:8:"Password";s:8:"required";i:1;s:6:"public";i:1;s:8:"editable";b:1;s:9:"min_chars";i:8;s:9:"max_chars";i:30;s:15:"force_good_pass";i:1;s:18:"force_confirm_pass";i:1;s:8:"position";s:1:"2";s:6:"in_row";s:9:"_um_row_1";s:10:"in_sub_row";s:1:"0";s:9:"in_column";s:1:"1";s:8:"in_group";s:0:"";}s:9:"_um_row_1";a:4:{s:4:"type";s:3:"row";s:2:"id";s:9:"_um_row_1";s:8:"sub_rows";s:1:"1";s:4:"cols";s:1:"1";}}',
'_um_mode' => 'login',
'_um_core' => 'login',
'_um_login_use_custom_settings' => 0,
);
$this->core_form_meta['profile'] = array(
'_um_custom_fields' => 'a:1:{s:9:"_um_row_1";a:4:{s:4:"type";s:3:"row";s:2:"id";s:9:"_um_row_1";s:8:"sub_rows";s:1:"1";s:4:"cols";s:1:"1";}}',
'_um_mode' => 'profile',
'_um_core' => 'profile',
'_um_custom_fields' => 'a:1:{s:9:"_um_row_1";a:4:{s:4:"type";s:3:"row";s:2:"id";s:9:"_um_row_1";s:8:"sub_rows";s:1:"1";s:4:"cols";s:1:"1";}}',
'_um_mode' => 'profile',
'_um_core' => 'profile',
'_um_profile_use_custom_settings' => 0,
);
/**
* UM hook
*
* @type filter
* @title um_email_notifications
* @description Extend UM email notifications
* @input_vars
* [{"var":"$emails","type":"array","desc":"UM email notifications"}]
* @change_log
* ["Since: 2.0"]
* @usage
* <?php add_filter( 'um_email_notifications', 'function_name', 10, 1 ); ?>
* @example
* <?php
* add_filter( 'um_email_notifications', 'my_email_notifications', 10, 1 );
* function my_email_notifications( $emails ) {
* // your code here
* $emails['my_email'] = array(
* 'key' => 'my_email',
* 'title' => __( 'my_email_title','ultimate-member' ),
* 'subject' => 'my_email_subject',
* 'body' => 'my_email_body',
* 'description' => 'my_email_description',
* 'recipient' => 'user', // set 'admin' for make administrator as recipient
* 'default_active' => true // can be false for make disabled by default
* );
*
* return $emails;
* }
* ?>
*/
$this->email_notifications = apply_filters( 'um_email_notifications', array(
$this->email_notifications = array(
'welcome_email' => array(
'key' => 'welcome_email',
'title' => __( 'Account Welcome Email','ultimate-member' ),
@@ -514,85 +479,116 @@ if ( ! class_exists( 'um\Config' ) ) {
'recipient' => 'admin',
'default_active' => true,
),
) );
);
/**
* Filters the list of Ultimate Member email notifications.
*
* @param {array} $email_notifications Email notifications.
*
* @return {array} Email notifications.
*
* @since 2.0.0
* @hook um_email_notifications
*
* @example <caption>Add custom admin notice after {custom_update_key} action.</caption>
* function my_um_email_notifications( $notifications ) {
* // your code here
* $emails['my_email'] = array(
* 'key' => 'my_email',
* 'title' => __( 'my_email_title','ultimate-member' ),
* 'subject' => 'my_email_subject',
* 'body' => 'my_email_body',
* 'description' => 'my_email_description',
* 'recipient' => 'user', // set 'admin' for make administrator as recipient
* 'default_active' => true // can be false for make disabled by default
* );
*
* return $emails;
* }
* add_filter( 'um_email_notifications', 'my_um_email_notifications' );
*/
$this->email_notifications = apply_filters( 'um_email_notifications', $this->email_notifications );
//settings defaults
// Settings defaults.
$this->settings_defaults = array(
'restricted_access_post_metabox' => array( 'post' => 1, 'page' => 1 ),
'disable_restriction_pre_queries' => 0,
'uninstall_on_delete' => 0,
'restricted_access_post_metabox' => array(
'post' => 1,
'page' => 1,
),
'disable_restriction_pre_queries' => false,
'uninstall_on_delete' => false,
'permalink_base' => 'user_login',
'permalink_base_custom_meta' => '',
'display_name' => 'full_name',
'display_name_field' => '',
'author_redirect' => 1,
'author_redirect' => true,
'members_page' => true,
'use_gravatars' => 0,
'use_gravatars' => false,
'use_um_gravatar_default_builtin_image' => 'default',
'use_um_gravatar_default_image' => 0,
'use_um_gravatar_default_image' => false,
'toggle_password' => false,
'require_strongpass' => 0,
'require_strongpass' => false,
'password_min_chars' => 8,
'password_max_chars' => 30,
'account_tab_password' => 1,
'account_tab_privacy' => 1,
'account_tab_notifications' => 1,
'account_tab_delete' => 1,
'account_tab_password' => true,
'account_tab_privacy' => true,
'account_tab_notifications' => true,
'account_tab_delete' => true,
'delete_account_text' => __( 'Are you sure you want to delete your account? This will erase all of your account data from the site. To delete your account enter your password below.', 'ultimate-member' ),
'delete_account_no_pass_required_text' => __( 'Are you sure you want to delete your account? This will erase all of your account data from the site. To delete your account, click on the button below.', 'ultimate-member' ),
'account_name' => 1,
'account_name_disable' => 0,
'account_name_require' => 1,
'account_email' => 1,
'account_general_password' => 0,
'account_hide_in_directory' => 1,
'account_name' => true,
'account_name_disable' => false,
'account_name_require' => true,
'account_email' => true,
'account_general_password' => false,
'account_hide_in_directory' => true,
'account_hide_in_directory_default' => 'No',
'photo_thumb_sizes' => array( 40, 80, 190 ),
'cover_thumb_sizes' => array( 300, 600 ),
'accessible' => 0,
'access_redirect' => '',
'access_exclude_uris' => array(),
'home_page_accessible' => 1,
'category_page_accessible' => 1,
'restricted_post_title_replace' => 1,
'home_page_accessible' => true,
'category_page_accessible' => true,
'restricted_post_title_replace' => true,
'restricted_access_post_title' => __( 'Restricted content', 'ultimate-member' ),
'restricted_access_message' => '',
'restricted_blocks' => 0,
'enable_blocks' => 0,
'restricted_blocks' => false,
'enable_blocks' => false,
'restricted_block_message' => '',
'enable_reset_password_limit' => 1,
'enable_reset_password_limit' => true,
'reset_password_limit_number' => 3,
'change_password_request_limit' => false,
'blocked_emails' => '',
'blocked_words' => 'admin' . "\r\n" . 'administrator' . "\r\n" . 'webmaster' . "\r\n" . 'support' . "\r\n" . 'staff',
'allowed_choice_callbacks' => '',
'allow_url_redirect_confirm' => 1,
'allow_url_redirect_confirm' => true,
'default_avatar' => '',
'default_cover' => '',
'disable_profile_photo_upload' => 0,
'profile_show_metaicon' => 0,
'profile_menu' => 1,
'disable_profile_photo_upload' => false,
'profile_show_metaicon' => false,
'profile_menu' => true,
'profile_menu_default_tab' => 'main',
'profile_menu_icons' => 1,
'form_asterisk' => 0,
'profile_menu_icons' => true,
'form_asterisk' => false,
'profile_title' => '{display_name} | {site_name}',
'profile_desc' => '{display_name} is on {site_name}. Join {site_name} to view {display_name}\'s profile',
'admin_email' => get_bloginfo( 'admin_email' ),
'mail_from' => get_bloginfo( 'name' ),
'mail_from_addr' => get_bloginfo( 'admin_email' ),
'email_html' => 1,
'image_orientation_by_exif' => 0,
'email_html' => true,
'image_orientation_by_exif' => false,
'image_compression' => 60,
'image_max_width' => 1000,
'cover_min_width' => 1000,
'profile_photo_max_size' => 999999999,
'cover_photo_max_size' => 999999999,
'custom_roles_increment' => 1,
'um_profile_object_cache_stop' => 0,
'um_profile_object_cache_stop' => false,
'rest_api_version' => '2.0',
'member_directory_own_table' => 0,
'member_directory_own_table' => false,
'profile_show_bio' => false,
'profile_show_html_bio' => 0,
'profile_show_html_bio' => false,
'profile_bio_maxchars' => 180,
'profile_noindex' => 0,
'activation_link_expiry_time' => '',
@@ -603,7 +599,7 @@ if ( ! class_exists( 'um\Config' ) ) {
'secure_notify_admins_banned_accounts' => false,
'secure_notify_admins_banned_accounts__interval' => 'instant',
'secure_allowed_redirect_hosts' => '',
'delete_comments' => 0,
'delete_comments' => false,
);
add_filter( 'um_get_tabs_from_config', '__return_true' );
@@ -620,26 +616,26 @@ if ( ! class_exists( 'um\Config' ) ) {
if ( ! isset( $tab['default_privacy'] ) ) {
$this->settings_defaults[ 'profile_tab_' . $id . '_privacy' ] = 0;
$this->settings_defaults[ 'profile_tab_' . $id . '_roles' ] = '';
$this->settings_defaults[ 'profile_tab_' . $id . '_roles' ] = '';
}
}
foreach ( $this->email_notifications as $key => $notification ) {
$this->settings_defaults[ $key . '_on' ] = ! empty( $notification['default_active'] );
$this->settings_defaults[ $key . '_on' ] = ! empty( $notification['default_active'] );
$this->settings_defaults[ $key . '_sub' ] = $notification['subject'];
$this->settings_defaults[ $key ] = $notification['body'];
$this->settings_defaults[ $key ] = $notification['body'];
}
foreach ( $this->core_pages as $page_s => $page ) {
$page_id = UM()->options()->get_core_page_id( $page_s );
$page_id = UM()->options()->get_predefined_page_option_key( $page_s );
$this->settings_defaults[ $page_id ] = '';
}
foreach( $this->core_form_meta_all as $key => $value ) {
foreach ( $this->core_form_meta_all as $key => $value ) {
$this->settings_defaults[ str_replace( '_um_', '', $key ) ] = $value;
}
/**
* UM hook
*
@@ -665,126 +661,86 @@ if ( ! class_exists( 'um\Config' ) ) {
$this->permalinks = $this->get_core_pages();
$this->default_roles_metadata = array(
/*
* All caps map
*
* '_um_can_access_wpadmin' => 1,
'_um_can_not_see_adminbar' => 0,
'_um_can_edit_everyone' => 1,
'_um_can_edit_roles' => '',
'_um_can_delete_everyone' => 1,
'_um_can_delete_roles' => '',
'_um_after_delete' => '',
'_um_delete_redirect_url' => '',
'_um_can_edit_profile' => 1,
'_um_can_delete_profile' => 1,
'_um_default_homepage' => 1,
'_um_redirect_homepage' => '',
'_um_after_login' => 'redirect_admin',
'_um_login_redirect_url' => '',
'_um_after_logout' => 'redirect_home',
'_um_logout_redirect_url' => '',
'_um_can_view_all' => 1,
'_um_can_view_roles' => '',
'_um_can_make_private_profile' => 1,
'_um_can_access_private_profile' => 1,
'_um_status' => 'approved',
'_um_auto_approve_act' => 'redirect_profile',
'_um_auto_approve_url' => '',
'_um_login_email_activate' => '',
'_um_checkmail_action' => '',
'_um_checkmail_message' => '',
'_um_checkmail_url' => '',
'_um_url_email_activate' => '',
'_um_pending_action' => '',
'_um_pending_message' => '',
'_um_pending_url' => '',
*
* */
'subscriber' => array(
'_um_can_access_wpadmin' => 0,
'_um_can_not_see_adminbar' => 1,
'_um_can_edit_everyone' => 0,
'_um_can_delete_everyone' => 0,
'_um_can_edit_profile' => 1,
'_um_can_delete_profile' => 1,
'_um_after_login' => 'redirect_profile',
'_um_after_logout' => 'redirect_home',
'_um_default_homepage' => 1,
'_um_can_view_all' => 1,
'_um_can_make_private_profile' => 0,
'_um_can_access_private_profile' => 0,
'_um_status' => 'approved',
'_um_auto_approve_act' => 'redirect_profile',
'subscriber' => array(
'_um_can_access_wpadmin' => 0,
'_um_can_not_see_adminbar' => 1,
'_um_can_edit_everyone' => 0,
'_um_can_delete_everyone' => 0,
'_um_can_edit_profile' => 1,
'_um_can_delete_profile' => 1,
'_um_after_login' => 'redirect_profile',
'_um_after_logout' => 'redirect_home',
'_um_default_homepage' => 1,
'_um_can_view_all' => 1,
'_um_can_make_private_profile' => 0,
'_um_can_access_private_profile' => 0,
'_um_status' => 'approved',
'_um_auto_approve_act' => 'redirect_profile',
),
'author' => array(
'_um_can_access_wpadmin' => 0,
'_um_can_not_see_adminbar' => 1,
'_um_can_edit_everyone' => 0,
'_um_can_delete_everyone' => 0,
'_um_can_edit_profile' => 1,
'_um_can_delete_profile' => 1,
'_um_after_login' => 'redirect_profile',
'_um_after_logout' => 'redirect_home',
'_um_default_homepage' => 1,
'_um_can_view_all' => 1,
'_um_can_make_private_profile' => 0,
'_um_can_access_private_profile' => 0,
'_um_status' => 'approved',
'_um_auto_approve_act' => 'redirect_profile',
'author' => array(
'_um_can_access_wpadmin' => 0,
'_um_can_not_see_adminbar' => 1,
'_um_can_edit_everyone' => 0,
'_um_can_delete_everyone' => 0,
'_um_can_edit_profile' => 1,
'_um_can_delete_profile' => 1,
'_um_after_login' => 'redirect_profile',
'_um_after_logout' => 'redirect_home',
'_um_default_homepage' => 1,
'_um_can_view_all' => 1,
'_um_can_make_private_profile' => 0,
'_um_can_access_private_profile' => 0,
'_um_status' => 'approved',
'_um_auto_approve_act' => 'redirect_profile',
),
'contributor' => array(
'_um_can_access_wpadmin' => 0,
'_um_can_not_see_adminbar' => 1,
'_um_can_edit_everyone' => 0,
'_um_can_delete_everyone' => 0,
'_um_can_edit_profile' => 1,
'_um_can_delete_profile' => 1,
'_um_after_login' => 'redirect_profile',
'_um_after_logout' => 'redirect_home',
'_um_default_homepage' => 1,
'_um_can_view_all' => 1,
'_um_can_make_private_profile' => 0,
'_um_can_access_private_profile' => 0,
'_um_status' => 'approved',
'_um_auto_approve_act' => 'redirect_profile',
'contributor' => array(
'_um_can_access_wpadmin' => 0,
'_um_can_not_see_adminbar' => 1,
'_um_can_edit_everyone' => 0,
'_um_can_delete_everyone' => 0,
'_um_can_edit_profile' => 1,
'_um_can_delete_profile' => 1,
'_um_after_login' => 'redirect_profile',
'_um_after_logout' => 'redirect_home',
'_um_default_homepage' => 1,
'_um_can_view_all' => 1,
'_um_can_make_private_profile' => 0,
'_um_can_access_private_profile' => 0,
'_um_status' => 'approved',
'_um_auto_approve_act' => 'redirect_profile',
),
'editor' => array(
'_um_can_access_wpadmin' => 0,
'_um_can_not_see_adminbar' => 1,
'_um_can_edit_everyone' => 0,
'_um_can_delete_everyone' => 0,
'_um_can_edit_profile' => 1,
'_um_can_delete_profile' => 1,
'_um_after_login' => 'redirect_profile',
'_um_after_logout' => 'redirect_home',
'_um_default_homepage' => 1,
'_um_can_view_all' => 1,
'_um_can_make_private_profile' => 0,
'_um_can_access_private_profile' => 0,
'_um_status' => 'approved',
'_um_auto_approve_act' => 'redirect_profile',
'editor' => array(
'_um_can_access_wpadmin' => 0,
'_um_can_not_see_adminbar' => 1,
'_um_can_edit_everyone' => 0,
'_um_can_delete_everyone' => 0,
'_um_can_edit_profile' => 1,
'_um_can_delete_profile' => 1,
'_um_after_login' => 'redirect_profile',
'_um_after_logout' => 'redirect_home',
'_um_default_homepage' => 1,
'_um_can_view_all' => 1,
'_um_can_make_private_profile' => 0,
'_um_can_access_private_profile' => 0,
'_um_status' => 'approved',
'_um_auto_approve_act' => 'redirect_profile',
),
'administrator' => array(
'_um_can_access_wpadmin' => 1,
'_um_can_not_see_adminbar' => 0,
'_um_can_edit_everyone' => 1,
'_um_can_delete_everyone' => 1,
'_um_can_edit_profile' => 1,
'_um_can_delete_profile' => 1,
'_um_default_homepage' => 1,
'_um_after_login' => 'redirect_admin',
'_um_after_logout' => 'redirect_home',
'_um_can_view_all' => 1,
'_um_can_make_private_profile' => 1,
'_um_can_access_private_profile' => 1,
'_um_status' => 'approved',
'_um_auto_approve_act' => 'redirect_profile',
'_um_can_access_wpadmin' => 1,
'_um_can_not_see_adminbar' => 0,
'_um_can_edit_everyone' => 1,
'_um_can_delete_everyone' => 1,
'_um_can_edit_profile' => 1,
'_um_can_delete_profile' => 1,
'_um_default_homepage' => 1,
'_um_after_login' => 'redirect_admin',
'_um_after_logout' => 'redirect_home',
'_um_can_view_all' => 1,
'_um_can_make_private_profile' => 1,
'_um_can_access_private_profile' => 1,
'_um_status' => 'approved',
'_um_auto_approve_act' => 'redirect_profile',
),
);
@@ -812,7 +768,6 @@ if ( ! class_exists( 'um\Config' ) ) {
);
}
/**
* Get UM Pages
*
@@ -826,27 +781,41 @@ if ( ! class_exists( 'um\Config' ) ) {
}
foreach ( $core_pages as $page_key ) {
$page_option_key = UM()->options()->get_core_page_id( $page_key );
$page_option_key = UM()->options()->get_predefined_page_option_key( $page_key );
$permalink[ $page_key ] = UM()->options()->get( $page_option_key );
}
return $permalink;
}
/**
* @todo make config class not cycled
*/
function set_core_page() {
$this->core_pages = apply_filters( 'um_core_pages', array(
'user' => array( 'title' => __( 'User', 'ultimate-member' ) ),
'login' => array( 'title' => __( 'Login', 'ultimate-member' ) ),
'register' => array( 'title' => __( 'Register', 'ultimate-member' ) ),
'members' => array( 'title' => __( 'Members', 'ultimate-member' ) ),
'logout' => array( 'title' => __( 'Logout', 'ultimate-member' ) ),
'account' => array( 'title' => __( 'Account', 'ultimate-member' ) ),
'password-reset' => array( 'title' => __( 'Password Reset', 'ultimate-member' ) ),
) );
public function set_core_page() {
$this->core_pages = array(
'user' => array(
'title' => __( 'User', 'ultimate-member' ),
),
'login' => array(
'title' => __( 'Login', 'ultimate-member' ),
),
'register' => array(
'title' => __( 'Register', 'ultimate-member' ),
),
'members' => array(
'title' => __( 'Members', 'ultimate-member' ),
),
'logout' => array(
'title' => __( 'Logout', 'ultimate-member' ),
),
'account' => array(
'title' => __( 'Account', 'ultimate-member' ),
),
'password-reset' => array(
'title' => __( 'Password Reset', 'ultimate-member' ),
),
);
$this->core_pages = apply_filters( 'um_core_pages', $this->core_pages );
}
/**
+20 -72
View File
@@ -235,93 +235,41 @@ if ( ! class_exists( 'UM' ) ) {
}
}
/**
* Loading UM textdomain
* Loading UM textdomain.
*
* 'ultimate-member' by default
* Note: 'ultimate-member' is a default textdomain.
*
* @since 2.8.5 WordPress native functions are used to make this function clear.
*/
public function localize() {
// The function `get_user_locale()` will return `get_locale()` result by default if user or its locale is empty.
$language_locale = get_user_locale();
$default_domain = dirname( plugin_basename( UM_PLUGIN ) );
/**
* UM hook
* Filters the plugin's textdomain.
*
* @type filter
* @title um_language_locale
* @description Change UM language locale
* @input_vars
* [{"var":"$locale","type":"string","desc":"UM language locale"}]
* @change_log
* ["Since: 2.0"]
* @usage add_filter( 'um_language_locale', 'function_name', 10, 1 );
* @example
* <?php
* add_filter( 'um_language_locale', 'my_language_locale', 10, 1 );
* function my_language_locale( $locale ) {
* // your code here
* return $locale;
* }
* ?>
*/
$language_locale = apply_filters( 'um_language_locale', $language_locale );
/**
* UM hook
* @param {string} $domain Plugin's textdomain.
*
* @type filter
* @title um_language_textdomain
* @description Change UM textdomain
* @input_vars
* [{"var":"$domain","type":"string","desc":"UM Textdomain"}]
* @change_log
* ["Since: 2.0"]
* @usage add_filter( 'um_language_textdomain', 'function_name', 10, 1 );
* @example
* <?php
* add_filter( 'um_language_textdomain', 'my_textdomain', 10, 1 );
* function my_textdomain( $domain ) {
* // your code here
* @return {string} Maybe changed plugin's textdomain.
*
* @since 1.3.x
* @hook um_language_textdomain
*
* @example <caption>Change UM language locale.</caption>
* function my_um_language_textdomain( $domain ) {
* $domain = 'ultimate-member-custom';
* return $domain;
* }
* ?>
* add_filter( 'um_language_textdomain', 'my_um_language_textdomain' );
*/
$language_domain = apply_filters( 'um_language_textdomain', 'ultimate-member' );
$language_file = WP_LANG_DIR . '/plugins/' . $language_domain . '-' . $language_locale . '.mo';
/**
* UM hook
*
* @type filter
* @title um_language_file
* @description Change UM language file path
* @input_vars
* [{"var":"$language_file","type":"string","desc":"UM language file path"}]
* @change_log
* ["Since: 2.0"]
* @usage add_filter( 'um_language_file', 'function_name', 10, 1 );
* @example
* <?php
* add_filter( 'um_language_file', 'my_language_file', 10, 1 );
* function my_language_file( $language_file ) {
* // your code here
* return $language_file;
* }
* ?>
*/
$language_file = apply_filters( 'um_language_file', $language_file );
$domain = apply_filters( 'um_language_textdomain', $default_domain );
// Unload textdomain if it has already loaded.
if ( is_textdomain_loaded( $language_domain ) ) {
unload_textdomain( $language_domain, true );
if ( is_textdomain_loaded( $domain ) ) {
unload_textdomain( $domain, true );
}
load_textdomain( $language_domain, $language_file );
load_plugin_textdomain( $domain, false, $default_domain . '/languages' );
}
/**
* 1.3.x active extensions deactivate for properly running 2.0.x AJAX upgrades
*/
+4 -4
View File
@@ -1772,10 +1772,10 @@ if ( ! class_exists( 'um\core\Access' ) ) {
$access = UM()->options()->get( 'accessible' );
if ( $access == 2 ) {
//global settings for accessible home page
// Global settings for accessible home page
$home_page_accessible = UM()->options()->get( 'home_page_accessible' );
if ( $home_page_accessible == 0 ) {
if ( ! $home_page_accessible ) {
//get redirect URL if not set get login page by default
$redirect = UM()->options()->get( 'access_redirect' );
if ( ! $redirect ) {
@@ -1795,9 +1795,9 @@ if ( ! class_exists( 'um\core\Access' ) ) {
$access = UM()->options()->get( 'accessible' );
if ( $access == 2 ) {
//global settings for accessible home page
// Global settings for accessible home page
$category_page_accessible = UM()->options()->get( 'category_page_accessible' );
if ( $category_page_accessible == 0 ) {
if ( ! $category_page_accessible ) {
//get redirect URL if not set get login page by default
$redirect = UM()->options()->get( 'access_redirect' );
if ( ! $redirect ) {
+1 -1
View File
@@ -576,7 +576,7 @@ if ( ! class_exists( 'um\core\Account' ) ) {
case 'privacy':
$args = 'profile_privacy,profile_noindex,hide_in_members';
$args = 'profile_privacy,profile_noindex,hide_in_members,um_show_last_login';
/**
* UM hook
*
+17
View File
@@ -1336,6 +1336,23 @@ if ( ! class_exists( 'um\core\Builtin' ) ) {
'required_opt' => array( 'members_page', true ),
),
'um_show_last_login' => array(
'title' => __( 'Show my last login?', 'ultimate-member' ),
'metakey' => 'um_show_last_login',
'type' => 'radio',
'label' => __( 'Show my last login?', 'ultimate-member' ),
'help' => __( 'Here you can hide last login field on profile page and card in member directory', 'ultimate-member' ),
'required' => 0,
'public' => 1,
'editable' => true,
'default' => 'yes',
'options' => array(
'no' => __( 'No', 'ultimate-member' ),
'yes' => __( 'Yes', 'ultimate-member' ),
),
'account_only' => true,
),
'delete_account' => array(
'title' => __( 'Delete Account', 'ultimate-member' ),
'metakey' => 'delete_account',
@@ -604,7 +604,7 @@ if ( ! class_exists( 'um\core\External_Integrations' ) ) {
*/
function render_status_icon( $link, $text, $img ) {
$icon_html = '<a href="' . $link . '" title="' . $text . '">';
$icon_html = '<a href="' . esc_url( $link ) . '" title="' . esc_attr( $text ) . '">';
$icon_html .= '<img style="padding:1px;margin:2px;" border="0" src="'
. ICL_PLUGIN_URL . '/res/img/'
. $img . '" alt="'
+23 -9
View File
@@ -653,13 +653,6 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
* @return string
*/
public function field_label( $label, $key, $data ) {
$output = null;
$output .= '<div class="um-field-label">';
if ( ! empty( $data['icon'] ) && isset( $this->field_icons ) && 'off' !== $this->field_icons && ( 'label' === $this->field_icons || true === $this->viewing ) ) {
$output .= '<div class="um-field-label-icon"><i class="' . esc_attr( $data['icon'] ) . '" aria-label="' . esc_attr( $label ) . '"></i></div>';
}
if ( true === $this->viewing ) {
/**
* Filters Ultimate Member field label on the Profile form: View mode.
@@ -730,13 +723,26 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
$label = apply_filters( 'um_edit_label_all_fields', $label, $data );
}
$output = null;
$output .= '<div class="um-field-label">';
if ( ! empty( $data['icon'] ) && isset( $this->field_icons ) && 'off' !== $this->field_icons && ( 'label' === $this->field_icons || true === $this->viewing ) ) {
$output .= '<div class="um-field-label-icon"><i class="' . esc_attr( $data['icon'] ) . '" aria-label="' . esc_attr( $label ) . '"></i></div>';
}
$fields_without_metakey = UM()->builtin()->get_fields_without_metakey();
$for_attr = '';
if ( ! in_array( $data['type'], $fields_without_metakey, true ) ) {
$for_attr = ' for="' . esc_attr( $key . UM()->form()->form_suffix ) . '"';
}
$output .= '<label' . $for_attr . '>' . __( $label, 'ultimate-member' ) . '</label>';
$output .= '<label' . $for_attr . '>' . esc_html__( $label, 'ultimate-member' );
if ( ! empty( $data['required'] ) && UM()->options()->get( 'form_asterisk' ) ) {
$output .= '<span class="um-req" title="' . esc_attr__( 'Required', 'ultimate-member' ) . '">*</span>';
}
$output .= '</label>';
if ( ! empty( $data['help'] ) && false === $this->viewing && false === strpos( $key, 'confirm_user_pass' ) ) {
if ( ! UM()->mobile()->isMobile() ) {
@@ -3092,7 +3098,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
$fonticon = UM()->files()->get_fonticon_by_ext( $file_type['ext'] );
$output .= '<div class="um-single-fileinfo">';
$output .= '<a href="' . esc_attr( $file_url ) . '" target="_blank">';
$output .= '<a href="' . esc_url( $file_url ) . '" target="_blank">';
$output .= '<span class="icon" style="background:' . esc_attr( $fonticon_bg ) . '"><i class="' . esc_attr( $fonticon ) . '"></i></span>';
$output .= '<span class="filename">' . esc_html( $file_field_name ) . '</span>';
$output .= '</a></div></div>';
@@ -4278,6 +4284,14 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
* @throws \Exception
*/
public function view_field( $key, $data, $rule = false ) {
if ( '_um_last_login' === $key ) {
$profile_id = um_user( 'ID' );
$show_last_login = get_user_meta( $profile_id, 'um_show_last_login', true );
if ( ! empty( $show_last_login ) && 'no' === $show_last_login[0] ) {
return '';
}
}
$output = '';
// Get whole field data.
+90 -8
View File
@@ -224,6 +224,27 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) {
$blog_id = get_current_blog_id();
/**
* Filters member directory select-type filter relation in query.
*
* @param {string} $relation Relation `OR` or `AND`. `OR` by default.
* @param {string} $field Field key.
*
* @return {string} Relation.
*
* @since 2.8.5
* @hook um_members_directory_select_filter_relation
*
* @example <caption>Change relation to 'AND'.</caption>
* function my_um_members_directory_select_filter_relation( $relation, $field ) {
* // your code here
* $relation = 'AND';
* return $relation;
* }
* add_filter( 'um_members_directory_select_filter_relation', 'my_um_members_directory_select_filter_relation', 10, 2 );
*/
$relation = apply_filters( 'um_members_directory_select_filter_relation', 'OR', $field );
switch ( $field ) {
default:
$filter_type = $this->filter_types[ $field ];
@@ -328,7 +349,7 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) {
// phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $join_alias is pre-escaped.
}
$values = implode( ' OR ', $values_array );
$values = implode( ' ' . esc_sql( $relation ) . ' ', $values_array );
// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $join_alias and $values variables are pre-escaped or $wpdb->prepare.
$this->where_clauses[] = $wpdb->prepare( "( {$join_alias}.um_key = %s AND ( {$values} ) )", $field );
@@ -421,7 +442,7 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) {
}
// $roles_clauses is pre-prepared.
$this->where_clauses[] = '( ' . implode( ' OR ', $roles_clauses ) . ' )';
$this->where_clauses[] = '( ' . implode( ' ' . esc_sql( $relation ) . ' ', $roles_clauses ) . ' )';
if ( ! $is_default ) {
$this->custom_filters_in_query[ $field ] = $value;
@@ -483,19 +504,55 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) {
}
}
$value = array_map(
function( $date ) {
return is_numeric( $date ) ? $date : strtotime( $date );
},
$value
);
$from_date = gmdate( 'Y-m-d H:i:s', (int) min( $value ) + ( $offset * HOUR_IN_SECONDS ) ); // client time zone offset
$to_date = gmdate( 'Y-m-d H:i:s', (int) max( $value ) + ( $offset * HOUR_IN_SECONDS ) + DAY_IN_SECONDS - 1 ); // time 23:59
// $join_alias is pre-escaped.
$this->joins[] = "LEFT JOIN {$wpdb->prefix}um_metadata {$join_alias} ON {$join_alias}.user_id = u.ID";
$join_alias_ll = $join_alias . '_show_las_login';
$this->joins[] = "LEFT JOIN {$wpdb->prefix}um_metadata {$join_alias_ll} ON {$join_alias_ll}.user_id = u.ID AND {$join_alias_ll}.um_key = 'um_show_last_login'";
// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $join_alias is pre-escaped.
$this->where_clauses[] = $wpdb->prepare( "( {$join_alias}.um_key = '_um_last_login' AND {$join_alias}.um_value BETWEEN %s AND %s )", $from_date, $to_date );
$this->where_clauses[] = $wpdb->prepare( "( {$join_alias}.um_key = '_um_last_login' AND {$join_alias}.um_value BETWEEN %s AND %s AND ( {$join_alias_ll}.um_value IS NULL OR {$join_alias_ll}.um_value != %s ) )", $from_date, $to_date, 'a:1:{i:0;s:2:"no";}' );
if ( ! $is_default ) {
$this->custom_filters_in_query[ $field ] = $value;
}
break;
case 'gender':
if ( ! is_array( $value ) ) {
$value = array( $value );
}
// $join_alias is pre-escaped.
$this->joins[] = "LEFT JOIN {$wpdb->prefix}um_metadata {$join_alias} ON {$join_alias}.user_id = u.ID";
$values_array = array();
foreach ( $value as $single_val ) {
$single_val = trim( stripslashes( $single_val ) );
// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $join_alias and $compare variables are pre-escaped.
$values_array[] = $wpdb->prepare( "{$join_alias}.um_value LIKE %s", '%"' . $wpdb->esc_like( $single_val ) . '"%' );
$values_array[] = $wpdb->prepare( "{$join_alias}.um_value = %s", $single_val );
// phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $join_alias is pre-escaped.
}
$values = implode( ' ' . esc_sql( $relation ) . ' ', $values_array );
// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $join_alias and $values variables are pre-escaped or $wpdb->prepare.
$this->where_clauses[] = $wpdb->prepare( "( {$join_alias}.um_key = %s AND ( {$values} ) )", $field );
if ( ! $is_default ) {
$this->custom_filters_in_query[ $field ] = $value;
}
break;
}
}
@@ -649,13 +706,29 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) {
// phpcs:enable WordPress.Security.NonceVerification -- verified via `UM()->check_ajax_nonce();`.
if ( ! empty( $search_line ) ) {
$searches = array();
foreach ( $this->core_search_fields as $field ) {
$field = esc_sql( $field );
// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $field is pre-escaped.
$searches[] = $wpdb->prepare( "u.{$field} LIKE %s", '%' . $wpdb->esc_like( $search_line ) . '%' );
$exclude_fields = get_post_meta( $directory_id, '_um_search_exclude_fields', true );
$include_fields = get_post_meta( $directory_id, '_um_search_include_fields', true );
$core_search = $this->get_core_search_fields();
if ( ! empty( $include_fields ) ) {
$core_search = array_intersect( $core_search, $include_fields );
}
if ( ! empty( $exclude_fields ) ) {
$core_search = array_diff( $core_search, $exclude_fields );
}
if ( ! empty( $core_search ) ) {
foreach ( $core_search as $field ) {
$field = esc_sql( $field );
// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $field is pre-escaped.
$searches[] = $wpdb->prepare( "u.{$field} LIKE %s", '%' . $wpdb->esc_like( $search_line ) . '%' );
}
}
$core_search = implode( ' OR ', $searches );
if ( ! empty( $core_search ) ) {
$core_search = ' OR ' . $core_search;
}
$this->joins[] = "LEFT JOIN {$wpdb->prefix}um_metadata umm_search ON umm_search.user_id = u.ID";
@@ -663,8 +736,17 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) {
$search_like_string = apply_filters( 'um_member_directory_meta_search_like_type', '%' . $wpdb->esc_like( $search_line ) . '%', $search_line );
$custom_fields_sql = '';
if ( ! empty( $exclude_fields ) ) {
$custom_fields_sql = " AND umm_search.um_key NOT IN ('" . implode( "','", $exclude_fields ) . "') ";
}
if ( ! empty( $include_fields ) ) {
$custom_fields_sql = " AND umm_search.um_key IN ('" . implode( "','", $include_fields ) . "') ";
}
// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $core_search and $additional_search are pre-prepared.
$this->where_clauses[] = $wpdb->prepare( "( umm_search.um_value = %s OR umm_search.um_value LIKE %s OR umm_search.um_value LIKE %s OR {$core_search}{$additional_search})", $search_line, $search_like_string, '%' . $wpdb->esc_like( maybe_serialize( (string) $search_line ) ) . '%' );
$this->where_clauses[] = $wpdb->prepare( "( umm_search.um_value = %s OR umm_search.um_value LIKE %s OR umm_search.um_value LIKE %s{$core_search}{$additional_search}){$custom_fields_sql}", $search_line, $search_like_string, '%' . $wpdb->esc_like( maybe_serialize( (string) $search_line ) ) . '%' );
$this->is_search = true;
}
+218 -64
View File
@@ -42,6 +42,11 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
*/
var $filter_fields = array();
/**
* @var array
*/
public $searching_fields = array();
/**
* @var array
@@ -122,7 +127,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
* Get the WordPress core searching fields in wp_users query.
* @return array
*/
private function get_core_search_fields() {
protected function get_core_search_fields() {
/**
* Filters the WordPress core searching fields in wp_users query for UM Member directory query.
*
@@ -433,6 +438,25 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
$this->filter_supported_fields = apply_filters( 'um_members_directory_custom_field_types_supported_filter', array( 'date', 'time', 'select', 'multiselect', 'radio', 'checkbox', 'rating', 'text', 'textarea', 'number' ) );
$core_search_keys = $this->get_core_search_fields();
$this->searching_fields = array();
if ( ! empty( UM()->builtin()->all_user_fields() ) ) {
foreach ( UM()->builtin()->all_user_fields() as $key => $data ) {
if ( in_array( $key, $core_search_keys, true ) ) {
if ( isset( $data['title'] ) && array_search( $data['title'], $this->searching_fields, true ) !== false ) {
$data['title'] = $data['title'] . ' (' . $key . ')';
}
$title = isset( $data['title'] ) ? $data['title'] : ( isset( $data['label'] ) ? $data['label'] : '' );
if ( empty( $title ) ) {
continue;
}
$this->searching_fields[ $key ] = $title;
}
}
}
if ( ! empty( UM()->builtin()->saved_fields ) ) {
foreach ( UM()->builtin()->saved_fields as $key => $data ) {
@@ -459,6 +483,9 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
ksort( $this->filter_fields );
$this->searching_fields = array_merge( $this->searching_fields, $this->filter_fields );
asort( $this->searching_fields );
$this->filter_types = apply_filters( 'um_members_directory_filter_types', array(
'country' => 'select',
'gender' => 'select',
@@ -1734,27 +1761,50 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
$sql['where'] = str_replace( '#%&', '{' . $matches[0][0] . '}', $sql['where'] );
$directory_id = $this->get_directory_by_hash( sanitize_key( $_POST['directory_id'] ) );
$exclude_fields = get_post_meta( $directory_id, '_um_search_exclude_fields', true );
$include_fields = get_post_meta( $directory_id, '_um_search_include_fields', true );
if ( isset( $join_matches[1] ) ) {
$meta_join_for_search = trim( $join_matches[1] );
// skip private invisible fields
$custom_fields = array();
foreach ( array_keys( UM()->builtin()->all_user_fields ) as $field_key ) {
if ( empty( $field_key ) ) {
continue;
}
if ( empty( $include_fields ) ) {
foreach ( array_keys( UM()->builtin()->all_user_fields ) as $field_key ) {
if ( empty( $field_key ) ) {
continue;
}
$data = UM()->fields()->get_field( $field_key );
if ( ! um_can_view_field( $data ) ) {
continue;
}
$data = UM()->fields()->get_field( $field_key );
if ( ! um_can_view_field( $data ) ) {
continue;
}
$custom_fields[] = $field_key;
$custom_fields[] = $field_key;
}
} else {
foreach ( $include_fields as $field_key ) {
if ( empty( $field_key ) ) {
continue;
}
$data = UM()->fields()->get_field( $field_key );
if ( ! um_can_view_field( $data ) ) {
continue;
}
$custom_fields[] = $field_key;
}
}
$custom_fields = apply_filters( 'um_general_search_custom_fields', $custom_fields );
if ( ! empty( $custom_fields ) ) {
if ( ! empty( $exclude_fields ) ) {
$custom_fields = array_diff( $custom_fields, $exclude_fields );
}
$sql['join'] = preg_replace(
'/(' . $meta_join_for_search . ' ON \( ' . $wpdb->users . '\.ID = ' . $meta_join_for_search . '\.user_id )(\))/im',
"$1 AND " . $meta_join_for_search . ".meta_key IN( '" . implode( "','", $custom_fields ) . "' ) $2",
@@ -1763,18 +1813,28 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
}
}
// Add OR instead AND to search in WP core fields user_email, user_login, user_display_name
$search_where = $context->get_search_sql( $search, $this->get_core_search_fields(), 'both' );
$core_search = $this->get_core_search_fields();
if ( ! empty( $include_fields ) ) {
$core_search = array_intersect( $core_search, $include_fields );
}
if ( ! empty( $exclude_fields ) ) {
$core_search = array_diff( $core_search, $exclude_fields );
}
$search_where = preg_replace( '/ AND \((.*?)\)/im', "$1 OR", $search_where );
if ( ! empty( $core_search ) ) {
// Add OR instead AND to search in WP core fields user_email, user_login, user_display_name
$search_where = $context->get_search_sql( $search, $core_search, 'both' );
// str_replace( '/', '\/', wp_slash( $search ) ) means that we add backslashes to special symbols + add backslash to slash(/) symbol for proper regular pattern.
$sql['where'] = preg_replace(
'/(' . $meta_join_for_search . '.meta_value = \'' . str_replace( '/', '\/', wp_slash( $search ) ) . '\')/im',
trim( $search_where ) . " $1",
$sql['where'],
1
);
$search_where = preg_replace( '/ AND \((.*?)\)/im', "$1 OR", $search_where );
// str_replace( '/', '\/', wp_slash( $search ) ) means that we add backslashes to special symbols + add backslash to slash(/) symbol for proper regular pattern.
$sql['where'] = preg_replace(
'/(' . $meta_join_for_search . '.meta_value = \'' . str_replace( '/', '\/', wp_slash( $search ) ) . '\')/im',
trim( $search_where ) . " $1",
$sql['where'],
1
);
}
}
}
@@ -1785,6 +1845,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
* Handle filters request
*/
function filters( $directory_data ) {
global $wpdb;
//filters
$filter_query = array();
if ( ! empty( $directory_data['search_fields'] ) ) {
@@ -1817,9 +1878,11 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
continue;
}
/** This filter is documented in includes/core/class-member-directory-meta.php */
$relation = apply_filters( 'um_members_directory_select_filter_relation', 'OR', $field );
switch ( $field ) {
default:
$filter_type = $this->filter_types[ $field ];
/**
@@ -1873,35 +1936,35 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
case 'select':
if ( is_array( $value ) ) {
$field_query = array( 'relation' => 'OR' );
$field_query = array( 'relation' => esc_sql( $relation ) );
foreach ( $value as $single_val ) {
$single_val = trim( stripslashes( $single_val ) );
$arr_meta_query = array(
array(
'key' => $field,
'value' => $single_val,
'compare' => '=',
'key' => $field,
'value' => $single_val,
'compare' => '=',
),
array(
'key' => $field,
'value' => serialize( (string) $single_val ),
'compare' => 'LIKE',
'key' => $field,
'value' => serialize( (string) $single_val ),
'compare' => 'LIKE',
),
array(
'key' => $field,
'value' => '"' . $single_val . '"',
'compare' => 'LIKE',
)
'key' => $field,
'value' => '"' . $single_val . '"',
'compare' => 'LIKE',
),
);
if ( is_numeric( $single_val ) ) {
$arr_meta_query[] = array(
'key' => $field,
'value' => serialize( (int) $single_val ),
'compare' => 'LIKE',
'key' => $field,
'value' => serialize( absint( $single_val ) ),
'compare' => 'LIKE',
);
}
@@ -1975,26 +2038,39 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
if ( ! empty( $field_query ) && $field_query !== true ) {
$this->query_args['meta_query'] = array_merge( $this->query_args['meta_query'], array( $field_query ) );
}
break;
case 'role':
$value = array_map( 'strtolower', $value );
if ( ! empty( $this->query_args['role__in'] ) ) {
$this->query_args['role__in'] = is_array( $this->query_args['role__in'] ) ? $this->query_args['role__in'] : array( $this->query_args['role__in'] );
$default_role = array_intersect( $this->query_args['role__in'], $value );
$um_role = array_diff( $value, $default_role );
foreach ( $um_role as $key => &$val ) {
$val = 'um_' . str_replace( ' ', '-', $val );
if ( 'OR' !== $relation ) {
$role__in_clauses = array( 'relation' => $relation );
foreach ( $value as $role ) {
$role__in_clauses[] = array(
'key' => $wpdb->get_blog_prefix() . 'capabilities',
'value' => '"' . $role . '"',
'compare' => 'LIKE',
);
}
$this->query_args['role__in'] = array_merge( $default_role, $um_role );
$this->query_args['meta_query'] = array_merge( $this->query_args['meta_query'], array( $role__in_clauses ) );
$this->custom_filters_in_query[ $field ] = $value;
} else {
$this->query_args['role__in'] = $value;
};
if ( ! empty( $this->query_args['role__in'] ) ) {
$this->query_args['role__in'] = is_array( $this->query_args['role__in'] ) ? $this->query_args['role__in'] : array( $this->query_args['role__in'] );
$default_role = array_intersect( $this->query_args['role__in'], $value );
$um_role = array_diff( $value, $default_role );
$this->custom_filters_in_query[ $field ] = $this->query_args['role__in'];
foreach ( $um_role as $key => &$val ) {
$val = 'um_' . str_replace( ' ', '-', $val );
}
$this->query_args['role__in'] = array_merge( $default_role, $um_role );
} else {
$this->query_args['role__in'] = $value;
}
$this->custom_filters_in_query[ $field ] = $this->query_args['role__in'];
}
break;
case 'birth_date':
$from_date = date( 'Y/m/d', mktime( 0,0,0, date( 'm', time() ), date( 'd', time() ), date( 'Y', time() - min( $value ) * YEAR_IN_SECONDS ) ) );
@@ -2016,7 +2092,6 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
break;
case 'user_registered':
$offset = 0;
if ( isset( $_POST['gmt_offset'] ) && is_numeric( $_POST['gmt_offset'] ) ) {
$offset = (int) $_POST['gmt_offset'];
@@ -2052,6 +2127,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
$from_date = (int) min( $value ) + ( $offset * HOUR_IN_SECONDS ); // client time zone offset
$to_date = (int) max( $value ) + ( $offset * HOUR_IN_SECONDS ) + DAY_IN_SECONDS - 1; // time 23:59
$meta_query = array(
'relation' => 'AND',
array(
'key' => '_um_last_login',
'value' => array( gmdate( 'Y-m-d H:i:s', $from_date ), gmdate( 'Y-m-d H:i:s', $to_date ) ),
@@ -2059,12 +2135,54 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
'inclusive' => true,
'type' => 'DATETIME',
),
array(
'relation' => 'OR',
array(
'key' => 'um_show_last_login',
'compare' => 'NOT EXISTS',
),
array(
'key' => 'um_show_last_login',
'value' => 'a:1:{i:0;s:2:"no";}',
'compare' => '!=',
),
),
);
$this->custom_filters_in_query[ $field ] = $value;
$this->query_args['meta_query'] = array_merge( $this->query_args['meta_query'], array( $meta_query ) );
break;
case 'gender':
if ( is_array( $value ) ) {
$field_query = array( 'relation' => $relation );
foreach ( $value as $single_val ) {
$single_val = trim( stripslashes( $single_val ) );
$arr_meta_query = array(
array(
'key' => $field,
'value' => $single_val,
'compare' => '=',
),
array(
'key' => $field,
'value' => '"' . $single_val . '"',
'compare' => 'LIKE',
),
);
$field_query = array_merge( $field_query, $arr_meta_query );
}
}
if ( ! empty( $field_query ) ) {
$this->query_args['meta_query'] = array_merge( $this->query_args['meta_query'], array( $field_query ) );
$this->custom_filters_in_query[ $field ] = $value;
}
break;
}
}
}
@@ -2141,35 +2259,36 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
$value = array( $value );
}
$field_query = array( 'relation' => 'OR' );
/** This filter is documented in includes/core/class-member-directory.php */
$field_query = apply_filters( 'um_members_directory_filter_select', array( 'relation' => 'OR' ), $field );
foreach ( $value as $single_val ) {
$single_val = trim( $single_val );
$arr_meta_query = array(
array(
'key' => $field,
'value' => $single_val,
'compare' => '=',
'key' => $field,
'value' => $single_val,
'compare' => '=',
),
array(
'key' => $field,
'value' => serialize( (string) $single_val ),
'compare' => 'LIKE',
'key' => $field,
'value' => serialize( (string) $single_val ),
'compare' => 'LIKE',
),
array(
'key' => $field,
'value' => '"' . $single_val . '"',
'compare' => 'LIKE',
)
'key' => $field,
'value' => '"' . $single_val . '"',
'compare' => 'LIKE',
),
);
if ( is_numeric( $single_val ) ) {
$arr_meta_query[] = array(
'key' => $field,
'value' => serialize( (int) $single_val ),
'compare' => 'LIKE',
'key' => $field,
'value' => serialize( absint( $single_val ) ),
'compare' => 'LIKE',
);
}
@@ -2298,9 +2417,18 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
$offset = $gmt_offset;
}
$from_date = (int) min( $value ) + ( $offset * HOUR_IN_SECONDS ); // client time zone offset
$to_date = (int) max( $value ) + ( $offset * HOUR_IN_SECONDS ) + DAY_IN_SECONDS - 1; // time 23:59
$value = array_map(
function( $date ) {
return is_numeric( $date ) ? $date : strtotime( $date );
},
$value
);
$from_date = gmdate( 'Y-m-d H:i:s', (int) min( $value ) + ( $offset * HOUR_IN_SECONDS ) ); // client time zone offset
$to_date = gmdate( 'Y-m-d H:i:s', (int) max( $value ) + ( $offset * HOUR_IN_SECONDS ) + DAY_IN_SECONDS - 1 ); // time 23:59
$meta_query = array(
'relation' => 'AND',
array(
'key' => '_um_last_login',
'value' => array( $from_date, $to_date ),
@@ -2308,6 +2436,18 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
'inclusive' => true,
'type' => 'DATETIME',
),
array(
'relation' => 'OR',
array(
'key' => 'um_show_last_login',
'compare' => 'NOT EXISTS',
),
array(
'key' => 'um_show_last_login',
'value' => 'a:1:{i:0;s:2:"no";}',
'compare' => '!=',
),
),
);
$this->query_args['meta_query'] = array_merge( $this->query_args['meta_query'], array( $meta_query ) );
@@ -2513,6 +2653,13 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
continue;
}
if ( '_um_last_login' === $key ) {
$show_last_login = get_user_meta( $user_id, 'um_show_last_login', true );
if ( ! empty( $show_last_login ) && 'no' === $show_last_login[0] ) {
continue;
}
}
$value = um_filtered_value( $key );
if ( ! $value ) {
@@ -2537,6 +2684,13 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
continue;
}
if ( '_um_last_login' === $key ) {
$show_last_login = get_user_meta( $user_id, 'um_show_last_login', true );
if ( ! empty( $show_last_login ) && 'no' === $show_last_login[0] ) {
continue;
}
}
$value = um_filtered_value( $key );
if ( ! $value ) {
continue;
+64 -60
View File
@@ -7,64 +7,56 @@ if ( ! defined( 'ABSPATH' ) ) {
if ( ! class_exists( 'um\core\Options' ) ) {
/**
* Class Options
* @package um\core
*/
class Options {
/**
* @var array
*/
var $options = array();
private $options = array();
/**
* Options constructor.
*/
function __construct() {
public function __construct() {
$this->init_variables();
}
/**
* Set variables
*/
function init_variables() {
private function init_variables() {
$this->options = get_option( 'um_options', array() );
}
/**
* Get UM option value
* Get UM option value.
*
* @param $option_id
* @return mixed|string|void
* @param string $option_id
*
* @return mixed
*/
function get( $option_id ) {
public function get( $option_id ) {
if ( isset( $this->options[ $option_id ] ) ) {
/**
* UM hook
* Filters the plugin option.
*
* @type filter
* @title um_get_option_filter__{$option_id}
* @description Change UM option on get by $option_id
* @input_vars
* [{"var":"$option","type":"array","desc":"Option Value"}]
* @change_log
* ["Since: 2.0"]
* @usage
* <?php add_filter( 'um_get_option_filter__{$option_id}', 'function_name', 10, 1 ); ?>
* @example
* <?php
* add_filter( 'um_get_option_filter__{$option_id}', 'my_get_option_filter', 10, 1 );
* function my_get_option_filter( $option ) {
* // your code here
* return $option;
* @param {mixed} $value Option value.
*
* @return {mixed} Option value.
*
* @since 1.3.67
* @hook um_get_option_filter__{$option_id}
*
* @example <caption>Change `option_1` value.</caption>
* function my_custom_option_1( $value ) {
* $value = 'option_1_custom_value';
* return $value;
* }
* ?>
* add_filter( 'um_get_option_filter__option_1', 'my_custom_option_1' );
*/
return apply_filters( "um_get_option_filter__{$option_id}", $this->options[ $option_id ] );
}
@@ -72,35 +64,30 @@ if ( ! class_exists( 'um\core\Options' ) ) {
switch ( $option_id ) {
case 'site_name':
return get_bloginfo( 'name' );
break;
case 'admin_email':
return get_bloginfo( 'admin_email' );
break;
default:
return '';
break;
}
}
/**
* Update UM option value
*
* @param $option_id
* @param $value
*/
function update( $option_id, $value ) {
public function update( $option_id, $value ) {
$this->options[ $option_id ] = $value;
update_option( 'um_options', $this->options );
}
/**
* Delete UM option
*
* @param $option_id
*/
function remove( $option_id ) {
public function remove( $option_id ) {
if ( ! empty( $this->options[ $option_id ] ) ) {
unset( $this->options[ $option_id ] );
}
@@ -108,16 +95,15 @@ if ( ! class_exists( 'um\core\Options' ) ) {
update_option( 'um_options', $this->options );
}
/**
* Get UM option default value
*
* @use UM()->config()
*
* @param $option_id
* @param string $option_id
* @return mixed
*/
function get_default( $option_id ) {
public function get_default( $option_id ) {
$settings_defaults = UM()->config()->settings_defaults;
if ( ! isset( $settings_defaults[ $option_id ] ) ) {
return false;
@@ -136,40 +122,58 @@ if ( ! class_exists( 'um\core\Options' ) ) {
* @return string
*/
public function get_predefined_page_option_key( $slug ) {
/**
* Filters the predefined page option key.
*
* @param {string} $option_key Predefined page option key.
*
* @return {string} Predefined page option key.
*
* @since 2.8.3
* @hook um_predefined_page_option_key
*
* @example <caption>Change option key for login predefined page.</caption>
* function my_um_predefined_page_option_key( $option_key ) {
* if ( 'core_login' === $option_key ) {
* $option_key = 'core_login_custom';
* }
* return $option_key;
* }
* add_filter( 'um_predefined_page_option_key', 'my_um_predefined_page_option_key' );
*/
return apply_filters( 'um_predefined_page_option_key', "core_{$slug}" );
}
/**
* Get core page ID
*
* @todo Deprecate soon
*
* @param string $key
*
* @return mixed|void
* @return string
*/
function get_core_page_id( $key ) {
public function get_core_page_id( $key ) {
/**
* UM hook
* Filters the predefined page option key.
*
* @type filter
* @title um_core_page_id_filter
* @description Change UM page slug
* @input_vars
* [{"var":"$slug","type":"array","desc":"UM page slug"}]
* @change_log
* ["Since: 2.0"]
* @usage
* <?php add_filter( 'um_core_page_id_filter', 'function_name', 10, 1 ); ?>
* @example
* <?php
* add_filter( 'um_core_page_id_filter', 'my_core_page_id', 10, 1 );
* function my_core_page_id( $slug ) {
* // your code here
* return $slug;
* @param {string} $page_key Predefined page option key.
*
* @return {string} Predefined page option key.
*
* @since 1.3.x
* @hook um_core_page_id_filter
*
* @example <caption>Change option key for login predefined page.</caption>
* function my_um_core_page_id_filter( $page_key ) {
* if ( 'core_login' === $page_key ) {
* $page_key = 'core_login_custom';
* }
* return $page_key;
* }
* ?>
* add_filter( 'um_core_page_id_filter', 'my_um_core_page_id_filter' );
*/
return apply_filters( 'um_core_page_id_filter', 'core_' . $key );
return apply_filters( 'um_core_page_id_filter', $this->get_predefined_page_option_key( $key ) );
}
}
}
+1 -1
View File
@@ -57,7 +57,7 @@ if ( ! class_exists( 'um\core\Password' ) ) {
array(
'act' => 'reset_password',
'hash' => $reset_key,
'login' => $user_data->user_login,
'login' => rawurlencode( $user_data->user_login ),
),
um_get_core_page( 'password-reset' )
);
+7
View File
@@ -418,6 +418,13 @@ if ( ! class_exists( 'um\core\Profile' ) ) {
if ( ! empty( $array ) ) {
foreach ( $array as $key ) {
if ( $key ) {
if ( '_um_last_login' === $key ) {
$show_last_login = get_user_meta( um_user( 'ID' ), 'um_show_last_login', true );
if ( ! empty( $show_last_login ) && 'no' === $show_last_login[0] ) {
continue;
}
}
$data = array();
if ( isset( UM()->builtin()->all_user_fields[ $key ] ) ) {
$data = UM()->builtin()->all_user_fields[ $key ];
+1 -1
View File
@@ -213,7 +213,7 @@ KEY meta_value_indx (um_value(191))
$options = get_option( 'um_options', array() );
foreach ( $core_pages as $slug => $page_id ) {
$key = UM()->options()->get_core_page_id( $slug );
$key = UM()->options()->get_predefined_page_option_key( $slug );
$options[ $key ] = $page_id;
}
+16 -4
View File
@@ -330,7 +330,7 @@ function um_submit_account_details( $args ) {
$v = sanitize_text_field( $v );
} elseif ( 'user_email' === $k ) {
$v = sanitize_email( $v );
} elseif ( 'hide_in_members' === $k ) {
} elseif ( 'hide_in_members' === $k || 'um_show_last_login' === $k ) {
$v = array_map( 'sanitize_text_field', $v );
}
@@ -351,6 +351,13 @@ function um_submit_account_details( $args ) {
}
}
if ( isset( $changes['um_show_last_login'] ) ) {
if ( 'yes' === $changes['um_show_last_login'] || array_intersect( array( 'yes' ), $changes['um_show_last_login'] ) ) {
delete_user_meta( $user_id, 'um_show_last_login' );
unset( $changes['um_show_last_login'] );
}
}
/**
* UM hook
*
@@ -552,8 +559,13 @@ add_action( 'um_after_user_account_updated', 'um_after_user_account_updated_perm
* @param $changed
*/
function um_account_updated_notification( $user_id, $changed ) {
um_fetch_user( $user_id );
UM()->mail()->send( um_user( 'user_email' ), 'changedaccount_email' );
// phpcs:disable WordPress.Security.NonceVerification
if ( 'password' !== $_POST['_um_account_tab'] || ! UM()->options()->get( 'changedpw_email_on' ) ) {
// Avoid email duplicates (account changed and password changed) on the password change tab.
um_fetch_user( $user_id );
UM()->mail()->send( um_user( 'user_email' ), 'changedaccount_email' );
}
// phpcs:enable WordPress.Security.NonceVerification
}
add_action( 'um_after_user_account_updated', 'um_account_updated_notification', 20, 2 );
@@ -612,7 +624,7 @@ function um_after_account_privacy( $args ) {
$exports_url = wp_privacy_exports_url();
echo '<p>' . esc_html__( 'You could download your previous data:', 'ultimate-member' ) . '</p>';
echo '<a href="' . esc_attr( $exports_url . get_post_meta( $completed['ID'], '_export_file_name', true ) ) . '">' . esc_html__( 'Download Personal Data', 'ultimate-member' ) . '</a>';
echo '<a href="' . esc_url( $exports_url . get_post_meta( $completed['ID'], '_export_file_name', true ) ) . '">' . esc_html__( 'Download Personal Data', 'ultimate-member' ) . '</a>';
echo '<p>' . esc_html__( 'You could send a new request for an export of personal your data.', 'ultimate-member' ) . '</p>';
}
+1 -1
View File
@@ -766,7 +766,7 @@ add_action( 'um_registration_set_extra_data', 'um_registration_set_profile_full_
* Redirect from default registration to UM registration page
*/
function um_form_register_redirect() {
$page_id = UM()->options()->get( UM()->options()->get_core_page_id( 'register' ) );
$page_id = UM()->options()->get( UM()->options()->get_predefined_page_option_key( 'register' ) );
// Do not redirect if the registration page is not published.
if ( ! empty( $page_id ) && 'publish' === get_post_status( $page_id ) ) {
// Not `um_safe_redirect()` because predefined register page is situated on the same host.
+19 -18
View File
@@ -1,37 +1,38 @@
<?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Control comment author display
* Control comment author display.
*
* @param $return
* @param $author
* @param $comment_ID
* @param string $return The HTML-formatted comment author link.
* @param string $author The comment author's username.
* @param string $comment_id The comment ID as a numeric string.
*
* @return string
*/
function um_comment_link_to_profile( $return, $author, $comment_ID ) {
function um_comment_link_to_profile( $return, $author, $comment_id ) {
$comment = get_comment( $comment_id );
$comment = get_comment( $comment_ID );
if( isset( $comment->user_id ) && ! empty( $comment->user_id ) ){
if ( ! empty( $comment->user_id ) ) {
if ( isset( UM()->user()->cached_user[ $comment->user_id ] ) && UM()->user()->cached_user[ $comment->user_id ] ) {
$return = '<a href="'. UM()->user()->cached_user[$comment->user_id]['url'] . '">' . UM()->user()->cached_user[$comment->user_id]['name'] . '</a>';
$return = '<a href="' . esc_url( UM()->user()->cached_user[ $comment->user_id ]['url'] ) . '">' . UM()->user()->cached_user[ $comment->user_id ]['name'] . '</a>';
} else {
um_fetch_user( $comment->user_id );
UM()->user()->cached_user[ $comment->user_id ] = array('url' => um_user_profile_url(), 'name' => um_user('display_name') );
$return = '<a href="'. UM()->user()->cached_user[$comment->user_id]['url'] . '">' . UM()->user()->cached_user[$comment->user_id]['name'] . '</a>';
UM()->user()->cached_user[ $comment->user_id ] = array(
'url' => um_user_profile_url(),
'name' => um_user( 'display_name' ),
);
$return = '<a href="' . esc_url( UM()->user()->cached_user[ $comment->user_id ]['url'] ) . '">' . UM()->user()->cached_user[ $comment->user_id ]['name'] . '</a>';
um_reset_user();
}
}
return $return;
}
add_filter('get_comment_author_link', 'um_comment_link_to_profile', 10000, 3 );
add_filter( 'get_comment_author_link', 'um_comment_link_to_profile', 10000, 3 );
+14 -30
View File
@@ -3,24 +3,6 @@ if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Field is required?
*
* @param $label
* @param $data
*
* @return string
*/
function um_edit_label_all_fields( $label, $data ) {
$asterisk = UM()->options()->get( 'form_asterisk' );
if ( $asterisk && ! empty( $data['required'] ) ) {
$label .= '<span class="um-req" title="' . esc_attr__( 'Required', 'ultimate-member' ) . '">*</span>';
}
return $label;
}
add_filter( 'um_edit_label_all_fields', 'um_edit_label_all_fields', 10, 2 );
/**
* Outputs a oEmbed field
*
@@ -114,7 +96,7 @@ add_filter( 'um_profile_field_filter_hook__youtube_video', 'um_profile_field_fil
function um_profile_field_filter_hook__spotify( $value, $data ) {
if ( preg_match( '/https:\/\/open.spotify.com\/.*/', $value ) ) {
if ( false !== strpos( $value, '/user/' ) ) {
$value = '<a href="' . esc_attr( $value ) . '" target="_blank">' . esc_html( $value ) . '</a>';
$value = '<a href="' . esc_url( $value ) . '" target="_blank">' . esc_html( $value ) . '</a>';
} else {
$url = str_replace( 'open.spotify.com/', 'open.spotify.com/embed/', $value );
@@ -162,12 +144,10 @@ add_filter( 'um_profile_field_filter_hook__vimeo_video', 'um_profile_field_filte
* @return int|string
*/
function um_profile_field_filter_hook__phone( $value, $data ) {
$value = '<a href="tel:' . esc_attr( $value ) . '" rel="nofollow" title="' . esc_attr( $data['title'] ) . '">' . esc_html( $value ) . '</a>';
$value = '<a href="' . esc_url( 'tel:' . $value ) . '" rel="nofollow" title="' . esc_attr( $data['title'] ) . '">' . esc_html( $value ) . '</a>';
return $value;
}
add_filter( 'um_profile_field_filter_hook__phone_number', 'um_profile_field_filter_hook__phone', 99, 2 );
add_filter( 'um_profile_field_filter_hook__mobile_number', 'um_profile_field_filter_hook__phone', 99, 2 );
add_filter( 'um_profile_field_filter_hook__tel', 'um_profile_field_filter_hook__phone', 99, 2 );
/**
* Outputs a viber link
@@ -178,8 +158,9 @@ add_filter( 'um_profile_field_filter_hook__mobile_number', 'um_profile_field_fil
* @return int|string
*/
function um_profile_field_filter_hook__viber( $value, $data ) {
$value = str_replace('+', '', $value);
$value = '<a href="viber://chat?number=%2B' . esc_attr( $value ) . '" target="_blank" rel="nofollow" title="' . esc_attr( $data['title'] ) . '">' . esc_html( $value ) . '</a>';
$value = str_replace( '+', '', $value );
$url = 'viber://chat?number=%2B' . $value;
$value = '<a href="' . esc_url( $url, array( 'viber' ) ) . '" target="_blank" rel="nofollow" title="' . esc_attr( $data['title'] ) . '">' . esc_html( $value ) . '</a>';
return $value;
}
add_filter( 'um_profile_field_filter_hook__viber', 'um_profile_field_filter_hook__viber', 99, 2 );
@@ -194,8 +175,9 @@ add_filter( 'um_profile_field_filter_hook__viber', 'um_profile_field_filter_hook
* @return int|string
*/
function um_profile_field_filter_hook__whatsapp( $value, $data ) {
$value = str_replace('+', '', $value);
$value = '<a href="https://api.whatsapp.com/send?phone=' . esc_attr( $value ) . '" target="_blank" rel="nofollow" title="' . esc_attr( $data['title'] ) . '">' . esc_html( $value ) . '</a>';
$value = str_replace( '+', '', $value );
$url = add_query_arg( array( 'phone' => $value ), 'https://api.whatsapp.com/send' );
$value = '<a href="' . esc_url( $url ) . '" target="_blank" rel="nofollow" title="' . esc_attr( $data['title'] ) . '">' . esc_html( $value ) . '</a>';
return $value;
}
add_filter( 'um_profile_field_filter_hook__whatsapp', 'um_profile_field_filter_hook__whatsapp', 99, 2 );
@@ -391,7 +373,7 @@ function um_profile_field_filter_hook__file( $value, $data ) {
}
$value = '<div class="um-single-file-preview show">
<div class="um-single-fileinfo">
<a href="' . esc_attr( $uri ) . '" target="_blank">
<a href="' . esc_url( $uri ) . '" target="_blank">
<span class="icon" style="background:'. UM()->files()->get_fonticon_bg_by_ext( $file_type['ext'] ) . '"><i class="'. UM()->files()->get_fonticon_by_ext( $file_type['ext'] ) .'"></i></span>
<span class="filename">' . esc_attr( $value ) . '</span>
</a>
@@ -465,11 +447,13 @@ function um_profile_field_filter_hook__( $value, $data, $type = '' ) {
$url_rel = ( isset( $data['url_rel'] ) && 'nofollow' === $data['url_rel'] ) ? 'rel="nofollow"' : '';
$data['url_target'] = ( isset( $data['url_target'] ) ) ? $data['url_target'] : '_blank';
$protocols = wp_allowed_protocols();
if ( false === strstr( $value, 'join.skype.com' ) ) {
$value = 'skype:' . $value . '?chat';
$protocols[] = 'skype';
}
$value = '<a href="' . esc_attr( $value ) . '" title="' . esc_attr( $alt ) . '" target="' . esc_attr( $data['url_target'] ) . '" ' . $url_rel . '>' . esc_html( $alt ) . '</a>';
$value = '<a href="' . esc_url( $value, $protocols ) . '" title="' . esc_attr( $alt ) . '" target="' . esc_attr( $data['url_target'] ) . '" ' . $url_rel . '>' . esc_html( $alt ) . '</a>';
} else {
// check $value is oEmbed
if ( 'oembed' === $data['type'] ) {
@@ -545,7 +529,7 @@ function um_profile_field_filter_hook__( $value, $data, $type = '' ) {
if ( ! is_array( $value ) ) {
if ( is_email( $value ) ) {
$value = '<a href="mailto:' . $value . '" title="' . $value . '">' . $value . '</a>';
$value = '<a href="' . esc_url( 'mailto:' . $value ) . '" title="' . $value . '">' . $value . '</a>';
}
} else {
$value = implode( ', ', $value );
+47
View File
@@ -0,0 +1,47 @@
<?php
/**
* Deprecated Ultimate Member hooks.
* The place for hookdocs of the Ultimate Member hooks that have been deprecated.
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Filters the language locale before loading textdomain.
*
* @param {string} $language_locale Current language locale.
*
* @return {string} Maybe changed language locale.
*
* @since 1.3.x
* @depecated 2.8.5 Used WordPress native `load_plugin_textdomain()`. And can be replaced via WordPress native hook 'plugin_locale'.
* @hook um_language_locale
*
* @example <caption>Change UM language locale.</caption>
* function my_um_language_locale( $language_locale ) {
* $language_locale = 'es_ES';
* return $language_locale;
* }
* add_filter( 'um_language_locale', 'my_um_language_locale' );
*/
/**
* Filters the path to the language file (*.mo).
*
* @param {string} $language_file Default path to the language file.
*
* @return {string} Language file path.
*
* @since 1.3.x
* @depecated 2.8.5 Used WordPress native `load_plugin_textdomain()`. And can be replaced via WordPress native hook 'load_textdomain_mofile'.
* @hook um_language_file
*
* @example <caption>Change UM language file path.</caption>
* function my_um_language_file( $language_file ) {
* $language_file = '{path-to-language-file}';
* return $language_file;
* }
* add_filter( 'um_language_file', 'my_um_language_file' );
*/
+1 -1
View File
@@ -870,7 +870,7 @@ function um_user_submited_display( $k, $title, $data = array(), $style = true )
}
if ( ! empty( $filedata['original_name'] ) ) {
$v = '<a class="um-preview-upload" target="_blank" href="' . esc_attr( $baseurl . um_user( 'ID' ) . '/' . $file ) . '">' . esc_html( $filedata['original_name'] ) . '</a>';
$v = '<a class="um-preview-upload" target="_blank" href="' . esc_url( $baseurl . um_user( 'ID' ) . '/' . $file ) . '">' . esc_html( $filedata['original_name'] ) . '</a>';
} else {
$v = $baseurl . um_user( 'ID' ) . '/' . $file;
}
+26 -3
View File
@@ -2,12 +2,11 @@
Author URI: https://ultimatemember.com/
Plugin URI: https://ultimatemember.com/
Contributors: ultimatemember, champsupertramp, nsinelnikov
Donate link:
Tags: community, member, membership, user-profile, user-registration
Requires PHP: 5.6
Requires at least: 5.5
Tested up to: 6.4
Stable tag: 2.8.4
Tested up to: 6.5
Stable tag: 2.8.5
License: GNU Version 2 or Any Later Version
License URI: http://www.gnu.org/licenses/gpl-3.0.txt
@@ -167,6 +166,25 @@ No specific extensions are needed. But we highly recommended keep active these P
IMPORTANT: PLEASE UPDATE THE PLUGIN TO AT LEAST VERSION 2.6.7 IMMEDIATELY. VERSION 2.6.7 PATCHES SECURITY PRIVILEGE ESCALATION VULNERABILITY. PLEASE SEE [THIS ARTICLE](https://docs.ultimatemember.com/article/1866-security-incident-update-and-recommended-actions) FOR MORE INFORMATION
= 2.8.5 2024-04-09 =
**Enhancements**
* Added: "Hide my last login" via the Account > Privacy setting
* Added: Exclude and Include fields for member directory searching
* Tweak: Compatibility with WordPress 6.5
**Bugfixes**
* Fixed: URL attributes escaping (CVE-2024-2765)
* Fixed: wp-admin Ultimate Member > Dashboard layouts
* Fixed: Required fields labels
* Fixed: Change password and update account email notifications duplicates
* Fixed: Reset Password urlencoded username
* Fixed: Clear media JS in wp-admin settings
**Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade**
= 2.8.4 2024-03-06 =
**Enhancements**
@@ -181,6 +199,8 @@ IMPORTANT: PLEASE UPDATE THE PLUGIN TO AT LEAST VERSION 2.6.7 IMMEDIATELY. VERSI
* Fixed: Password reset url for the approved user who didn't set their password after registration without password
* Fixed: Conflict with WebP Uploads
**Cached and optimized/minified assets(JS/CSS) must be flushed/re-generated after upgrade**
= 2.8.3 2024-02-19 =
**Enhancements**
@@ -313,6 +333,9 @@ IMPORTANT: PLEASE UPDATE THE PLUGIN TO AT LEAST VERSION 2.6.7 IMMEDIATELY. VERSI
== Upgrade Notice ==
= 2.8.5 =
This version fixes a security related bug. Upgrade immediately.
= 2.8.4 =
This version fixes a security related bug. Upgrade immediately.
+1 -1
View File
@@ -3,7 +3,7 @@
* Plugin Name: Ultimate Member
* Plugin URI: http://ultimatemember.com/
* Description: The easiest way to create powerful online communities and beautiful user profiles with WordPress
* Version: 2.8.4
* Version: 2.8.5
* Author: Ultimate Member
* Author URI: http://ultimatemember.com/
* Text Domain: ultimate-member