Skip to content

Commit 2b90448

Browse files
authored
Merge pull request #21 from pierrekamel5/master
Widget Enhancements
2 parents 32de48b + 72adcdb commit 2b90448

40 files changed

Lines changed: 13180 additions & 11178 deletions

control/content/index.html

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@
1111
<!-- JS -->
1212
<script src="../../../../scripts/buildfire.min.js"></script>
1313
<!-- build:bundleJSFiles -->
14-
<script src="../../widget/js/Analytics.js"></script>
15-
<script src="../../widget/js/analyticsKeys.js"></script>
14+
<script src="../../widget/assets/js/Analytics.js"></script>
15+
<script src="../../widget/assets/js/analyticsKeys.js"></script>
1616
<!-- endbuild -->
1717

1818
<!-- WYSIWYG -->
1919
<script src="../../../../scripts/tinymce/tinymce.min.js"></script>
2020

21+
22+
<link href="../../../../styles/control/bf-base.css" rel="stylesheet">
2123
<script>
2224
Analytics.init();
2325

@@ -51,7 +53,6 @@
5153

5254
data = obj.data;
5355
tinymce.activeEditor.setContent(obj.data.text);
54-
tinymce.activeEditor.execCommand('mceFullScreen');
5556
});
5657
});
5758
editor.on("keyup", function (saveWithDelay) {
@@ -85,10 +86,12 @@
8586
</head>
8687

8788
<body>
88-
89-
89+
<div>
90+
<h1>Introduction</h1>
9091
<textarea id="text" ui-tinymce="editorOptions" class="form-control" rows="5" width="100%" height="300px"></textarea>
9192

93+
</div>
94+
9295

9396
<script>
9497
function save(data) {

control/settings/app.js

Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
2+
const commentInput = document.getElementById("comments")
3+
const allowAllUsersStatusUpdate = document.getElementById("statusUpdateAllUsers")
4+
const allowNoUsersStatusUpdate = document.getElementById("statusUpdateNoUsers")
5+
const allowUsersWithStatusUpdate = document.getElementById("statusUpdateUsersWith")
6+
7+
const itemPushNotificationAllUsers = document.getElementById("pushNotificationAllUsers")
8+
const itemPushNotificationNoUsers = document.getElementById("pushNotificationNoUsers")
9+
const itemPushNotificationUsersWith = document.getElementById("pushNotificationUsersWith")
10+
const userTagsContainer = document.getElementById("userTagsContainer")
11+
const itemPushNotificationTagsContainer = document.getElementById("itemPushNotificationTagsContainer")
12+
13+
14+
const statusUpdatetagsInputContainer = new buildfire.components.control.tagsInput("#statusUpdatetagsInputContainer", {
15+
languageSettings:{
16+
placeholder: "Select Tags",
17+
},
18+
settings:{
19+
sourceType: 'custom',
20+
source: (options, callback) => {
21+
buildfire.auth.showTagsSearchDialog(null, (err, result) => {
22+
if (err) return console.log(err);
23+
24+
if (result && result.length) {
25+
let allTags = result.map(tag => ({value: tag.tagName}));
26+
settings.statusUpdateTags = result;
27+
save();
28+
callback(allTags);
29+
}
30+
});
31+
},
32+
allowAutoComplete: true,
33+
allowUserInput: true,
34+
}
35+
});
36+
const pushNotificationtagsInputContainer = new buildfire.components.control.tagsInput("#pushNotificationtagsInputContainer", {
37+
languageSettings:{
38+
placeholder: "Select Tags",
39+
},
40+
settings:{
41+
sourceType: 'custom',
42+
source: (options, callback) => {
43+
buildfire.auth.showTagsSearchDialog(null, (err, result) => {
44+
if (err) return console.log(err);
45+
46+
if (result && result.length) {
47+
let allTags = result.map(tag => ({value: tag.tagName}));
48+
settings.pushNotificationTags = result;
49+
save();
50+
callback(allTags);
51+
}
52+
});
53+
},
54+
allowAutoComplete: true,
55+
allowUserInput: true,
56+
}
57+
});
58+
59+
statusUpdatetagsInputContainer.onUpdate = (data) => {
60+
settings.statusUpdateTags = data.tags;
61+
62+
save();
63+
}
64+
65+
pushNotificationtagsInputContainer.onUpdate = (data) => {
66+
settings.pushNotificationTags = data.tags;
67+
save();
68+
}
69+
70+
var settings = {}
71+
72+
73+
const init = () => {
74+
Settings.get((err, result)=>{
75+
settings = result;
76+
if(result.enableComments){
77+
commentInput.checked = true;
78+
}
79+
setCheckedInputAllowUsersStatus(result.statusUpdateUsersSegment)
80+
setCheckedInputItemPushNotification(result.pushNotificationUsersSegment)
81+
82+
if(settings.statusUpdateTags && settings.statusUpdateTags.length){
83+
statusUpdatetagsInputContainer.set(settings.statusUpdateTags);
84+
}
85+
if(settings.pushNotificationTags && settings.pushNotificationTags.length){
86+
pushNotificationtagsInputContainer.set(settings.pushNotificationTags);
87+
}
88+
showUsersTagsContainer();
89+
showItemPushNotificationTagsContainer();
90+
})
91+
}
92+
93+
const showUsersTagsContainer = () => {
94+
userTagsContainer.style.display = allowUsersWithStatusUpdate.checked ? "block" : "none"
95+
}
96+
const showItemPushNotificationTagsContainer = () => {
97+
itemPushNotificationTagsContainer.style.display = itemPushNotificationUsersWith.checked ? "block" : "none"
98+
}
99+
100+
const setCheckedInputAllowUsersStatus = (status) => {
101+
switch (status) {
102+
case STATUS_UPDATE_SEGMENT.ALL_USERS:
103+
allowAllUsersStatusUpdate.checked = true;
104+
break;
105+
case STATUS_UPDATE_SEGMENT.NO_USERS:
106+
allowNoUsersStatusUpdate.checked = true;
107+
break;
108+
case STATUS_UPDATE_SEGMENT.TAGS:
109+
allowUsersWithStatusUpdate.checked = true;
110+
break;
111+
default:
112+
allowNoUsersStatusUpdate.checked = true;
113+
break;
114+
}
115+
116+
showUsersTagsContainer();
117+
}
118+
119+
const setCheckedInputItemPushNotification = (status) => {
120+
switch (status) {
121+
case PUSH_NOTIFICATIONS_SEGMENT.ALL_USERS:
122+
itemPushNotificationAllUsers.checked = true;
123+
break;
124+
case PUSH_NOTIFICATIONS_SEGMENT.NO_USERS:
125+
itemPushNotificationNoUsers.checked = true;
126+
break;
127+
case PUSH_NOTIFICATIONS_SEGMENT.TAGS:
128+
itemPushNotificationUsersWith.checked = true;
129+
break;
130+
default:
131+
itemPushNotificationNoUsers.checked = true;
132+
break;
133+
}
134+
135+
showItemPushNotificationTagsContainer();
136+
}
137+
138+
const updateCommentsProperty = () => {
139+
settings.enableComments = commentInput.checked;
140+
save();
141+
}
142+
143+
const changeStatusUpdate = (status) => {
144+
setCheckedInputAllowUsersStatus(status)
145+
settings.statusUpdateUsersSegment = status;
146+
save();
147+
}
148+
149+
const changeItemPushNotification = (status) => {
150+
setCheckedInputItemPushNotification(status)
151+
settings.pushNotificationUsersSegment = status;
152+
save();
153+
}
154+
155+
const save = () => {
156+
Settings.save(settings,()=>{})
157+
158+
buildfire.messaging.sendMessageToWidget({
159+
type: 'UpdateSettings',
160+
data: settings
161+
});
162+
}
163+
164+
init();

control/settings/index.html

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
5+
<link href="../../../../styles/helper.css" rel="stylesheet" />
6+
<link rel="stylesheet" href="../assets/control.css" />
7+
<link href="../../../../styles/control/bf-base.css" rel="stylesheet" />
8+
<link href="./styles.css" rel="stylesheet" />
9+
<link href="../../../../styles/control/siteIcons-control.css" rel="stylesheet" />
10+
<script src="../../../../scripts/buildfire.min.js"></script>
11+
<!-- build:bundleJSFiles -->
12+
<script src="../../widget/assets/js/settings.js"></script>
13+
<!-- endbuild -->
14+
15+
16+
<link href="../../../../styles/components/control/tagsInput/tagsInput.min.css" rel="stylesheet"/>
17+
18+
<script src="../../../../scripts/buildfire/components/control/tagsInput/tagsInput.min.js"></script>
19+
</head>
20+
21+
<body>
22+
<div class="settings-container">
23+
24+
25+
<div class="row margin-bottom-sixteen">
26+
27+
<div class="item clearfix row flex-center">
28+
<div class="labels col-md-4 pull-left tooltip-container">
29+
<span>Comments</span>
30+
<span class="tip btn-info-icon btn-primary"><span class="cp-tooltip">Enabling this option allows users to leave comments on items that have been upvoted. To make this work, you must have the Community Wall feature installed</span>
31+
</div>
32+
<div class="main col-md-8 button-switch">
33+
<input id="comments" type="checkbox" onchange="updateCommentsProperty()"/>
34+
<label for="comments" class="label-success"></label>
35+
</div>
36+
</div>
37+
</div>
38+
<div class="row margin-bottom-sixteen flex-center">
39+
<div class="labels col-md-4 pull-left tooltip-container">
40+
<span>Allow Status Update</span>
41+
<span class="tip btn-info-icon btn-primary"><span class="cp-tooltip">Specify who has permission to mark items as completed</span>
42+
</div>
43+
<div class="main col-md-7 pull-right padding-lr-6">
44+
<span class="radios-row">
45+
<div class="radio radio-primary radio-inline">
46+
<input
47+
id="statusUpdateAllUsers"
48+
type="radio"
49+
name="allowStatusUpdate"
50+
onchange="changeStatusUpdate(1)"
51+
/>
52+
<label class="subtitles-labels" for="statusUpdateAllUsers">All Users</label>
53+
</div>
54+
<div class="radio radio-primary radio-inline">
55+
<input
56+
id="statusUpdateNoUsers"
57+
type="radio"
58+
name="allowStatusUpdate"
59+
onchange="changeStatusUpdate(2)"
60+
/>
61+
<label class="subtitles-labels" for="statusUpdateNoUsers">No Users</label>
62+
</div>
63+
<div class="radio radio-primary radio-inline">
64+
<input
65+
id="statusUpdateUsersWith"
66+
type="radio"
67+
name="allowStatusUpdate"
68+
onchange="changeStatusUpdate(3)"
69+
/>
70+
<label class="subtitles-labels" for="statusUpdateUsersWith">Users With</label>
71+
</div>
72+
</span>
73+
</div>
74+
</div>
75+
<div class="row" id="userTagsContainer" style="margin: 20px 0;padding: 0 !important;">
76+
<div class="col-md-4"></div>
77+
<div class="user-tag-container col-md-8">
78+
<div style="display:flex;width:100%;height: fit-content;">
79+
<label class="user-tag-title" >User Tags</label>
80+
<div id="statusUpdatetagsInputContainer"></div>
81+
</div>
82+
</div>
83+
</div>
84+
85+
86+
<div class="row margin-bottom-sixteen flex-center" >
87+
<div class="labels col-md-4 pull-left tooltip-container">
88+
<span>Allow new item Push notification</span>
89+
<span class="tip btn-info-icon btn-primary"><span class="cp-tooltip">Specify who should receive push notifications whenever a new item is created</span>
90+
91+
</div>
92+
<div class="main col-md-7 pull-right padding-lr-6">
93+
<span class="radios-row">
94+
<div class="radio radio-primary radio-inline">
95+
<input
96+
id="pushNotificationAllUsers"
97+
type="radio"
98+
name="pushNotificationTags"
99+
onchange="changeItemPushNotification(1)"
100+
/>
101+
<label class="subtitles-labels" for="pushNotificationAllUsers">All Users</label>
102+
</div>
103+
<div class="radio radio-primary radio-inline">
104+
<input
105+
id="pushNotificationNoUsers"
106+
type="radio"
107+
name="pushNotificationTags"
108+
onchange="changeItemPushNotification(2)"
109+
/>
110+
<label class="subtitles-labels" for="pushNotificationNoUsers">No Users</label>
111+
</div>
112+
<div class="radio radio-primary radio-inline">
113+
<input
114+
id="pushNotificationUsersWith"
115+
type="radio"
116+
name="pushNotificationTags"
117+
onchange="changeItemPushNotification(3)"
118+
/>
119+
<label class="subtitles-labels" for="pushNotificationUsersWith">Users With</label>
120+
</div>
121+
</span>
122+
</div>
123+
</div>
124+
<div class="row" id="itemPushNotificationTagsContainer"
125+
style="margin: 20px 0;padding: 0 !important;">
126+
<div class="col-md-4"></div>
127+
<div class="user-tag-container col-md-8">
128+
<div style="display:flex;width:100%;height: fit-content;">
129+
<label class="user-tag-title" >User Tags</label>
130+
<div id="pushNotificationtagsInputContainer"></div>
131+
</div>
132+
</div>
133+
</div>
134+
</div>
135+
</body>
136+
137+
<script src="./app.js"></script>
138+
</html>

0 commit comments

Comments
 (0)