Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature/FOUR-19522 file manager option on the Case Detail #7531

Open
wants to merge 4 commits into
base: release-2024-fall
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions ProcessMaker/Http/Controllers/Api/ProcessController.php
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ public function index(Request $request)
if ($request->input('simplified_data_for_selector', false)) {
$fields = $this->getRequestFields($request);
$processes = $processes->select($fields);

return new ApiCollection($processes->get());
}

Expand Down Expand Up @@ -483,8 +484,8 @@ public function update(Request $request, Process $process)
if ($request->has('manager_id')) {
$process->manager_id = $request->input('manager_id', null);
}
if($request->has('reassignment_users')) {

if ($request->has('reassignment_users')) {
$process->setProperty('reassignment_users', $request->get('reassignment_users'));
}

Expand All @@ -510,8 +511,8 @@ public function update(Request $request, Process $process)

// Save default language for anon web entry...
if ($request->has(['default_for_anon_webentry', 'language_code'])) {
$process->default_anon_web_language = $request->input('default_for_anon_webentry')
? $request->input('language_code')
$process->default_anon_web_language = $request->input('default_for_anon_webentry')
? $request->input('language_code')
: null;
}

Expand Down
21 changes: 21 additions & 0 deletions ProcessMaker/Http/Controllers/Api/ProcessRequestController.php
Original file line number Diff line number Diff line change
Expand Up @@ -880,4 +880,25 @@ public function getRequestsByCase(Request $request, User $user = null)

return new ApiCollection($response);
}

/**
* This endpoint returns the parent request by case number
*
* @param Request $request
*
* @return ApiCollection
*/
public function getParentRequestByCase(Request $request)
{
// Validate the inputs, including optional ones
$request->validate([
'case_number' => 'required|integer',
]);

$response = ProcessRequest::where('case_number', $request->input('case_number'))
->whereNull('parent_request_id')
->first();

return new ApiResource($response);
}
}
2 changes: 1 addition & 1 deletion ProcessMaker/Http/Controllers/Api/ScreenController.php
Original file line number Diff line number Diff line change
Expand Up @@ -688,7 +688,7 @@ public function translate(Request $request, Screen $screen, $language)
$screenArray = $draft->toArray();
$screenTranslation = new ScreenTranslation();
$screenArray['config'] = $screenTranslation->evaluateMustache(
$request->input('screenConfig'),
$request->input('screenConfig'),
$request->input('inputData')
);
$translatedConfig = $screenTranslation->applyTranslations($screenArray);
Expand Down
2 changes: 1 addition & 1 deletion ProcessMaker/Http/Controllers/Api/TaskController.php
Original file line number Diff line number Diff line change
Expand Up @@ -329,7 +329,7 @@ public function update(Request $request, ProcessRequestToken $task)
return abort(422);
}
}

