Skip to content

Commit

Permalink
Merge branch 'main' into 147a6-form-focused-mode
Browse files Browse the repository at this point in the history
  • Loading branch information
chiragchhatrala committed Dec 10, 2024
2 parents 9a19502 + ea4cd85 commit 459dcf7
Show file tree
Hide file tree
Showing 63 changed files with 2,322 additions and 534 deletions.
2 changes: 1 addition & 1 deletion api/app/Http/Controllers/Forms/PublicFormController.php
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ private function getRedirectData($form, $submissionData)
return ['id' => $key, 'value' => $value];
})->values()->all();

$redirectUrl = ($form->redirect_url) ? (new MentionParser($form->redirect_url, $formattedData))->parseAsText() : null;
$redirectUrl = ($form->redirect_url) ? (new MentionParser($form->redirect_url, $formattedData))->urlFriendlyOutput()->parseAsText() : null;

if ($redirectUrl && !filter_var($redirectUrl, FILTER_VALIDATE_URL)) {
$redirectUrl = null;
Expand Down
2 changes: 1 addition & 1 deletion api/app/Http/Requests/UserFormRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public function rules()
're_fillable' => 'boolean',
're_fill_button_text' => 'string|min:1|max:50',
'submitted_text' => 'string|max:2000',
'redirect_url' => 'nullable|max:255',
'redirect_url' => 'nullable|string',
'database_fields_update' => 'nullable|array',
'max_submissions_count' => 'integer|nullable|min:1',
'max_submissions_reached_text' => 'string|nullable',
Expand Down
2 changes: 1 addition & 1 deletion api/app/Models/Forms/Form.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class Form extends Model implements CachableAttributes

public const FORMATS = ['regular', 'focused'];

public const LANGUAGES = ['en', 'fr', 'hi', 'es', 'ar', 'zh', 'ja'];
public const LANGUAGES = ['en', 'fr', 'hi', 'es', 'ar', 'zh', 'ja', 'bn', 'pt', 'ru', 'ur', 'pa', 'de', 'jv', 'ko', 'vi', 'te', 'mr', 'ta', 'tr'];

protected $fillable = [
'workspace_id',
Expand Down
17 changes: 15 additions & 2 deletions api/app/Open/MentionParser.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,20 @@ class MentionParser
{
private $content;
private $data;
private $urlFriendly = false;

public function __construct($content, $data)
{
$this->content = $content;
$this->data = $data;
}

public function urlFriendlyOutput(bool $enable = true): self
{
$this->urlFriendly = $enable;
return $this;
}

public function parse()
{
$doc = new DOMDocument();
Expand All @@ -40,7 +47,7 @@ public function parse()
$value = $this->getData($fieldId);

if ($value !== null) {
$textNode = $doc->createTextNode(is_array($value) ? implode(', ', $value) : $value);
$textNode = $doc->createTextNode(is_array($value) ? implode($this->urlFriendly ? ',+' : ', ', $value) : $value);
$element->parentNode->replaceChild($textNode, $element);
} elseif ($fallback) {
$textNode = $doc->createTextNode($fallback);
Expand Down Expand Up @@ -127,7 +134,13 @@ private function getData($fieldId)
$value = collect($this->data)->firstWhere('id', $fieldId)['value'] ?? null;

if (is_object($value)) {
return (array) $value;
$value = (array) $value;
}

if ($this->urlFriendly && $value !== null) {
return is_array($value)
? array_map('urlencode', $value)
: urlencode($value);
}

return $value;
Expand Down
13 changes: 13 additions & 0 deletions api/config/app.php
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,19 @@
'ar' => 'AR',
'zh' => 'ZH',
'ja' => 'JA',
'bn' => 'BN',
'pt' => 'PT',
'ru' => 'RU',
'ur' => 'UR',
'pa' => 'PA',
'de' => 'DE',
'jv' => 'JV',
'ko' => 'KO',
'vi' => 'VI',
'te' => 'TE',
'mr' => 'MR',
'ta' => 'TA',
'tr' => 'TR',
],

/*
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class () extends Migration {
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('forms', function (Blueprint $table) {
$table->text('redirect_url')->nullable()->change();
});
}

/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('forms', function (Blueprint $table) {
$table->string('redirect_url')->nullable()->change();
});
}
};
6 changes: 4 additions & 2 deletions api/resources/lang/ar/validation.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
'before_or_equal' => ':attribute يجب أن يكون تاريخا سابقا أو مطابقا للتاريخ :date.',
'between' => [
'numeric' => 'يجب أن تكون قيمة :attribute بين :min و :max.',
'file' => 'يجب أن يكون حجم الملف :attribute بين :min و :max كيلوبايت.',
'file' => 'يجب أن يكون حجم الملف :attribute بين :min و :max ��يلوبايت.',
'string' => 'يجب أن يكون عدد حروف النّص :attribute بين :min و :max.',
'array' => 'يجب أن يحتوي :attribute على عدد من العناصر بين :min و :max.',
],
Expand Down Expand Up @@ -66,7 +66,7 @@
],
'max' => [
'numeric' => 'يجب أن تكون قيمة :attribute مساوية أو أصغر من :max.',
'file' => 'يجب أن لا يتجاوز حجم الملف :attribute :max كيلوبايت.',
'file' => 'يجب أن لا يتجاوز حجم الملف :attribute :max كيلوبا��ت.',
'string' => 'يجب أن لا يتجاوز طول النّص :attribute :max حروفٍ/حرفًا.',
'array' => 'يجب أن لا يحتوي :attribute على أكثر من :max عناصر/عنصر.',
],
Expand Down Expand Up @@ -114,4 +114,6 @@
],

'attributes' => [],

'invalid_json' => 'إدخال غير صالح. يرجى التصحيح والمحاولة مرة أخرى.',
];
119 changes: 119 additions & 0 deletions api/resources/lang/bn/validation.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
<?php

return [
'accepted' => ':attribute গ্রহণ করা আবশ্যক।',
'active_url' => ':attribute একটি বৈধ URL নয়।',
'after' => ':attribute অবশ্যই :date এর পরের একটি তারিখ হতে হবে।',
'after_or_equal' => ':attribute অবশ্যই :date এর পরে বা সমান একটি তারিখ হতে হবে।',
'alpha' => ':attribute শুধুমাত্র অক্ষর থাকতে পারে।',
'alpha_dash' => ':attribute শুধুমাত্র অক্ষর, সংখ্যা, ড্যাশ এবং আন্ডারস্কোর থাকতে পারে।',
'alpha_num' => ':attribute শুধুমাত্র অক্ষর এবং সংখ্যা থাকতে পারে।',
'array' => ':attribute অবশ্যই একটি অ্যারে হতে হবে।',
'before' => ':attribute অবশ্যই :date এর আগের একটি তারিখ হতে হবে।',
'before_or_equal' => ':attribute অবশ্যই :date এর আগে বা সমান একটি তারিখ হতে হবে।',
'between' => [
'numeric' => ':attribute অবশ্যই :min এবং :max এর মধ্যে হতে হবে।',
'file' => ':attribute অবশ্যই :min এবং :max কিলোবাইটের মধ্যে হতে হবে।',
'string' => ':attribute অবশ্যই :min এবং :max অক্ষরের মধ্যে হতে হবে।',
'array' => ':attribute অবশ্যই :min এবং :max আইটেমের মধ্যে হতে হবে।',
],
'boolean' => ':attribute ক্ষেত্রটি সত্য বা মিথ্যা হতে হবে।',
'confirmed' => ':attribute নিশ্চিতকরণ মেলে না।',
'date' => ':attribute একটি বৈধ তারিখ নয়।',
'date_equals' => ':attribute অবশ্যই :date এর সমান একটি তারিখ হতে হবে।',
'date_format' => ':attribute ফরম্যাট :format এর সাথে মেলে না।',
'different' => ':attribute এবং :other অবশ্যই আলাদা হতে হবে।',
'digits' => ':attribute অবশ্যই :digits সংখ্যা হতে হবে।',
'digits_between' => ':attribute অবশ্যই :min এবং :max সংখ্যার মধ্যে হতে হবে।',
'dimensions' => ':attribute অবৈধ ছবির মাত্রা রয়েছে।',
'distinct' => ':attribute ক্ষেত্রের একটি ডুপ্লিকেট মান রয়েছে।',
'email' => ':attribute অবশ্যই একটি বৈধ ইমেইল ঠিকানা হতে হবে।',
'ends_with' => ':attribute অবশ্যই নিম্নলিখিত একটি দিয়ে শেষ হতে হবে: :values।',
'exists' => 'নির্বাচিত :attribute অবৈধ।',
'file' => ':attribute অবশ্যই একটি ফাইল হতে হবে।',
'filled' => ':attribute ক্ষেত্রের একটি মান থাকতে হবে।',
'gt' => [
'numeric' => ':attribute অবশ্যই :value এর চেয়ে বড় হতে হবে।',
'file' => ':attribute অবশ্যই :value কিলোবাইটের চেয়ে বড় হতে হবে।',
'string' => ':attribute অবশ্যই :value অক্ষরের চেয়ে বড় হতে হবে।',
'array' => ':attribute এ অবশ্যই :value এর চেয়ে বেশি আইটেম থাকতে হবে।',
],
'gte' => [
'numeric' => ':attribute অবশ্যই :value এর চেয়ে বড় বা সমান হতে হবে।',
'file' => ':attribute অবশ্যই :value কিলোবাইটের চেয়ে বড় বা সমান হতে হবে।',
'string' => ':attribute অবশ্যই :value অক্ষরের চেয়ে বড় বা সমান হতে হবে।',
'array' => ':attribute এ অবশ্যই :value বা তার বেশি আইটেম থাকতে হবে।',
],
'image' => ':attribute অবশ্যই একটি ছবি হতে হবে।',
'in' => 'নির্বাচিত :attribute অবৈধ।',
'in_array' => ':attribute ক্ষেত্রটি :other এ বিদ্যমান নেই।',
'integer' => ':attribute অবশ্যই একটি পূর্ণসংখ্যা হতে হবে।',
'ip' => ':attribute অবশ্যই একটি বৈধ IP ঠিকানা হতে হবে।',
'ipv4' => ':attribute অবশ্যই একটি বৈধ IPv4 ঠিকানা হতে হবে।',
'ipv6' => ':attribute অবশ্যই একটি বৈধ IPv6 ঠিকানা হতে হবে।',
'json' => ':attribute অবশ্যই একটি বৈধ JSON স্ট্রিং হতে হবে।',
'lt' => [
'numeric' => ':attribute অবশ্যই :value এর চেয়ে ছোট হতে হবে।',
'file' => ':attribute অবশ্যই :value কিলোবাইটের চেয়ে ছোট হতে হবে।',
'string' => ':attribute অবশ্যই :value অক্ষরের চেয়ে ছোট হতে হবে।',
'array' => ':attribute এ অবশ্যই :value এর চেয়ে কম আইটেম থাকতে হবে।',
],
'lte' => [
'numeric' => ':attribute অবশ্যই :value এর চেয়ে ছোট বা সমান হতে হবে।',
'file' => ':attribute অবশ্যই :value কিলোবাইটের চেয়ে ছোট বা সমান হতে হবে।',
'string' => ':attribute অবশ্যই :value অক্ষরের চেয়ে ছোট বা সমান হতে হবে।',
'array' => ':attribute এ অবশ্যই :value এর চেয়ে বেশি আইটেম থাকতে পারবে না।',
],
'max' => [
'numeric' => ':attribute :max এর চেয়ে বড় হতে পারবে না।',
'file' => ':attribute :max কিলোবাইটের চেয়ে বড় হতে পারবে না।',
'string' => ':attribute :max অক্ষরের চেয়ে বড় হতে পারবে না।',
'array' => ':attribute এ :max এর চেয়ে বেশি আইটেম থাকতে পারবে না।',
],
'mimes' => ':attribute অবশ্যই একটি :values ধরনের ফাইল হতে হবে।',
'mimetypes' => ':attribute অবশ্যই একটি :values ধরনের ফাইল হতে হবে।',
'min' => [
'numeric' => ':attribute অবশ্যই :min এর চেয়ে বড় হতে হবে।',
'file' => ':attribute অবশ্যই :min কিলোবাইটের চেয়ে বড় হতে হবে।',
'string' => ':attribute অবশ্যই :min অক্ষরের চেয়ে বড় হতে হবে।',
'array' => ':attribute এ অবশ্যই কমপক্ষে :min আইটেম থাকতে হবে।',
],
'multiple_of' => ':attribute অবশ্যই :value এর গুণিতক হতে হবে',
'not_in' => 'নির্বাচিত :attribute অবৈধ।',
'not_regex' => ':attribute ফরম্যাট অবৈধ।',
'numeric' => ':attribute অবশ্যই একটি সংখ্যা হতে হবে।',
'password' => 'পাসওয়ার্ড ভুল।',
'present' => ':attribute ক্ষেত্র অবশ্যই উপস্থিত থাকতে হবে।',
'regex' => ':attribute ফরম্যাট অবৈধ।',
'required' => ':attribute ক্ষেত্র আবশ্যক।',
'required_if' => ':other :value হলে :attribute ক্ষেত্র আবশ্যক।',
'required_unless' => ':other :values তে না থাকলে :attribute ক্ষেত্র আবশ্যক।',
'required_with' => ':values উপস্থিত থাকলে :attribute ক্ষেত্র আবশ্যক।',
'required_with_all' => ':values উপস্থিত থাকলে :attribute ক্ষেত্র আবশ্যক।',
'required_without' => ':values উপস্থিত না থাকলে :attribute ক্ষেত্র আবশ্যক।',
'required_without_all' => ':values কোনটিই উপস্থিত না থাকলে :attribute ক্ষেত্র আবশ্যক।',
'same' => ':attribute এবং :other অবশ্যই মিলতে হবে।',
'size' => [
'numeric' => ':attribute অবশ্যই :size হতে হবে।',
'file' => ':attribute অবশ্যই :size কিলোবাইট হতে হবে।',
'string' => ':attribute অবশ্যই :size অক্ষর হতে হবে।',
'array' => ':attribute এ অবশ্যই :size আইটেম থাকতে হবে।',
],
'starts_with' => ':attribute অবশ্যই নিম্নলিখিত একটি দিয়ে শুরু হতে হবে: :values।',
'string' => ':attribute অবশ্যই একটি বৈধ টেক্সট হতে হবে।',
'timezone' => ':attribute অবশ্যই একটি বৈধ জোন হতে হবে।',
'unique' => ':attribute ইতিমধ্যে নেওয়া হয়েছে।',
'uploaded' => ':attribute আপলোড করতে ব্যর্থ হয়েছে।',
'url' => ':attribute ফরম্যাট অবৈধ।',
'uuid' => ':attribute অবশ্যই একটি বৈধ UUID হতে হবে।',

'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],

'attributes' => [],

'invalid_json' => 'অবৈধ ইনপুট। অনুগ্রহ করে সংশোধন করে আবার চেষ্টা করুন।',
];
19 changes: 0 additions & 19 deletions api/resources/lang/de-DE/auth.php

This file was deleted.

19 changes: 0 additions & 19 deletions api/resources/lang/de-DE/pagination.php

This file was deleted.

22 changes: 0 additions & 22 deletions api/resources/lang/de-DE/passwords.php

This file was deleted.

Loading

0 comments on commit 459dcf7

Please sign in to comment.