diff --git a/ProcessMaker/Http/Controllers/Api/DevLinkController.php b/ProcessMaker/Http/Controllers/Api/DevLinkController.php index 634ddac124..8cc056dc4f 100644 --- a/ProcessMaker/Http/Controllers/Api/DevLinkController.php +++ b/ProcessMaker/Http/Controllers/Api/DevLinkController.php @@ -4,12 +4,13 @@ use Illuminate\Http\Request; use Illuminate\Validation\Rule; +use ProcessMaker\Exception\ValidationException; use ProcessMaker\Http\Controllers\Controller; use ProcessMaker\Http\Resources\ApiCollection; use ProcessMaker\Jobs\DevLinkInstall; -use ProcessMaker\Exception\ValidationException; use ProcessMaker\Models\Bundle; use ProcessMaker\Models\BundleAsset; +use ProcessMaker\Models\BundleSetting; use ProcessMaker\Models\DevLink; use ProcessMaker\Models\Setting; @@ -119,7 +120,7 @@ public function localBundles(Request $request) public function showBundle(Bundle $bundle) { - return $bundle->load('assets'); + return $bundle->load('assets')->load('settings'); } public function remoteBundles(Request $request, DevLink $devLink) @@ -131,6 +132,7 @@ public function createBundle(Request $request) { $bundle = new Bundle(); $bundle->name = $request->input('name'); + $bundle->description = $request->input('description'); $bundle->published = (bool) $request->input('published', false); $bundle->version = 1; $bundle->saveOrFail(); @@ -143,6 +145,7 @@ public function updateBundle(Request $request, Bundle $bundle) $bundle->validateEditable(); $bundle->name = $request->input('name'); + $bundle->description = $request->input('description'); $bundle->published = (bool) $request->input('published', false); $bundle->saveOrFail(); @@ -212,7 +215,12 @@ public function addAsset(Request $request, Bundle $bundle) $asset = $request->input('type')::findOrFail($request->input('id')); $bundle->addAsset($asset); } - + + public function addSettings(Request $request, Bundle $bundle) + { + $bundle->addSettings($request->input('setting'), $request->input('config')); + } + public function addAssetToBundles(Request $request) { $bundles = $request->input('bundles'); @@ -290,4 +298,11 @@ public function deleteBundleAsset(BundleAsset $bundleAsset) return response()->json(['message' => 'Bundle asset association deleted.'], 200); } + + public function deleteBundleSetting(BundleSetting $bundleSetting) + { + $bundleSetting->delete(); + + return response()->json(['message' => 'Bundle setting deleted.'], 200); + } } diff --git a/ProcessMaker/Models/Bundle.php b/ProcessMaker/Models/Bundle.php index a53fa3ceef..76b6f666e4 100644 --- a/ProcessMaker/Models/Bundle.php +++ b/ProcessMaker/Models/Bundle.php @@ -45,6 +45,11 @@ public function assets() return $this->hasMany(BundleAsset::class); } + public function settings() + { + return $this->hasMany(BundleSetting::class); + } + public function devLink() { return $this->belongsTo(DevLink::class, 'dev_link_id'); @@ -125,7 +130,21 @@ public function addAsset(ProcessMakerModel $asset) 'asset_id' => $asset->id, ]); } - + + public function addSettings($setting, $config) + { + $exists = $this->settings()->where('setting', $setting)->exists(); + if ($exists) { + throw ValidationException::withMessages(['*' => 'Setting already exists in bundle']); + } + + BundleSetting::create([ + 'bundle_id' => $this->id, + 'setting' => $setting, + 'config' => $config, + ]); + } + public function addAssetToBundles(ProcessMakerModel $asset) { $message = null; @@ -134,6 +153,7 @@ public function addAssetToBundles(ProcessMakerModel $asset) } catch (ValidationException $ve) { $message = $ve->getMessage(); } + return $message; } diff --git a/ProcessMaker/Models/BundleAsset.php b/ProcessMaker/Models/BundleAsset.php index 3cb95de6b5..7789d1c544 100644 --- a/ProcessMaker/Models/BundleAsset.php +++ b/ProcessMaker/Models/BundleAsset.php @@ -11,7 +11,7 @@ class BundleAsset extends ProcessMakerModel protected $guarded = ['id']; - protected $appends = ['name', 'url', 'type']; + protected $appends = ['name', 'url', 'type', 'owner_name', 'categories']; protected static function boot() { @@ -86,4 +86,22 @@ public function getTypeAttribute() return null; } } + + public function getOwnerNameAttribute() + { + if ($this->asset && method_exists($this->asset, 'user')) { + return $this->asset->user->firstname . ' ' . $this->asset->user->lastname; + } + + return null; + } + + public function getCategoriesAttribute() + { + if ($this->asset && method_exists($this->asset, 'categories')) { + return $this->asset->categories->pluck('name')->toArray(); + } + + return []; + } } diff --git a/ProcessMaker/Models/BundleSetting.php b/ProcessMaker/Models/BundleSetting.php new file mode 100644 index 0000000000..c6e8272863 --- /dev/null +++ b/ProcessMaker/Models/BundleSetting.php @@ -0,0 +1,26 @@ + 'array', + ]; + + public function bundle() + { + return $this->belongsTo(Bundle::class); + } +} diff --git a/database/migrations/2024_11_26_145144_add_description_to_bundles_table.php b/database/migrations/2024_11_26_145144_add_description_to_bundles_table.php new file mode 100644 index 0000000000..26f93cef62 --- /dev/null +++ b/database/migrations/2024_11_26_145144_add_description_to_bundles_table.php @@ -0,0 +1,27 @@ +text('description')->after('name')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('bundles', function (Blueprint $table) { + $table->dropColumn('description'); + }); + } +}; diff --git a/database/migrations/2024_12_03_140610_create_bundle_settings_table.php b/database/migrations/2024_12_03_140610_create_bundle_settings_table.php new file mode 100644 index 0000000000..7da3fae505 --- /dev/null +++ b/database/migrations/2024_12_03_140610_create_bundle_settings_table.php @@ -0,0 +1,31 @@ +id(); + $table->unsignedBigInteger('bundle_id'); + $table->string('setting'); + $table->json('config')->nullable(); + $table->timestamps(); + + $table->index(['bundle_id', 'setting']); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('bundle_settings'); + } +}; diff --git a/devhub/pm-font/svg/edit-outline.svg b/devhub/pm-font/svg/edit-outline.svg new file mode 100644 index 0000000000..5f6721106e --- /dev/null +++ b/devhub/pm-font/svg/edit-outline.svg @@ -0,0 +1,3 @@ + diff --git a/devhub/pm-font/svg/link-icon.svg b/devhub/pm-font/svg/link-icon.svg new file mode 100644 index 0000000000..1608f95ec0 --- /dev/null +++ b/devhub/pm-font/svg/link-icon.svg @@ -0,0 +1,3 @@ + diff --git a/devhub/pm-font/svg/plus-thin.svg b/devhub/pm-font/svg/plus-thin.svg new file mode 100644 index 0000000000..ef88e8a85a --- /dev/null +++ b/devhub/pm-font/svg/plus-thin.svg @@ -0,0 +1,3 @@ + diff --git a/devhub/pm-font/svg/remove-outlined.svg b/devhub/pm-font/svg/remove-outlined.svg new file mode 100644 index 0000000000..dcb2c5838d --- /dev/null +++ b/devhub/pm-font/svg/remove-outlined.svg @@ -0,0 +1,3 @@ + diff --git a/resources/fonts/pm-font/index.html b/resources/fonts/pm-font/index.html index 281a2aa4c4..b5f9bc7fa0 100644 --- a/resources/fonts/pm-font/index.html +++ b/resources/fonts/pm-font/index.html @@ -103,7 +103,7 @@
diff --git a/resources/fonts/pm-font/processmaker-font.css b/resources/fonts/pm-font/processmaker-font.css
index d7fdea0a5e..a46ccdf3d1 100644
--- a/resources/fonts/pm-font/processmaker-font.css
+++ b/resources/fonts/pm-font/processmaker-font.css
@@ -1,11 +1,11 @@
@font-face {
font-family: "processmaker-font";
- src: url('processmaker-font.eot?t=1730322668195'); /* IE9*/
- src: url('processmaker-font.eot?t=1730322668195#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url("processmaker-font.woff2?t=1730322668195") format("woff2"),
- url("processmaker-font.woff?t=1730322668195") format("woff"),
- url('processmaker-font.ttf?t=1730322668195') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
- url('processmaker-font.svg?t=1730322668195#processmaker-font') format('svg'); /* iOS 4.1- */
+ src: url('processmaker-font.eot?t=1733168374693'); /* IE9*/
+ src: url('processmaker-font.eot?t=1733168374693#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url("processmaker-font.woff2?t=1733168374693") format("woff2"),
+ url("processmaker-font.woff?t=1733168374693") format("woff"),
+ url('processmaker-font.ttf?t=1733168374693') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
+ url('processmaker-font.svg?t=1733168374693#processmaker-font') format('svg'); /* iOS 4.1- */
}
[class^="fp-"], [class*=" fp-"] {
@@ -37,24 +37,28 @@
.fp-cloud-download-outline:before { content: "\ea13"; }
.fp-copy:before { content: "\ea14"; }
.fp-desktop:before { content: "\ea15"; }
-.fp-eye:before { content: "\ea16"; }
-.fp-fields-icon:before { content: "\ea17"; }
-.fp-flowgenie-outline:before { content: "\ea18"; }
-.fp-folder-outline:before { content: "\ea19"; }
-.fp-fullscreen:before { content: "\ea1a"; }
-.fp-github:before { content: "\ea1b"; }
-.fp-layout-icon:before { content: "\ea1c"; }
-.fp-map:before { content: "\ea1d"; }
-.fp-mobile:before { content: "\ea1e"; }
-.fp-pdf:before { content: "\ea1f"; }
-.fp-play-outline:before { content: "\ea20"; }
-.fp-plus:before { content: "\ea21"; }
-.fp-screen-outline:before { content: "\ea22"; }
-.fp-script-outline:before { content: "\ea23"; }
-.fp-slack-notification:before { content: "\ea24"; }
-.fp-slack:before { content: "\ea25"; }
-.fp-slideshow:before { content: "\ea26"; }
-.fp-table:before { content: "\ea27"; }
-.fp-trash:before { content: "\ea28"; }
-.fp-unlink:before { content: "\ea29"; }
+.fp-edit-outline:before { content: "\ea16"; }
+.fp-eye:before { content: "\ea17"; }
+.fp-fields-icon:before { content: "\ea18"; }
+.fp-flowgenie-outline:before { content: "\ea19"; }
+.fp-folder-outline:before { content: "\ea1a"; }
+.fp-fullscreen:before { content: "\ea1b"; }
+.fp-github:before { content: "\ea1c"; }
+.fp-layout-icon:before { content: "\ea1d"; }
+.fp-link-icon:before { content: "\ea1e"; }
+.fp-map:before { content: "\ea1f"; }
+.fp-mobile:before { content: "\ea20"; }
+.fp-pdf:before { content: "\ea21"; }
+.fp-play-outline:before { content: "\ea22"; }
+.fp-plus-thin:before { content: "\ea23"; }
+.fp-plus:before { content: "\ea24"; }
+.fp-remove-outlined:before { content: "\ea25"; }
+.fp-screen-outline:before { content: "\ea26"; }
+.fp-script-outline:before { content: "\ea27"; }
+.fp-slack-notification:before { content: "\ea28"; }
+.fp-slack:before { content: "\ea29"; }
+.fp-slideshow:before { content: "\ea2a"; }
+.fp-table:before { content: "\ea2b"; }
+.fp-trash:before { content: "\ea2c"; }
+.fp-unlink:before { content: "\ea2d"; }
diff --git a/resources/fonts/pm-font/processmaker-font.eot b/resources/fonts/pm-font/processmaker-font.eot
index 58983ffe0e..312adfcd8c 100644
Binary files a/resources/fonts/pm-font/processmaker-font.eot and b/resources/fonts/pm-font/processmaker-font.eot differ
diff --git a/resources/fonts/pm-font/processmaker-font.less b/resources/fonts/pm-font/processmaker-font.less
index 004b55fd66..aebacf2c8d 100644
--- a/resources/fonts/pm-font/processmaker-font.less
+++ b/resources/fonts/pm-font/processmaker-font.less
@@ -1,10 +1,10 @@
@font-face {font-family: "processmaker-font";
- src: url('processmaker-font.eot?t=1730322668195'); /* IE9*/
- src: url('processmaker-font.eot?t=1730322668195#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url("processmaker-font.woff2?t=1730322668195") format("woff2"),
- url("processmaker-font.woff?t=1730322668195") format("woff"),
- url('processmaker-font.ttf?t=1730322668195') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
- url('processmaker-font.svg?t=1730322668195#processmaker-font') format('svg'); /* iOS 4.1- */
+ src: url('processmaker-font.eot?t=1733168374693'); /* IE9*/
+ src: url('processmaker-font.eot?t=1733168374693#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url("processmaker-font.woff2?t=1733168374693") format("woff2"),
+ url("processmaker-font.woff?t=1733168374693") format("woff"),
+ url('processmaker-font.ttf?t=1733168374693') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
+ url('processmaker-font.svg?t=1733168374693#processmaker-font') format('svg'); /* iOS 4.1- */
}
[class^="fp-"], [class*=" fp-"] {
@@ -35,23 +35,27 @@
.fp-cloud-download-outline:before { content: "\ea13"; }
.fp-copy:before { content: "\ea14"; }
.fp-desktop:before { content: "\ea15"; }
-.fp-eye:before { content: "\ea16"; }
-.fp-fields-icon:before { content: "\ea17"; }
-.fp-flowgenie-outline:before { content: "\ea18"; }
-.fp-folder-outline:before { content: "\ea19"; }
-.fp-fullscreen:before { content: "\ea1a"; }
-.fp-github:before { content: "\ea1b"; }
-.fp-layout-icon:before { content: "\ea1c"; }
-.fp-map:before { content: "\ea1d"; }
-.fp-mobile:before { content: "\ea1e"; }
-.fp-pdf:before { content: "\ea1f"; }
-.fp-play-outline:before { content: "\ea20"; }
-.fp-plus:before { content: "\ea21"; }
-.fp-screen-outline:before { content: "\ea22"; }
-.fp-script-outline:before { content: "\ea23"; }
-.fp-slack-notification:before { content: "\ea24"; }
-.fp-slack:before { content: "\ea25"; }
-.fp-slideshow:before { content: "\ea26"; }
-.fp-table:before { content: "\ea27"; }
-.fp-trash:before { content: "\ea28"; }
-.fp-unlink:before { content: "\ea29"; }
+.fp-edit-outline:before { content: "\ea16"; }
+.fp-eye:before { content: "\ea17"; }
+.fp-fields-icon:before { content: "\ea18"; }
+.fp-flowgenie-outline:before { content: "\ea19"; }
+.fp-folder-outline:before { content: "\ea1a"; }
+.fp-fullscreen:before { content: "\ea1b"; }
+.fp-github:before { content: "\ea1c"; }
+.fp-layout-icon:before { content: "\ea1d"; }
+.fp-link-icon:before { content: "\ea1e"; }
+.fp-map:before { content: "\ea1f"; }
+.fp-mobile:before { content: "\ea20"; }
+.fp-pdf:before { content: "\ea21"; }
+.fp-play-outline:before { content: "\ea22"; }
+.fp-plus-thin:before { content: "\ea23"; }
+.fp-plus:before { content: "\ea24"; }
+.fp-remove-outlined:before { content: "\ea25"; }
+.fp-screen-outline:before { content: "\ea26"; }
+.fp-script-outline:before { content: "\ea27"; }
+.fp-slack-notification:before { content: "\ea28"; }
+.fp-slack:before { content: "\ea29"; }
+.fp-slideshow:before { content: "\ea2a"; }
+.fp-table:before { content: "\ea2b"; }
+.fp-trash:before { content: "\ea2c"; }
+.fp-unlink:before { content: "\ea2d"; }
diff --git a/resources/fonts/pm-font/processmaker-font.module.less b/resources/fonts/pm-font/processmaker-font.module.less
index 026d3cf05f..5b6fb9fdbc 100644
--- a/resources/fonts/pm-font/processmaker-font.module.less
+++ b/resources/fonts/pm-font/processmaker-font.module.less
@@ -1,10 +1,10 @@
@font-face {font-family: "processmaker-font";
- src: url('processmaker-font.eot?t=1730322668195'); /* IE9*/
- src: url('processmaker-font.eot?t=1730322668195#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url("processmaker-font.woff2?t=1730322668195") format("woff2"),
- url("processmaker-font.woff?t=1730322668195") format("woff"),
- url('processmaker-font.ttf?t=1730322668195') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
- url('processmaker-font.svg?t=1730322668195#processmaker-font') format('svg'); /* iOS 4.1- */
+ src: url('processmaker-font.eot?t=1733168374693'); /* IE9*/
+ src: url('processmaker-font.eot?t=1733168374693#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url("processmaker-font.woff2?t=1733168374693") format("woff2"),
+ url("processmaker-font.woff?t=1733168374693") format("woff"),
+ url('processmaker-font.ttf?t=1733168374693') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
+ url('processmaker-font.svg?t=1733168374693#processmaker-font') format('svg'); /* iOS 4.1- */
}
[class^="fp-"], [class*=" fp-"] {
@@ -36,25 +36,29 @@
.fp-cloud-download-outline:before { content: "\ea13"; }
.fp-copy:before { content: "\ea14"; }
.fp-desktop:before { content: "\ea15"; }
-.fp-eye:before { content: "\ea16"; }
-.fp-fields-icon:before { content: "\ea17"; }
-.fp-flowgenie-outline:before { content: "\ea18"; }
-.fp-folder-outline:before { content: "\ea19"; }
-.fp-fullscreen:before { content: "\ea1a"; }
-.fp-github:before { content: "\ea1b"; }
-.fp-layout-icon:before { content: "\ea1c"; }
-.fp-map:before { content: "\ea1d"; }
-.fp-mobile:before { content: "\ea1e"; }
-.fp-pdf:before { content: "\ea1f"; }
-.fp-play-outline:before { content: "\ea20"; }
-.fp-plus:before { content: "\ea21"; }
-.fp-screen-outline:before { content: "\ea22"; }
-.fp-script-outline:before { content: "\ea23"; }
-.fp-slack-notification:before { content: "\ea24"; }
-.fp-slack:before { content: "\ea25"; }
-.fp-slideshow:before { content: "\ea26"; }
-.fp-table:before { content: "\ea27"; }
-.fp-trash:before { content: "\ea28"; }
-.fp-unlink:before { content: "\ea29"; }
+.fp-edit-outline:before { content: "\ea16"; }
+.fp-eye:before { content: "\ea17"; }
+.fp-fields-icon:before { content: "\ea18"; }
+.fp-flowgenie-outline:before { content: "\ea19"; }
+.fp-folder-outline:before { content: "\ea1a"; }
+.fp-fullscreen:before { content: "\ea1b"; }
+.fp-github:before { content: "\ea1c"; }
+.fp-layout-icon:before { content: "\ea1d"; }
+.fp-link-icon:before { content: "\ea1e"; }
+.fp-map:before { content: "\ea1f"; }
+.fp-mobile:before { content: "\ea20"; }
+.fp-pdf:before { content: "\ea21"; }
+.fp-play-outline:before { content: "\ea22"; }
+.fp-plus-thin:before { content: "\ea23"; }
+.fp-plus:before { content: "\ea24"; }
+.fp-remove-outlined:before { content: "\ea25"; }
+.fp-screen-outline:before { content: "\ea26"; }
+.fp-script-outline:before { content: "\ea27"; }
+.fp-slack-notification:before { content: "\ea28"; }
+.fp-slack:before { content: "\ea29"; }
+.fp-slideshow:before { content: "\ea2a"; }
+.fp-table:before { content: "\ea2b"; }
+.fp-trash:before { content: "\ea2c"; }
+.fp-unlink:before { content: "\ea2d"; }
}
\ No newline at end of file
diff --git a/resources/fonts/pm-font/processmaker-font.scss b/resources/fonts/pm-font/processmaker-font.scss
index 1b4de47a37..ad7f2ab9b9 100644
--- a/resources/fonts/pm-font/processmaker-font.scss
+++ b/resources/fonts/pm-font/processmaker-font.scss
@@ -1,10 +1,10 @@
@font-face {font-family: "processmaker-font";
- src: url('processmaker-font.eot?t=1730322668195'); /* IE9*/
- src: url('processmaker-font.eot?t=1730322668195#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url("processmaker-font.woff2?t=1730322668195") format("woff2"),
- url("processmaker-font.woff?t=1730322668195") format("woff"),
- url('processmaker-font.ttf?t=1730322668195') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
- url('processmaker-font.svg?t=1730322668195#processmaker-font') format('svg'); /* iOS 4.1- */
+ src: url('processmaker-font.eot?t=1733168374693'); /* IE9*/
+ src: url('processmaker-font.eot?t=1733168374693#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url("processmaker-font.woff2?t=1733168374693") format("woff2"),
+ url("processmaker-font.woff?t=1733168374693") format("woff"),
+ url('processmaker-font.ttf?t=1733168374693') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
+ url('processmaker-font.svg?t=1733168374693#processmaker-font') format('svg'); /* iOS 4.1- */
}
[class^="fp-"], [class*=" fp-"] {
@@ -35,26 +35,30 @@
.fp-cloud-download-outline:before { content: "\ea13"; }
.fp-copy:before { content: "\ea14"; }
.fp-desktop:before { content: "\ea15"; }
-.fp-eye:before { content: "\ea16"; }
-.fp-fields-icon:before { content: "\ea17"; }
-.fp-flowgenie-outline:before { content: "\ea18"; }
-.fp-folder-outline:before { content: "\ea19"; }
-.fp-fullscreen:before { content: "\ea1a"; }
-.fp-github:before { content: "\ea1b"; }
-.fp-layout-icon:before { content: "\ea1c"; }
-.fp-map:before { content: "\ea1d"; }
-.fp-mobile:before { content: "\ea1e"; }
-.fp-pdf:before { content: "\ea1f"; }
-.fp-play-outline:before { content: "\ea20"; }
-.fp-plus:before { content: "\ea21"; }
-.fp-screen-outline:before { content: "\ea22"; }
-.fp-script-outline:before { content: "\ea23"; }
-.fp-slack-notification:before { content: "\ea24"; }
-.fp-slack:before { content: "\ea25"; }
-.fp-slideshow:before { content: "\ea26"; }
-.fp-table:before { content: "\ea27"; }
-.fp-trash:before { content: "\ea28"; }
-.fp-unlink:before { content: "\ea29"; }
+.fp-edit-outline:before { content: "\ea16"; }
+.fp-eye:before { content: "\ea17"; }
+.fp-fields-icon:before { content: "\ea18"; }
+.fp-flowgenie-outline:before { content: "\ea19"; }
+.fp-folder-outline:before { content: "\ea1a"; }
+.fp-fullscreen:before { content: "\ea1b"; }
+.fp-github:before { content: "\ea1c"; }
+.fp-layout-icon:before { content: "\ea1d"; }
+.fp-link-icon:before { content: "\ea1e"; }
+.fp-map:before { content: "\ea1f"; }
+.fp-mobile:before { content: "\ea20"; }
+.fp-pdf:before { content: "\ea21"; }
+.fp-play-outline:before { content: "\ea22"; }
+.fp-plus-thin:before { content: "\ea23"; }
+.fp-plus:before { content: "\ea24"; }
+.fp-remove-outlined:before { content: "\ea25"; }
+.fp-screen-outline:before { content: "\ea26"; }
+.fp-script-outline:before { content: "\ea27"; }
+.fp-slack-notification:before { content: "\ea28"; }
+.fp-slack:before { content: "\ea29"; }
+.fp-slideshow:before { content: "\ea2a"; }
+.fp-table:before { content: "\ea2b"; }
+.fp-trash:before { content: "\ea2c"; }
+.fp-unlink:before { content: "\ea2d"; }
$fp-bpmn-action-by-email: "\ea01";
$fp-bpmn-data-connector: "\ea02";
@@ -77,24 +81,28 @@ $fp-close: "\ea12";
$fp-cloud-download-outline: "\ea13";
$fp-copy: "\ea14";
$fp-desktop: "\ea15";
-$fp-eye: "\ea16";
-$fp-fields-icon: "\ea17";
-$fp-flowgenie-outline: "\ea18";
-$fp-folder-outline: "\ea19";
-$fp-fullscreen: "\ea1a";
-$fp-github: "\ea1b";
-$fp-layout-icon: "\ea1c";
-$fp-map: "\ea1d";
-$fp-mobile: "\ea1e";
-$fp-pdf: "\ea1f";
-$fp-play-outline: "\ea20";
-$fp-plus: "\ea21";
-$fp-screen-outline: "\ea22";
-$fp-script-outline: "\ea23";
-$fp-slack-notification: "\ea24";
-$fp-slack: "\ea25";
-$fp-slideshow: "\ea26";
-$fp-table: "\ea27";
-$fp-trash: "\ea28";
-$fp-unlink: "\ea29";
+$fp-edit-outline: "\ea16";
+$fp-eye: "\ea17";
+$fp-fields-icon: "\ea18";
+$fp-flowgenie-outline: "\ea19";
+$fp-folder-outline: "\ea1a";
+$fp-fullscreen: "\ea1b";
+$fp-github: "\ea1c";
+$fp-layout-icon: "\ea1d";
+$fp-link-icon: "\ea1e";
+$fp-map: "\ea1f";
+$fp-mobile: "\ea20";
+$fp-pdf: "\ea21";
+$fp-play-outline: "\ea22";
+$fp-plus-thin: "\ea23";
+$fp-plus: "\ea24";
+$fp-remove-outlined: "\ea25";
+$fp-screen-outline: "\ea26";
+$fp-script-outline: "\ea27";
+$fp-slack-notification: "\ea28";
+$fp-slack: "\ea29";
+$fp-slideshow: "\ea2a";
+$fp-table: "\ea2b";
+$fp-trash: "\ea2c";
+$fp-unlink: "\ea2d";
diff --git a/resources/fonts/pm-font/processmaker-font.styl b/resources/fonts/pm-font/processmaker-font.styl
index 004b55fd66..aebacf2c8d 100644
--- a/resources/fonts/pm-font/processmaker-font.styl
+++ b/resources/fonts/pm-font/processmaker-font.styl
@@ -1,10 +1,10 @@
@font-face {font-family: "processmaker-font";
- src: url('processmaker-font.eot?t=1730322668195'); /* IE9*/
- src: url('processmaker-font.eot?t=1730322668195#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url("processmaker-font.woff2?t=1730322668195") format("woff2"),
- url("processmaker-font.woff?t=1730322668195") format("woff"),
- url('processmaker-font.ttf?t=1730322668195') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
- url('processmaker-font.svg?t=1730322668195#processmaker-font') format('svg'); /* iOS 4.1- */
+ src: url('processmaker-font.eot?t=1733168374693'); /* IE9*/
+ src: url('processmaker-font.eot?t=1733168374693#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url("processmaker-font.woff2?t=1733168374693") format("woff2"),
+ url("processmaker-font.woff?t=1733168374693") format("woff"),
+ url('processmaker-font.ttf?t=1733168374693') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
+ url('processmaker-font.svg?t=1733168374693#processmaker-font') format('svg'); /* iOS 4.1- */
}
[class^="fp-"], [class*=" fp-"] {
@@ -35,23 +35,27 @@
.fp-cloud-download-outline:before { content: "\ea13"; }
.fp-copy:before { content: "\ea14"; }
.fp-desktop:before { content: "\ea15"; }
-.fp-eye:before { content: "\ea16"; }
-.fp-fields-icon:before { content: "\ea17"; }
-.fp-flowgenie-outline:before { content: "\ea18"; }
-.fp-folder-outline:before { content: "\ea19"; }
-.fp-fullscreen:before { content: "\ea1a"; }
-.fp-github:before { content: "\ea1b"; }
-.fp-layout-icon:before { content: "\ea1c"; }
-.fp-map:before { content: "\ea1d"; }
-.fp-mobile:before { content: "\ea1e"; }
-.fp-pdf:before { content: "\ea1f"; }
-.fp-play-outline:before { content: "\ea20"; }
-.fp-plus:before { content: "\ea21"; }
-.fp-screen-outline:before { content: "\ea22"; }
-.fp-script-outline:before { content: "\ea23"; }
-.fp-slack-notification:before { content: "\ea24"; }
-.fp-slack:before { content: "\ea25"; }
-.fp-slideshow:before { content: "\ea26"; }
-.fp-table:before { content: "\ea27"; }
-.fp-trash:before { content: "\ea28"; }
-.fp-unlink:before { content: "\ea29"; }
+.fp-edit-outline:before { content: "\ea16"; }
+.fp-eye:before { content: "\ea17"; }
+.fp-fields-icon:before { content: "\ea18"; }
+.fp-flowgenie-outline:before { content: "\ea19"; }
+.fp-folder-outline:before { content: "\ea1a"; }
+.fp-fullscreen:before { content: "\ea1b"; }
+.fp-github:before { content: "\ea1c"; }
+.fp-layout-icon:before { content: "\ea1d"; }
+.fp-link-icon:before { content: "\ea1e"; }
+.fp-map:before { content: "\ea1f"; }
+.fp-mobile:before { content: "\ea20"; }
+.fp-pdf:before { content: "\ea21"; }
+.fp-play-outline:before { content: "\ea22"; }
+.fp-plus-thin:before { content: "\ea23"; }
+.fp-plus:before { content: "\ea24"; }
+.fp-remove-outlined:before { content: "\ea25"; }
+.fp-screen-outline:before { content: "\ea26"; }
+.fp-script-outline:before { content: "\ea27"; }
+.fp-slack-notification:before { content: "\ea28"; }
+.fp-slack:before { content: "\ea29"; }
+.fp-slideshow:before { content: "\ea2a"; }
+.fp-table:before { content: "\ea2b"; }
+.fp-trash:before { content: "\ea2c"; }
+.fp-unlink:before { content: "\ea2d"; }
diff --git a/resources/fonts/pm-font/processmaker-font.svg b/resources/fonts/pm-font/processmaker-font.svg
index e18aaa0817..adcf85c789 100644
--- a/resources/fonts/pm-font/processmaker-font.svg
+++ b/resources/fonts/pm-font/processmaker-font.svg
@@ -70,65 +70,77 @@