PluginProbe
FluentBoards – Project Management, Task Management, Goal Tracking, Kanban Board, and, Team Collaboration / 2.2.0
FluentBoards – Project Management, Task Management, Goal Tracking, Kanban Board, and, Team Collaboration v2.2.0
2.2.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 All 43 releases
← All changes | app/Services/Constant.php +84 -1 2.0.0 → 2.2.0 View file →
@@ -4,8 +4,23 @@
4 4
5 5
6 6 class Constant{
7 7
8 + const USER_PROFILE_PHOTO = 'fbs_profile_photo';
9 + const USER_PROFILE_PHOTO_UPLOAD = '_fbs_profile_photo_upload';
10 + const PROFILE_PHOTO_MAX_DIMENSION = 4096;
11 + const PROFILE_PHOTO_MAX_PIXELS = 12000000;
12 + const PROFILE_AVATAR_SIZE = 256;
13 +
14 + const PROFILE_DISPLAY_NAME_MAX_LENGTH = 250;
15 + const PROFILE_PHOTO_META_KEY = 'fbs_profile_photo';
16 + const PROFILE_PHOTO_MAX_BYTES = 2 * 1024 * 1024;
17 +
18 + const UPLOAD_PROTECTION_CHECK_PREFIX = '_fbs_upload_protection_';
19 + const FLUENT_BOARDS_IMPORT = 'FluentBoards';
20 + const JSON_IMPORT = 'json_import';
21 + const TASK_ESTIMATED_MINUTES = '_estimated_minutes';
22 +
8 23 const BOARD_EMAIL_COMMENT = 'email_after_comment';
9 24 const BOARD_EMAIL_TASK_ASSIGN = 'email_after_task_assign';
10 25 const BOARD_EMAIL_STAGE_CHANGE = 'email_after_task_stage_change';
11 26
@@ -31,9 +46,8 @@
31 46
32 47 const TASK_WATCH_NOTIFICATION_TYPES = [
33 48 'comment_add' => true,
34 49 'comment_update' => true,
35 - 'description_update' => true,
36 50 'title_change' => true,
37 51 'move_to_another_board' => true,
38 52 'Label' => true,
39 53 'due_at' => true,
@@ -190,9 +204,68 @@
190 204 "pink_light" => "#1B2533",
191 205 "black_light" => "#1B2533"
192 206 ];
193 207
208 + const LABEL_COLOR_PRESET_SETTING = 'color_preset';
194 209
210 + /**
211 + * Theme-aware label colors in the same order shown by the label picker.
212 + *
213 + * The persisted preset ID is stable; the UI selects the light or dark
214 + * pair at render time. The light pair is also stored as a compatibility
215 + * fallback for integrations and older clients.
216 + */
217 + const LABEL_COLOR_PRESETS = [
218 + ['id' => 'green-soft', 'light_bg_color' => '#C1EED9', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#234030', 'dark_text_color' => '#FFFFFF'],
219 + ['id' => 'yellow-soft', 'light_bg_color' => '#F1E593', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#463817', 'dark_text_color' => '#FFFFFF'],
220 + ['id' => 'orange-soft', 'light_bg_color' => '#F7E0A8', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#562F15', 'dark_text_color' => '#FFFFFF'],
221 + ['id' => 'red-soft', 'light_bg_color' => '#F6D2CE', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#4B211D', 'dark_text_color' => '#FFFFFF'],
222 + ['id' => 'purple-soft', 'light_bg_color' => '#E6D3F7', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#3A234F', 'dark_text_color' => '#FFFFFF'],
223 + ['id' => 'green-bold', 'light_bg_color' => '#70C392', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#366048', 'dark_text_color' => '#FFFFFF'],
224 + ['id' => 'yellow-bold', 'light_bg_color' => '#E4CA59', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#6F5523', 'dark_text_color' => '#FFFFFF'],
225 + ['id' => 'orange-bold', 'light_bg_color' => '#EBA146', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#874922', 'dark_text_color' => '#FFFFFF'],
226 + ['id' => 'red-bold', 'light_bg_color' => '#E17066', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#95362D', 'dark_text_color' => '#FFFFFF'],
227 + ['id' => 'purple-bold', 'light_bg_color' => '#B579E7', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#6B3E92', 'dark_text_color' => '#FFFFFF'],
228 + ['id' => 'green-strong', 'light_bg_color' => '#3F7654', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#70C392', 'dark_text_color' => '#1B2533'],
229 + ['id' => 'yellow-strong', 'light_bg_color' => '#826429', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#CFAA47', 'dark_text_color' => '#1B2533'],
230 + ['id' => 'orange-strong', 'light_bg_color' => '#A6572A', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#EBA146', 'dark_text_color' => '#1B2533'],
231 + ['id' => 'red-strong', 'light_bg_color' => '#AF4035', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#E17066', 'dark_text_color' => '#1B2533'],
232 + ['id' => 'purple-strong', 'light_bg_color' => '#8049AE', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#B579E7', 'dark_text_color' => '#1B2533'],
233 + ['id' => 'blue-soft', 'light_bg_color' => '#CCDDF9', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#1A2D53', 'dark_text_color' => '#FFFFFF'],
234 + ['id' => 'sky-soft', 'light_bg_color' => '#C9E8F7', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#223B49', 'dark_text_color' => '#FFFFFF'],
235 + ['id' => 'lime-soft', 'light_bg_color' => '#D5ECAA', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#333E22', 'dark_text_color' => '#FFFFFF'],
236 + ['id' => 'pink-soft', 'light_bg_color' => '#F4CDE6', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#402436', 'dark_text_color' => '#FFFFFF'],
237 + ['id' => 'gray-soft', 'light_bg_color' => '#D8D9DC', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#424446', 'dark_text_color' => '#FFFFFF'],
238 + ['id' => 'blue-bold', 'light_bg_color' => '#6A93E3', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#294FA9', 'dark_text_color' => '#FFFFFF'],
239 + ['id' => 'sky-bold', 'light_bg_color' => '#7BB9D6', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#345E73', 'dark_text_color' => '#FFFFFF'],
240 + ['id' => 'lime-bold', 'light_bg_color' => '#97BD5C', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#4A5F2B', 'dark_text_color' => '#FFFFFF'],
241 + ['id' => 'pink-bold', 'light_bg_color' => '#D172AE', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#7D3D65', 'dark_text_color' => '#FFFFFF'],
242 + ['id' => 'gray-bold', 'light_bg_color' => '#81848B', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#595B60', 'dark_text_color' => '#FFFFFF'],
243 + ['id' => 'blue-strong', 'light_bg_color' => '#305FCA', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#6A93E3', 'dark_text_color' => '#1B2533'],
244 + ['id' => 'sky-strong', 'light_bg_color' => '#3D708B', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#7BB9D6', 'dark_text_color' => '#1B2533'],
245 + ['id' => 'lime-strong', 'light_bg_color' => '#5A7133', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#97BD5C', 'dark_text_color' => '#1B2533'],
246 + ['id' => 'pink-strong', 'light_bg_color' => '#964878', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#D172AE', 'dark_text_color' => '#1B2533'],
247 + ['id' => 'gray-strong', 'light_bg_color' => '#60636A', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#8B8E93', 'dark_text_color' => '#1B2533'],
248 + ];
249 +
250 + /**
251 + * Find a predefined label color by its persisted ID.
252 + *
253 + * @param string $presetId
254 + * @return array|null
255 + */
256 + public static function getLabelColorPreset($presetId)
257 + {
258 + foreach (self::LABEL_COLOR_PRESETS as $preset) {
259 + if ($preset['id'] === $presetId) {
260 + return $preset;
261 + }
262 + }
263 +
264 + return null;
265 + }
266 +
267 +
195 268 const FBS_ONBOARDING = 'fbs_onboarding';
196 269 const FBS_RECENTLY_VIEWED_CHECK = 'fbs_recently_viewed_checked';
197 270 const BOARD_BACKGROUND_DEFAULT_SOLID_COLORS = [
198 271 [
@@ -341,8 +414,12 @@
341 414 ];
342 415
343 416 const ACTIVITY_ACTION_CREATED = 'created';
344 417 const ACTIVITY_ACTION_UPDATED = 'updated';
418 + const ACTIVITY_ACTION_ADDED = 'added';
419 + const ACTIVITY_ACTION_CHANGED = 'changed';
420 + const ACTIVITY_ACTION_REMOVED = 'removed';
421 + const ACTIVITY_CUSTOM_FIELD = 'custom field';
345 422 const ACTIVITY_ACTION_DELETED = 'deleted';
346 423
347 424 const TASK_ATTACHMENT = 'TASK';
348 425
@@ -349,10 +426,16 @@
349 426 const TASK_DESCRIPTION = 'task_description';
350 427
351 428 const COMMENT_IMAGE = 'comment_image';
352 429
430 + const ATTACHMENT_UPLOAD_BOARD_ID = 'upload_board_id';
431 + const ATTACHMENT_UPLOAD_USER_ID = 'upload_user_id';
432 + const ATTACHMENT_LEGACY_SIGNATURE_QUERY_KEY = 'secure_sign';
433 + const ATTACHMENT_LEGACY_EXPIRES_QUERY_KEY = 'secure_expires';
434 +
353 435 const REPEAT_TASK_META = 'repeat_task';
354 436
437 + const BOARD_TERM_CUSTOM_FIELD = 'custom-field';
355 438 const TASK_CUSTOM_FIELD = 'task_custom_field';
356 439
357 440 const BOARD_CSV_EXPORT = 'csv_export';
358 441 const BOARD_JSON_EXPORT = 'json_export';