public function updateReassign(Request $request)
{
$userToAssign = $request->input('user_id');
Expand Down
6 changes: 4 additions & 2 deletions ProcessMaker/Http/Controllers/Api/TaskDraftController.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
use ProcessMaker\Http\Resources\ApiCollection;
use ProcessMaker\Http\Resources\ApiResource;
use ProcessMaker\Models\ProcessRequestToken;
use ProcessMaker\SanitizeHelper;
use ProcessMaker\Models\TaskDraft;
use ProcessMaker\SanitizeHelper;

class TaskDraftController extends Controller
{
Expand All @@ -20,6 +20,7 @@ public function index(Request $request, ProcessRequestToken $task)

if ($draft) {
$draftData = $draft->data;

return new ApiResource($draftData);
}

Expand All @@ -33,12 +34,13 @@ public function update(Request $request, ProcessRequestToken $task)
// Do not overwrite __deleted_files
$deletedFiles = Arr::get($draft->data, '__deleted_files');
$data = json_decode($request->getContent(), true);
$data = SanitizeHelper::sanitizeData( $data, null, $task->processRequest->do_not_sanitize ?? []);
$data = SanitizeHelper::sanitizeData($data, null, $task->processRequest->do_not_sanitize ?? []);
if ($deletedFiles) {
$data['__deleted_files'] = $deletedFiles;
}
$draft->data = $data;
$draft->saveOrFail();

return new ApiResource($draft);
}

Expand Down
8 changes: 4 additions & 4 deletions ProcessMaker/Http/Controllers/Api/UserController.php
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ public function index(Request $request)
/**
* Display a listing of users and their task counts.
*
* @param \Illuminate\Http\Request $request
* @param Request $request
* @return \Illuminate\Http\Response
*
* @OA\Get(
Expand Down Expand Up @@ -197,9 +197,9 @@ public function getUsersTaskCount(Request $request)
$query->groupBy('users.id');

$response = $query->orderBy(
$request->input('order_by', 'username'),
$request->input('order_direction', 'ASC')
)
$request->input('order_by', 'username'),
$request->input('order_direction', 'ASC')
)
->paginate(50);

return new ApiCollection($response);
Expand Down
7 changes: 4 additions & 3 deletions ProcessMaker/Http/Controllers/Auth/LoginController.php
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ public function beforeLogout(Request $request)
Cookie::queue(Cookie::forget(Passport::cookie()));

// process any redirects generated by the logout event listeners
foreach($eventResult as $result) {
foreach ($eventResult as $result) {
if (is_array($result) && array_key_exists('redirectTo', $result)) {
return redirect($result['redirectTo']);
}
Expand Down Expand Up @@ -351,7 +351,7 @@ public function login(Request $request, User $user)
});

$this->setupLanguage($request, $user);

return $this->sendLoginResponse($request);
}

Expand Down Expand Up @@ -380,7 +380,8 @@ public function showLoginFailed(Request $request)
return view('errors.login-failed');
}

private function setupLanguage(Request $request, User $user) {
private function setupLanguage(Request $request, User $user)
{
$language = $request->cookies->get('language');
if ($language) {
$user->language = json_decode($language)->code;
Expand Down
1 change: 1 addition & 0 deletions ProcessMaker/Managers/ScreenCompiledManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ public function createKey(string $processId, string $processVersionId, string $l
public function getLastScreenVersionId()
{
$row = DB::select('SELECT id FROM screen_versions ORDER BY id DESC LIMIT 1;');

return $row[0]->id;
}

Expand Down
2 changes: 1 addition & 1 deletion ProcessMaker/Models/ProcessRequestToken.php
Original file line number Diff line number Diff line change
Expand Up @@ -1217,7 +1217,7 @@ public function reassign($toUserId, User $requestingUser)
// Validate if user can reassign
Gate::forUser($requestingUser)->authorize('reassign', $this);
// Reassign user
$this->is_self_service = 0; //When reassigning the user, it is not necessary to claim the task.
$this->is_self_service = 0; //When reassigning the user, it is not necessary to claim the task.
$this->reassignTo($toUserId);
$this->persistUserData($toUserId);
$reassingAction = true;
Expand Down
4 changes: 2 additions & 2 deletions ProcessMaker/ProcessTranslations/MenuTranslation.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ public function apply()
{
$language = $this->getTargetLanguage();
$translations = $this->getTranslations($language);

return $this->applyTranslations($translations);
}


private function getTranslations($language)
{
Expand Down Expand Up @@ -60,4 +60,4 @@ private function updateLinkText(&$links, $key, $translation)
}
}
}
}
}
4 changes: 4 additions & 0 deletions ProcessMaker/ProcessTranslations/ScreenTranslation.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public function applyTranslations($screen)
{
$config = $screen['config'];
$language = $this->getTargetLanguage();

return $this->searchTranslations($screen['screen_id'], $config, $language);
}

Expand All @@ -35,6 +36,7 @@ public function evaluateMustache($screenConfig, $data)
{
$mustacheEngine = new MustacheExpressionEvaluator();
$configEvaluated = $mustacheEngine->render(json_encode($screenConfig), $data);

return json_decode($configEvaluated, true);
}

Expand All @@ -51,6 +53,7 @@ public function getStringsByProcess($process, $withColumns = [])
foreach ($screens as $screen) {
$screensArr[] = $this->getStringsByScreen($screen);
}

return collect($screensArr)->forget('config');
}

Expand All @@ -67,6 +70,7 @@ public function getStringsByScreenIds(array $screenIds, $withColumns = [])
foreach ($screens as $screen) {
$screensArr[] = $this->getStringsByScreen($screen);
}

return collect($screensArr)->forget('config');
}

Expand Down
2 changes: 1 addition & 1 deletion ProcessMaker/ProcessTranslations/ScreenTranslation_old.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
use ProcessMaker\Models\Screen;
use ProcessMaker\Package\Translations\Models\Translatable;

class ScreenTranslation
class ScreenTranslation_old
{
protected $screen;

Expand Down
16 changes: 8 additions & 8 deletions ProcessMaker/ProcessTranslations/TranslationManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cache;
use ProcessMaker\Package\PackageDynamicUI\Models\Menu;
use ProcessMaker\Package\Translations\Models\Translatable;
use ProcessMaker\Package\Translations\Models\Language;
use ProcessMaker\Package\Translations\Models\Translatable;

class TranslationManager
{
Expand All @@ -16,32 +16,32 @@ public static function getTargetLanguage()
$targetLanguage = self::getBrowserLanguage();
$targetLanguage = self::validateLanguage($targetLanguage);
$targetLanguage = self::getUserLanguage($targetLanguage);

return $targetLanguage;
}

protected static function getBrowserLanguage()
{
return isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])
? substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2)
return isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])
? substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2)
: '';
}

protected static function validateLanguage($language)
{
$availableLanguages = Language::where('installed', 1)->pluck('code')->toArray();

return in_array($language, $availableLanguages) ? $language : 'en';
}

protected static function getUserLanguage($language)
{
if (!Auth::user()->isAnonymous) {
return Auth::user()->language;
} else if (Cache::has('LANGUAGE_ANON_WEBENTRY')) {
} elseif (Cache::has('LANGUAGE_ANON_WEBENTRY')) {
return Cache::get('LANGUAGE_ANON_WEBENTRY');
}

return $language;
}

}
}
2 changes: 1 addition & 1 deletion ProcessMaker/Providers/ProcessMakerServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace ProcessMaker\Providers;

use Illuminate\Database\Console\Migrations\MigrateCommand;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Filesystem\Filesystem;
use Illuminate\Foundation\PackageManifest;
Expand All @@ -14,7 +15,6 @@
use Laravel\Horizon\Horizon;
use Laravel\Passport\Passport;
use Lavary\Menu\Menu;
use Illuminate\Database\Console\Migrations\MigrateCommand;
use ProcessMaker\Console\Migration\ExtendedMigrateCommand;
use ProcessMaker\Events\ActivityAssigned;
use ProcessMaker\Events\ScreenBuilderStarting;
Expand Down
2 changes: 1 addition & 1 deletion ProcessMaker/Repositories/CaseApiRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ public function search(Request $request, Builder $query): void
}

// Add a plus (+) to the beginning and an asterisk (*) to the end of each word
$search = preg_replace_callback("/\b[\w']+\b/u", function($matches) {
$search = preg_replace_callback("/\b[\w']+\b/u", function ($matches) {
return '+' . $matches[0] . '*';
}, $search);

Expand Down
3 changes: 2 additions & 1 deletion ProcessMaker/Repositories/CaseUtils.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public static function getCaseNumberByKeywords(int $caseNumber): string
{
$caseNumber = (string) $caseNumber;
$keywords = array_map(
fn($i) => self::CASE_NUMBER_PREFIX . substr($caseNumber, 0, $i),
fn ($i) => self::CASE_NUMBER_PREFIX . substr($caseNumber, 0, $i),
range(1, strlen($caseNumber))
);

Expand Down Expand Up @@ -160,6 +160,7 @@ public static function extractData(object $object, array $mapping): array
foreach ($mapping as $key => $property) {
$data[$key] = data_get($object, $property);
}

return $data;
}
}
2 changes: 1 addition & 1 deletion ProcessMaker/SanitizeHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ private static function getVariableExceptions($item, $parent, &$elements)
if (self::renderHtmlIsEnabled($item, 'FormTextArea', 'richtext')) {
$elements[] = ($parent ? $parent . '.' . $item['config']['name'] : $item['config']['name']);
} elseif (self::renderHtmlIsEnabled($item, 'FormHtmlViewer', 'renderVarHtml')) {
preg_match_all("/{{([^{}]*)}}/", $item['config']['content'], $matches);
preg_match_all('/{{([^{}]*)}}/', $item['config']['content'], $matches);
if ($matches && $matches[1]) {
foreach ($matches[1] as $variable) {
$elements[] = ($parent ? $parent . '.' . $variable : $variable);
Expand Down
10 changes: 6 additions & 4 deletions ProcessMaker/ScriptRunners/Base.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,14 @@ abstract public function config($code, array $dockerConfig);
/**
* Set the user to run this script as
*
* @var \ProcessMaker\Models\User
* @var User
*/
private $user;

/**
* Set the script executor
*
* @var \ProcessMaker\Models\ScriptExecutor
* @var ScriptExecutor
*/
private $scriptExecutor;

Expand All @@ -60,10 +60,10 @@ public function __construct(ScriptExecutor $scriptExecutor)
* @param array $data
* @param array $config
* @param int $timeout
* @param \ProcessMaker\Models\User $user
* @param User $user
*
* @return array
* @throws \RuntimeException
* @throws RuntimeException
*/
public function run($code, array $data, array $config, $timeout, ?User $user)
{
Expand All @@ -82,6 +82,7 @@ public function run($code, array $data, array $config, $timeout, ?User $user)
$accessToken = Cache::remember('script-runner-' . $user->id, $expires, function () use ($user) {
$user->removeOldRunScriptTokens();
$token = new GenerateAccessToken($user);

return $token->getToken();
});
$environmentVariables[] = 'API_TOKEN=' . (!$isNayra ? escapeshellarg($accessToken) : $accessToken);
Expand All @@ -93,6 +94,7 @@ public function run($code, array $data, array $config, $timeout, ?User $user)
// Nayra Executor
if ($isNayra) {
$response = $this->handleNayraDocker($code, $data, $config, $timeout, $environmentVariables);

return json_decode($response, true);
}

Expand Down
2 changes: 1 addition & 1 deletion ProcessMaker/Traits/TaskControllerIndexMethods.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ private function indexBaseQuery($request)
$includeData = in_array('data', $includes);

$query = ProcessRequestToken::exclude(['data'])->with([
'processRequest' => function($q) use ($includeData) {
'processRequest' => function ($q) use ($includeData) {
if (!$includeData) {
return $q->exclude(['data']);
}
Expand Down
2 changes: 1 addition & 1 deletion devhub/pm-font/svg/cloud-download-outline.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading