PluginProbe
FluentBoards – Project Management, Task Management, Goal Tracking, Kanban Board, and, Team Collaboration / 2.1.0
FluentBoards – Project Management, Task Management, Goal Tracking, Kanban Board, and, Team Collaboration v2.1.0
2.1.0 2.0.15 2.0.12 2.0.10 2.0.4 2.0.1 2.0.0 1.95.3 1.95.2 1.95 1.91.6 trunk 1.11 1.12 1.13 1.20 1.21 1.22 1.23 1.30 1.31 1.32 1.35 1.40 1.41 All 42 releases
← All changes | app/Services/Constant.php +129 -38 1.91.62.1.0 View file →
@@ -18,8 +18,9 @@
18 18 const ACTIVITY_TASK = 'task_activity';
19 19 const ACTIVITY_BOARD = 'board_activity';
20 20
21 21 const TASK_ASSIGNEE = 'task_assignee';
22 + const TASK_SOURCE_FLUENT_SUPPORT = 'FluentSupport';
22 23
23 24 const OBJECT_TYPE_BOARD_USER_EMAIL_NOTIFICATION = 'board_user_email';
24 25 const OBJECT_TYPE_BOARD_USER_NOTIFICATION = 'board_user_notification';
25 26 const OBJECT_TYPE_TASK_ASSIGNEE = 'task_assignee';
@@ -30,9 +31,8 @@
30 31
31 32 const TASK_WATCH_NOTIFICATION_TYPES = [
32 33 'comment_add' => true,
33 34 'comment_update' => true,
34 - 'description_update' => true,
35 35 'title_change' => true,
36 36 'move_to_another_board' => true,
37 37 'Label' => true,
38 38 'due_at' => true,
@@ -54,9 +54,12 @@
54 54 const OBJECT_TYPE_BOARD_NOTIFICATION = 'board_notification';
55 55
56 56 const OBJECT_TYPE_USER_TASK_WATCH = 'task_user_watch';
57 57
58 + const OBJECT_TYPE_TASK_DEPENDENCY = 'task_dependency';
59 +
58 60 const IS_TASK_TEMPLATE = 'is_template';
61 + const IS_TASK_PINNED = 'is_pinned';
59 62
60 63 const BOARD_USER_SETTINGS = [
61 64 'is_admin' => false
62 65 ];
@@ -74,8 +77,9 @@
74 77
75 78 const OBJECT_TYPE_BOARD = 'board';
76 79
77 80 const OBJECT_TYPE_FOLDER = 'folder';
81 + const OBJECT_TYPE_FOLDER_BOARD = 'FluentBoardsPro\App\Models\Folder';
78 82 const OBJECT_TYPE_TASK = 'TASK';
79 83 const CRM_CONTACT = 'crm_subscriber';
80 84 const CRM_CONTACT_ASSOCIATED_BOARD = 'contact_associated_board';
81 85 const BOARD_ASSOCIATED_CRM_CONTACT = 'board_associated_contact';
@@ -115,15 +119,12 @@
115 119 'table_view_dates' => true,
116 120 'table_view_assignees' => true,
117 121 'table_view_labels' => true,
118 122 'table_view_created_at' => true,
123 + 'table_view_subtasks' => false,
124 + 'table_view_activity' => false,
119 125 ];
120 126
121 -
122 - const BOARD_DEFAULT_IMAGE = 'board_default_image';
123 - const BOARD_DEFAULT_IMAGE_URL = 'https://fluentboards.com/shared-files/';
124 -
125 -
126 127 const TRELLO_COLOR_MAP = [
127 128 "green" => "#4bce97",
128 129 "yellow" => "#f5cd47",
129 130 "orange" => "#fea362",
@@ -188,103 +189,180 @@
188 189 "pink_light" => "#1B2533",
189 190 "black_light" => "#1B2533"
190 191 ];
191 192
193 + const LABEL_COLOR_PRESET_SETTING = 'color_preset';
192 194
195 + /**
196 + * Theme-aware label colors in the same order shown by the label picker.
197 + *
198 + * The persisted preset ID is stable; the UI selects the light or dark
199 + * pair at render time. The light pair is also stored as a compatibility
200 + * fallback for integrations and older clients.
201 + */
202 + const LABEL_COLOR_PRESETS = [
203 + ['id' => 'green-soft', 'light_bg_color' => '#C1EED9', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#234030', 'dark_text_color' => '#FFFFFF'],
204 + ['id' => 'yellow-soft', 'light_bg_color' => '#F1E593', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#463817', 'dark_text_color' => '#FFFFFF'],
205 + ['id' => 'orange-soft', 'light_bg_color' => '#F7E0A8', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#562F15', 'dark_text_color' => '#FFFFFF'],
206 + ['id' => 'red-soft', 'light_bg_color' => '#F6D2CE', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#4B211D', 'dark_text_color' => '#FFFFFF'],
207 + ['id' => 'purple-soft', 'light_bg_color' => '#E6D3F7', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#3A234F', 'dark_text_color' => '#FFFFFF'],
208 + ['id' => 'green-bold', 'light_bg_color' => '#70C392', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#366048', 'dark_text_color' => '#FFFFFF'],
209 + ['id' => 'yellow-bold', 'light_bg_color' => '#E4CA59', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#6F5523', 'dark_text_color' => '#FFFFFF'],
210 + ['id' => 'orange-bold', 'light_bg_color' => '#EBA146', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#874922', 'dark_text_color' => '#FFFFFF'],
211 + ['id' => 'red-bold', 'light_bg_color' => '#E17066', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#95362D', 'dark_text_color' => '#FFFFFF'],
212 + ['id' => 'purple-bold', 'light_bg_color' => '#B579E7', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#6B3E92', 'dark_text_color' => '#FFFFFF'],
213 + ['id' => 'green-strong', 'light_bg_color' => '#3F7654', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#70C392', 'dark_text_color' => '#1B2533'],
214 + ['id' => 'yellow-strong', 'light_bg_color' => '#826429', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#CFAA47', 'dark_text_color' => '#1B2533'],
215 + ['id' => 'orange-strong', 'light_bg_color' => '#A6572A', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#EBA146', 'dark_text_color' => '#1B2533'],
216 + ['id' => 'red-strong', 'light_bg_color' => '#AF4035', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#E17066', 'dark_text_color' => '#1B2533'],
217 + ['id' => 'purple-strong', 'light_bg_color' => '#8049AE', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#B579E7', 'dark_text_color' => '#1B2533'],
218 + ['id' => 'blue-soft', 'light_bg_color' => '#CCDDF9', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#1A2D53', 'dark_text_color' => '#FFFFFF'],
219 + ['id' => 'sky-soft', 'light_bg_color' => '#C9E8F7', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#223B49', 'dark_text_color' => '#FFFFFF'],
220 + ['id' => 'lime-soft', 'light_bg_color' => '#D5ECAA', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#333E22', 'dark_text_color' => '#FFFFFF'],
221 + ['id' => 'pink-soft', 'light_bg_color' => '#F4CDE6', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#402436', 'dark_text_color' => '#FFFFFF'],
222 + ['id' => 'gray-soft', 'light_bg_color' => '#D8D9DC', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#424446', 'dark_text_color' => '#FFFFFF'],
223 + ['id' => 'blue-bold', 'light_bg_color' => '#6A93E3', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#294FA9', 'dark_text_color' => '#FFFFFF'],
224 + ['id' => 'sky-bold', 'light_bg_color' => '#7BB9D6', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#345E73', 'dark_text_color' => '#FFFFFF'],
225 + ['id' => 'lime-bold', 'light_bg_color' => '#97BD5C', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#4A5F2B', 'dark_text_color' => '#FFFFFF'],
226 + ['id' => 'pink-bold', 'light_bg_color' => '#D172AE', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#7D3D65', 'dark_text_color' => '#FFFFFF'],
227 + ['id' => 'gray-bold', 'light_bg_color' => '#81848B', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#595B60', 'dark_text_color' => '#FFFFFF'],
228 + ['id' => 'blue-strong', 'light_bg_color' => '#305FCA', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#6A93E3', 'dark_text_color' => '#1B2533'],
229 + ['id' => 'sky-strong', 'light_bg_color' => '#3D708B', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#7BB9D6', 'dark_text_color' => '#1B2533'],
230 + ['id' => 'lime-strong', 'light_bg_color' => '#5A7133', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#97BD5C', 'dark_text_color' => '#1B2533'],
231 + ['id' => 'pink-strong', 'light_bg_color' => '#964878', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#D172AE', 'dark_text_color' => '#1B2533'],
232 + ['id' => 'gray-strong', 'light_bg_color' => '#60636A', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#8B8E93', 'dark_text_color' => '#1B2533'],
233 + ];
234 +
235 + /**
236 + * Find a predefined label color by its persisted ID.
237 + *
238 + * @param string $presetId
239 + * @return array|null
240 + */
241 + public static function getLabelColorPreset($presetId)
242 + {
243 + foreach (self::LABEL_COLOR_PRESETS as $preset) {
244 + if ($preset['id'] === $presetId) {
245 + return $preset;
246 + }
247 + }
248 +
249 + return null;
250 + }
251 +
252 +
193 253 const FBS_ONBOARDING = 'fbs_onboarding';
194 254 const FBS_RECENTLY_VIEWED_CHECK = 'fbs_recently_viewed_checked';
195 255 const BOARD_BACKGROUND_DEFAULT_SOLID_COLORS = [
196 256 [
197 257 'id' => 'solid_1',
198 - 'value' => '#d1d8e0'
258 + 'value' => '#6A88A7',
259 + 'dark_value' => '#314253'
199 260 ],
200 261 [
201 262 'id' => 'solid_2',
202 - 'value' => '#ff9ff3'
263 + 'value' => '#9E7D61',
264 + 'dark_value' => '#574435'
203 265 ],
204 266 [
205 267 'id' => 'solid_3',
206 - 'value' => '#a55eea'
268 + 'value' => '#D24F7D',
269 + 'dark_value' => '#6A223C'
207 270 ],
208 271 [
209 272 'id' => 'solid_4',
210 - 'value' => '#5f27cd'
273 + 'value' => '#D7543D',
274 + 'dark_value' => '#772E21'
211 275 ],
212 276 [
213 277 'id' => 'solid_5',
214 - 'value' => '#706fd3'
278 + 'value' => '#B17720',
279 + 'dark_value' => '#614113'
215 280 ],
216 281 [
217 282 'id' => 'solid_6',
218 - 'value' => '#4b7bec'
283 + 'value' => '#8C8920',
284 + 'dark_value' => '#44420F'
219 285 ],
220 286 [
221 287 'id' => 'solid_7',
222 - 'value' => '#4640FB'
288 + 'value' => '#429B3A',
289 + 'dark_value' => '#1B4C17'
223 290 ],
224 291 [
225 292 'id' => 'solid_8',
226 - 'value' => '#474787'
293 + 'value' => '#259A77',
294 + 'dark_value' => '#114B39'
227 295 ],
228 296 [
229 297 'id' => 'solid_9',
230 - 'value' => '#3F1770'
298 + 'value' => '#259697',
299 + 'dark_value' => '#114949'
231 300 ],
232 301 [
233 302 'id' => 'solid_10',
234 - 'value' => '#182C61'
303 + 'value' => '#2491B6',
304 + 'dark_value' => '#114659'
235 305 ],
236 306 [
237 307 'id' => 'solid_11',
238 - 'value' => '#1B1464'
308 + 'value' => '#2682F1',
309 + 'dark_value' => '#0F3F79'
239 310 ],
240 311 [
241 312 'id' => 'solid_12',
242 - 'value' => '#2f3640'
313 + 'value' => '#7F6DEE',
314 + 'dark_value' => '#3D3379'
243 315 ],
244 316 [
245 317 'id' => 'solid_13',
246 - 'value' => '#043D4A'
318 + 'value' => '#A85ED1',
319 + 'dark_value' => '#532B6A'
247 320 ],
248 321 [
249 322 'id' => 'solid_14',
250 - 'value' => '#009432'
323 + 'value' => '#C156AB',
324 + 'dark_value' => '#612655'
251 325 ],
252 326 [
253 327 'id' => 'solid_15',
254 - 'value' => '#10ac84'
328 + 'value' => '#FB98EE',
329 + 'dark_value' => '#673361'
255 330 ],
256 331 [
257 332 'id' => 'solid_16',
258 - 'value' => '#ffc048'
333 + 'value' => '#522BC1',
334 + 'dark_value' => '#352678'
259 335 ],
260 336 [
261 337 'id' => 'solid_17',
262 - 'value' => '#ffb142'
338 + 'value' => '#3C40F3',
339 + 'dark_value' => '#222A8C'
263 340 ],
264 341 [
265 342 'id' => 'solid_18',
266 - 'value' => '#F48D45'
343 + 'value' => '#FCB84E',
344 + 'dark_value' => '#6D4C14'
267 345 ],
268 346 [
269 347 'id' => 'solid_19',
270 - 'value' => '#EF6A64'
348 + 'value' => '#FCA848',
349 + 'dark_value' => '#714714'
271 350 ],
272 351 [
273 352 'id' => 'solid_20',
274 - 'value' => '#ff5252'
353 + 'value' => '#EF8346',
354 + 'dark_value' => '#763B19'
275 355 ],
276 356 [
277 357 'id' => 'solid_21',
278 - 'value' => '#c23616'
358 + 'value' => '#B63220',
359 + 'dark_value' => '#681D22'
279 360 ],
280 361 [
281 362 'id' => 'solid_22',
282 - 'value' => 'hsla(238, 100%, 71%, 1)'
283 - ],
284 - [
285 - 'id' => 'solid_23',
286 - 'value' => 'hsla(171, 87%, 67%, 1)'
363 + 'value' => '#63F1D9',
364 + 'dark_value' => '#15584E'
287 365 ]
288 366 ];
289 367
290 368 const BOARD_BACKGROUND_DEFAULT_GRADIENT_COLORS = [
@@ -289,29 +367,35 @@
289 367
290 368 const BOARD_BACKGROUND_DEFAULT_GRADIENT_COLORS = [
291 369 [
292 370 'id' => 'gradient_1',
293 - 'value' => 'linear-gradient(111.53deg, #4A9B7F 2%, #0A3431 100%)',
371 + 'value' => 'linear-gradient(145deg, #479176 0%, #0F2C2B 100%)',
372 + 'dark_value' => 'linear-gradient(145deg, #156A4F 0%, #0D302F 100%)',
294 373 ],
295 374 [
296 375 'id' => 'gradient_2',
297 - 'value' => 'linear-gradient(135deg, #B57BEE -2.09%, #392D69 100%)',
376 + 'value' => 'linear-gradient(145deg, #A470E1 0%, #2E2758 100%)',
377 + 'dark_value' => 'linear-gradient(145deg, #7637B7 0%, #2A2650 100%)',
298 378 ],
299 379 [
300 380 'id' => 'gradient_3',
301 - 'value' => 'linear-gradient(111.53deg, #FD792F 0%, #F83D5C 98%)',
381 + 'value' => 'linear-gradient(145deg, #F86E35 0%, #F13855 98%)',
382 + 'dark_value' => 'linear-gradient(145deg, #9F3A13 0%, #580A18 98%)',
302 383 ],
303 384 [
304 385 'id' => 'gradient_4',
305 - 'value' => 'linear-gradient(140.25deg, #0968E5 0.02%, #020344 100%)',
386 + 'value' => 'linear-gradient(145deg, #145CD7 0%, #050634 100%)',
387 + 'dark_value' => 'linear-gradient(145deg, #1858B4 0%, #242155 100%)',
306 388 ],
307 389 [
308 390 'id' => 'gradient_5',
309 - 'value' => 'linear-gradient(90deg, hsla(238, 100%, 71%, 1) 0%, hsla(295, 100%, 84%, 1) 100%)',
391 + 'value' => 'linear-gradient(145deg, #5E69F9 0%, #F3A6FB 100%)',
392 + 'dark_value' => 'linear-gradient(145deg, #423EA7 0%, #4B1D50 100%)',
310 393 ],
311 394 [
312 395 'id' => 'gradient_6',
313 - 'value' => 'linear-gradient(90deg, hsla(171, 87%, 67%, 1) 0%, hsla(236, 100%, 72%, 1) 100%)',
396 + 'value' => 'linear-gradient(145deg, #62EED9 0%, #646FF9 100%)',
397 + 'dark_value' => 'linear-gradient(145deg, #187767 0%, #2A2660 100%)',
314 398 ]
315 399 ];
316 400
317 401 const ACTIVITY_ACTION_CREATED = 'created';
@@ -323,8 +407,13 @@
323 407 const TASK_DESCRIPTION = 'task_description';
324 408
325 409 const COMMENT_IMAGE = 'comment_image';
326 410
411 + const ATTACHMENT_UPLOAD_BOARD_ID = 'upload_board_id';
412 + const ATTACHMENT_UPLOAD_USER_ID = 'upload_user_id';
413 + const ATTACHMENT_LEGACY_SIGNATURE_QUERY_KEY = 'secure_sign';
414 + const ATTACHMENT_LEGACY_EXPIRES_QUERY_KEY = 'secure_expires';
415 +
327 416 const REPEAT_TASK_META = 'repeat_task';
328 417
329 418 const TASK_CUSTOM_FIELD = 'task_custom_field';
330 419
@@ -340,5 +429,7 @@
340 429 const SUBTASK_GROUP_NAME = 'group_name';
341 430 const SUBTASK_GROUP_CHILD = 'subtask_group_id';
342 431
343 432 const USER_PINNED_BOARDS = 'pinned_boards';
433 +
434 + const META_KEY_ARCHIVED_BY_STAGE = 'archived_by_stage';
344 435 }