15 changed files with 948 additions and 700 deletions
-
205app/Entities/Projects/Job.php
-
13app/Entities/Projects/JobsRepository.php
-
298app/Http/Controllers/JobsController.php
-
241app/Http/Controllers/Projects/FilesController.php
-
150config/medialibrary.php
-
38database/migrations/2019_06_29_145856_create_media_table.php
-
68resources/lang/de/auth.php
-
93resources/lang/de/job.php
-
68resources/lang/en/auth.php
-
95resources/lang/en/job.php
-
68resources/lang/id/auth.php
-
95resources/lang/id/job.php
-
12resources/views/jobs/edit.blade.php
-
11resources/views/jobs/partials/job-show.blade.php
-
193routes/web/projects.php
@ -0,0 +1,150 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
|
|||
/* |
|||
* The disk on which to store added files and derived images by default. Choose |
|||
* one or more of the disks you've configured in config/filesystems.php. |
|||
*/ |
|||
'disk_name' => 'public', |
|||
|
|||
/* |
|||
* The maximum file size of an item in bytes. |
|||
* Adding a larger file will result in an exception. |
|||
*/ |
|||
'max_file_size' => 1024 * 1024 * 10, |
|||
|
|||
/* |
|||
* This queue will be used to generate derived and responsive images. |
|||
* Leave empty to use the default queue. |
|||
*/ |
|||
'queue_name' => '', |
|||
|
|||
/* |
|||
* The fully qualified class name of the media model. |
|||
*/ |
|||
'media_model' => Spatie\MediaLibrary\Models\Media::class, |
|||
|
|||
's3' => [ |
|||
/* |
|||
* The domain that should be prepended when generating urls. |
|||
*/ |
|||
'domain' => 'https://'.env('AWS_BUCKET').'.s3.amazonaws.com', |
|||
], |
|||
|
|||
'remote' => [ |
|||
/* |
|||
* Any extra headers that should be included when uploading media to |
|||
* a remote disk. Even though supported headers may vary between |
|||
* different drivers, a sensible default has been provided. |
|||
* |
|||
* Supported by S3: CacheControl, Expires, StorageClass, |
|||
* ServerSideEncryption, Metadata, ACL, ContentEncoding |
|||
*/ |
|||
'extra_headers' => [ |
|||
'CacheControl' => 'max-age=604800', |
|||
], |
|||
], |
|||
|
|||
'responsive_images' => [ |
|||
|
|||
/* |
|||
* This class is responsible for calculating the target widths of the responsive |
|||
* images. By default we optimize for filesize and create variations that each are 20% |
|||
* smaller than the previous one. More info in the documentation. |
|||
* |
|||
* https://docs.spatie.be/laravel-medialibrary/v7/advanced-usage/generating-responsive-images |
|||
*/ |
|||
'width_calculator' => Spatie\MediaLibrary\ResponsiveImages\WidthCalculator\FileSizeOptimizedWidthCalculator::class, |
|||
|
|||
/* |
|||
* By default rendering media to a responsive image will add some javascript and a tiny placeholder. |
|||
* This ensures that the browser can already determine the correct layout. |
|||
*/ |
|||
'use_tiny_placeholders' => true, |
|||
|
|||
/* |
|||
* This class will generate the tiny placeholder used for progressive image loading. By default |
|||
* the medialibrary will use a tiny blurred jpg image. |
|||
*/ |
|||
'tiny_placeholder_generator' => Spatie\MediaLibrary\ResponsiveImages\TinyPlaceholderGenerator\Blurred::class, |
|||
], |
|||
|
|||
/* |
|||
* When urls to files get generated, this class will be called. Leave empty |
|||
* if your files are stored locally above the site root or on s3. |
|||
*/ |
|||
'url_generator' => null, |
|||
|
|||
/* |
|||
* The class that contains the strategy for determining a media file's path. |
|||
*/ |
|||
'path_generator' => null, |
|||
|
|||
/* |
|||
* Medialibrary will try to optimize all converted images by removing |
|||
* metadata and applying a little bit of compression. These are |
|||
* the optimizers that will be used by default. |
|||
*/ |
|||
'image_optimizers' => [ |
|||
Spatie\ImageOptimizer\Optimizers\Jpegoptim::class => [ |
|||
'--strip-all', // this strips out all text information such as comments and EXIF data
|
|||
'--all-progressive', // this will make sure the resulting image is a progressive one
|
|||
], |
|||
Spatie\ImageOptimizer\Optimizers\Pngquant::class => [ |
|||
'--force', // required parameter for this package
|
|||
], |
|||
Spatie\ImageOptimizer\Optimizers\Optipng::class => [ |
|||
'-i0', // this will result in a non-interlaced, progressive scanned image
|
|||
'-o2', // this set the optimization level to two (multiple IDAT compression trials)
|
|||
'-quiet', // required parameter for this package
|
|||
], |
|||
Spatie\ImageOptimizer\Optimizers\Svgo::class => [ |
|||
'--disable=cleanupIDs', // disabling because it is known to cause troubles
|
|||
], |
|||
Spatie\ImageOptimizer\Optimizers\Gifsicle::class => [ |
|||
'-b', // required parameter for this package
|
|||
'-O3', // this produces the slowest but best results
|
|||
], |
|||
], |
|||
|
|||
/* |
|||
* These generators will be used to create an image of media files. |
|||
*/ |
|||
'image_generators' => [ |
|||
Spatie\MediaLibrary\ImageGenerators\FileTypes\Image::class, |
|||
Spatie\MediaLibrary\ImageGenerators\FileTypes\Webp::class, |
|||
Spatie\MediaLibrary\ImageGenerators\FileTypes\Pdf::class, |
|||
Spatie\MediaLibrary\ImageGenerators\FileTypes\Svg::class, |
|||
Spatie\MediaLibrary\ImageGenerators\FileTypes\Video::class, |
|||
], |
|||
|
|||
/* |
|||
* The engine that should perform the image conversions. |
|||
* Should be either `gd` or `imagick`. |
|||
*/ |
|||
'image_driver' => 'gd', |
|||
|
|||
/* |
|||
* FFMPEG & FFProbe binaries paths, only used if you try to generate video |
|||
* thumbnails and have installed the php-ffmpeg/php-ffmpeg composer |
|||
* dependency. |
|||
*/ |
|||
'ffmpeg_path' => env('FFMPEG_PATH', '/usr/bin/ffmpeg'), |
|||
'ffprobe_path' => env('FFPROBE_PATH', '/usr/bin/ffprobe'), |
|||
|
|||
/* |
|||
* The path where to store temporary files while performing image conversions. |
|||
* If set to null, storage_path('medialibrary/temp') will be used. |
|||
*/ |
|||
'temporary_directory_path' => null, |
|||
|
|||
/* |
|||
* Here you can override the class names of the jobs used by this package. Make sure |
|||
* your custom jobs extend the ones provided by the package. |
|||
*/ |
|||
'jobs' => [ |
|||
'perform_conversions' => Spatie\MediaLibrary\Jobs\PerformConversions::class, |
|||
'generate_responsive_images' => Spatie\MediaLibrary\Jobs\GenerateResponsiveImages::class, |
|||
], |
|||
]; |
|||
@ -0,0 +1,38 @@ |
|||
<?php |
|||
|
|||
use Illuminate\Support\Facades\Schema; |
|||
use Illuminate\Database\Schema\Blueprint; |
|||
use Illuminate\Database\Migrations\Migration; |
|||
|
|||
class CreateMediaTable extends Migration |
|||
{ |
|||
/** |
|||
* Run the migrations. |
|||
*/ |
|||
public function up() |
|||
{ |
|||
Schema::create('media', function (Blueprint $table) { |
|||
$table->increments('id'); |
|||
$table->morphs('model'); |
|||
$table->string('collection_name'); |
|||
$table->string('name'); |
|||
$table->string('file_name'); |
|||
$table->string('mime_type')->nullable(); |
|||
$table->string('disk'); |
|||
$table->unsignedInteger('size'); |
|||
$table->json('manipulations'); |
|||
$table->json('custom_properties'); |
|||
$table->json('responsive_images'); |
|||
$table->unsignedInteger('order_column')->nullable(); |
|||
$table->nullableTimestamps(); |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* Reverse the migrations. |
|||
*/ |
|||
public function down() |
|||
{ |
|||
Schema::dropIfExists('media'); |
|||
} |
|||
} |
|||
@ -1,43 +1,43 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
// Profile
|
|||
'profile' => 'Mein Profil', |
|||
'profile_edit' => 'Mein Profil bearbeiten', |
|||
'update_profile' => 'Profil aktualisieren', |
|||
'profile_updated' => 'Profil wurde aktualisiert.', |
|||
// Profile
|
|||
'profile' => 'Mein Profil', |
|||
'profile_edit' => 'Mein Profil bearbeiten', |
|||
'update_profile' => 'Profil aktualisieren', |
|||
'profile_updated' => 'Profil wurde aktualisiert.', |
|||
|
|||
// Registration
|
|||
'register' => 'Neuen Account anlegen', |
|||
'need_account' => 'Account benötigt?', |
|||
'have_an_account' => 'Ich habe bereits einen Account', |
|||
// Registration
|
|||
'register' => 'Neuen Account anlegen', |
|||
'need_account' => 'Account benötigt?', |
|||
'have_an_account' => 'Ich habe bereits einen Account', |
|||
|
|||
// Login & Logout
|
|||
'login' => 'Login', |
|||
'welcome' => 'Willkommen :name.', |
|||
'failed' => 'Diese Zugangsdaten passen nicht zu unseren Daten.', |
|||
'throttle' => 'Zu viele Login Versuche. Bitte probiere es erneut in :seconds Sekunden.', |
|||
'logout' => 'Logout', |
|||
'logged_out' => 'Sie haben sich ausgeloggt.', |
|||
'remember_me' => 'Erinnere dich an mich', |
|||
// Login & Logout
|
|||
'login' => 'Login', |
|||
'welcome' => 'Willkommen :name.', |
|||
'failed' => 'Diese Zugangsdaten passen nicht zu unseren Daten.', |
|||
'throttle' => 'Zu viele Login Versuche. Bitte probiere es erneut in :seconds Sekunden.', |
|||
'logout' => 'Logout', |
|||
'logged_out' => 'Sie haben sich ausgeloggt.', |
|||
'remember_me' => 'Erinnere dich an mich', |
|||
|
|||
// Password
|
|||
'change_password' => 'Passwort ändern', |
|||
'password_changed' => 'Ihr Passwort wurde geändert', |
|||
'forgot_password' => 'Passwort vergessen?', |
|||
'reset_password' => 'Password zurücksetzen', |
|||
'send_reset_password_link' => 'Sende Passwort Reset Link', |
|||
'old_password_failed' => 'Altes Passwort stimmt nicht überein!', |
|||
'reset_password_hint' => 'Bitte setzen Sie Ihr Passwort zurück, indem Sie dieses Formular ausfüllen', |
|||
// Password
|
|||
'change_password' => 'Passwort ändern', |
|||
'password_changed' => 'Ihr Passwort wurde geändert', |
|||
'forgot_password' => 'Passwort vergessen?', |
|||
'reset_password' => 'Password zurücksetzen', |
|||
'send_reset_password_link' => 'Sende Passwort Reset Link', |
|||
'old_password_failed' => 'Altes Passwort stimmt nicht überein!', |
|||
'reset_password_hint' => 'Bitte setzen Sie Ihr Passwort zurück, indem Sie dieses Formular ausfüllen', |
|||
|
|||
// Attributes
|
|||
'email' => 'E-Mail', |
|||
'password' => 'Passwort', |
|||
'password_confirmation' => 'Passwort bestätigen', |
|||
'old_password' => 'Altes Passwort', |
|||
'new_password' => 'Neues Passwort', |
|||
'new_password_confirmation' => 'Neues Passwort bestätigen', |
|||
// Attributes
|
|||
'email' => 'E-Mail', |
|||
'password' => 'Passwort', |
|||
'password_confirmation' => 'Passwort bestätigen', |
|||
'old_password' => 'Altes Passwort', |
|||
'new_password' => 'Neues Passwort', |
|||
'new_password_confirmation' => 'Neues Passwort bestätigen', |
|||
|
|||
// Authorization
|
|||
'unauthorized_access' => 'Sie können nicht auf die Seite :url zugreifen.', |
|||
// Authorization
|
|||
'unauthorized_access' => 'Sie können nicht auf die Seite :url zugreifen.', |
|||
]; |
|||
@ -1,53 +1,54 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
// Labels
|
|||
'job' => 'Beschäftigung', |
|||
'list' => 'Beschäftigungsliste', |
|||
'on_progress' => 'in Arbeit', |
|||
'detail' => 'Beschäftigungsdetails', |
|||
'search' => 'Beschäftigung suchen', |
|||
'found' => 'Beschäftigung gefunden.', |
|||
'not_found' => 'Beschäftigung nicht gefunden.', |
|||
'tasks' => 'Aufgabenliste', |
|||
'price_total' => 'Beschäftigungsgesamtpreis', |
|||
'tasks_count' => 'Beschäftigungsanzahl', |
|||
'empty' => 'Beschäftigungsliste ist leer.', |
|||
'back_to_index' => 'zurück zur Beschäftigungsliste', |
|||
'starts' => 'Starts', |
|||
'ends' => 'Ends', |
|||
'target' => 'Target', |
|||
'actual' => 'Actual', |
|||
'duration' => 'Duration', |
|||
// Labels
|
|||
'job' => 'Beschäftigung', |
|||
'list' => 'Beschäftigungsliste', |
|||
'on_progress' => 'in Arbeit', |
|||
'detail' => 'Beschäftigungsdetails', |
|||
'search' => 'Beschäftigung suchen', |
|||
'found' => 'Beschäftigung gefunden.', |
|||
'not_found' => 'Beschäftigung nicht gefunden.', |
|||
'tasks' => 'Aufgabenliste', |
|||
'price_total' => 'Beschäftigungsgesamtpreis', |
|||
'tasks_count' => 'Beschäftigungsanzahl', |
|||
'empty' => 'Beschäftigungsliste ist leer.', |
|||
'back_to_index' => 'zurück zur Beschäftigungsliste', |
|||
'starts' => 'Starts', |
|||
'ends' => 'Ends', |
|||
'target' => 'Target', |
|||
'actual' => 'Actual', |
|||
'duration' => 'Duration', |
|||
|
|||
// Actions
|
|||
'create' => 'Neue Beschäftigung anlegen', |
|||
'add' => 'Beschäftigung hinzufügen', |
|||
'created' => 'Neue Beschäftigung wurde angelegt.', |
|||
'show' => 'Beschäftigungsdetails anzeigen', |
|||
'edit' => 'Beschäftigung bearbeiten', |
|||
'update' => 'Beschäftigung aktualisieren', |
|||
'updated' => 'Beschäftigungsdetails wurden aktualisiert.', |
|||
'delete' => 'Beschäftigung löschen', |
|||
'deleted' => 'Beschäftigung wurde gelöscht.', |
|||
'undeleted' => 'Beschäftigung nicht gelöscht.', |
|||
'add_from_other_project' => 'Beschäftigung von einem anderen Projekt hinzufügen', |
|||
'select_project' => 'ein Projekt auswählen.', |
|||
'sort_tasks' => 'sortiere Aufgabenpriorität', |
|||
// Actions
|
|||
'create' => 'Neue Beschäftigung anlegen', |
|||
'add' => 'Beschäftigung hinzufügen', |
|||
'created' => 'Neue Beschäftigung wurde angelegt.', |
|||
'show' => 'Beschäftigungsdetails anzeigen', |
|||
'edit' => 'Beschäftigung bearbeiten', |
|||
'update' => 'Beschäftigung aktualisieren', |
|||
'updated' => 'Beschäftigungsdetails wurden aktualisiert.', |
|||
'delete' => 'Beschäftigung löschen', |
|||
'deleted' => 'Beschäftigung wurde gelöscht.', |
|||
'undeleted' => 'Beschäftigung nicht gelöscht.', |
|||
'add_from_other_project' => 'Beschäftigung von einem anderen Projekt hinzufügen', |
|||
'select_project' => 'ein Projekt auswählen.', |
|||
'sort_tasks' => 'sortiere Aufgabenpriorität', |
|||
|
|||
// Attributes
|
|||
'name' => 'Beschäftigungsname', |
|||
'description' => 'Beschreibung', |
|||
'progress' => 'Fortschritt', |
|||
'worker' => 'Bearbeiter', |
|||
'price' => 'Preis', |
|||
'type' => 'Beschäftigungstyp', |
|||
'target_start_date' => 'Target Start Date', |
|||
'target_end_date' => 'Target End Date', |
|||
'actual_start_date' => 'Actual Start Date', |
|||
'actual_end_date' => 'Actual End Date', |
|||
// Attributes
|
|||
'name' => 'Beschäftigungsname', |
|||
'description' => 'Beschreibung', |
|||
'progress' => 'Fortschritt', |
|||
'worker' => 'Bearbeiter', |
|||
'price' => 'Preis', |
|||
'type' => 'Beschäftigungstyp', |
|||
'target_start_date' => 'Target Start Date', |
|||
'target_end_date' => 'Target End Date', |
|||
'actual_start_date' => 'Actual Start Date', |
|||
'actual_end_date' => 'Actual End Date', |
|||
'files' => 'An diesen Job angehängte Dateien', |
|||
|
|||
// Types
|
|||
'main' => 'Haupt', |
|||
'additional' => 'Zusätzlich', |
|||
// Types
|
|||
'main' => 'Haupt', |
|||
'additional' => 'Zusätzlich', |
|||
]; |
|||
@ -1,43 +1,43 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
// Profile
|
|||
'profile' => 'My Profile', |
|||
'profile_edit' => 'Edit My Profile', |
|||
'update_profile' => 'Update Profile', |
|||
'profile_updated' => 'Profile has been updated.', |
|||
// Profile
|
|||
'profile' => 'My Profile', |
|||
'profile_edit' => 'Edit My Profile', |
|||
'update_profile' => 'Update Profile', |
|||
'profile_updated' => 'Profile has been updated.', |
|||
|
|||
// Registration
|
|||
'register' => 'Create new Account', |
|||
'need_account' => 'Need an Account?', |
|||
'have_an_account' => 'I have an Account', |
|||
// Registration
|
|||
'register' => 'Create new Account', |
|||
'need_account' => 'Need an Account?', |
|||
'have_an_account' => 'I have an Account', |
|||
|
|||
// Login & Logout
|
|||
'login' => 'Login', |
|||
'welcome' => 'Welcome :name.', |
|||
'failed' => 'These credentials do not match our records.', |
|||
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', |
|||
'logout' => 'Logout', |
|||
'logged_out' => 'You have logged out.', |
|||
'remember_me' => 'Remember me', |
|||
// Login & Logout
|
|||
'login' => 'Login', |
|||
'welcome' => 'Welcome :name.', |
|||
'failed' => 'These credentials do not match our records.', |
|||
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', |
|||
'logout' => 'Logout', |
|||
'logged_out' => 'You have logged out.', |
|||
'remember_me' => 'Remember me', |
|||
|
|||
// Password
|
|||
'change_password' => 'Change Password', |
|||
'password_changed' => 'Your password has been changed.', |
|||
'forgot_password' => 'Forgot Password?', |
|||
'reset_password' => 'Reset Password', |
|||
'send_reset_password_link' => 'Send reset password link', |
|||
'old_password_failed' => 'Old password does not match!', |
|||
'reset_password_hint' => 'Please reset your password by filling out this form', |
|||
// Password
|
|||
'change_password' => 'Change Password', |
|||
'password_changed' => 'Your password has been changed.', |
|||
'forgot_password' => 'Forgot Password?', |
|||
'reset_password' => 'Reset Password', |
|||
'send_reset_password_link' => 'Send reset password link', |
|||
'old_password_failed' => 'Old password does not match!', |
|||
'reset_password_hint' => 'Please reset your password by filling out this form', |
|||
|
|||
// Attributes
|
|||
'email' => 'Email', |
|||
'password' => 'Password', |
|||
'password_confirmation' => 'Confirm Password', |
|||
'old_password' => 'Old Password', |
|||
'new_password' => 'New Password', |
|||
'new_password_confirmation' => 'Confirm new Password', |
|||
// Attributes
|
|||
'email' => 'Email', |
|||
'password' => 'Password', |
|||
'password_confirmation' => 'Confirm Password', |
|||
'old_password' => 'Old Password', |
|||
'new_password' => 'New Password', |
|||
'new_password_confirmation' => 'Confirm new Password', |
|||
|
|||
// Authorization
|
|||
'unauthorized_access' => 'You cannot access :url page.', |
|||
// Authorization
|
|||
'unauthorized_access' => 'You cannot access :url page.', |
|||
]; |
|||
@ -1,55 +1,56 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
// Labels
|
|||
'job' => 'Job', |
|||
'list' => 'Job List', |
|||
'on_progress' => 'Job on Progress', |
|||
'detail' => 'Job Detail', |
|||
'search' => 'Ssearch Job', |
|||
'found' => 'Job found.', |
|||
'not_found' => 'Job not found.', |
|||
'tasks' => 'Task List', |
|||
'price_total' => 'Job Price Total', |
|||
'tasks_count' => 'Tasks Count', |
|||
'empty' => 'Job list is empty.', |
|||
'back_to_index' => 'Back to Job List', |
|||
'starts' => 'Starts', |
|||
'ends' => 'Ends', |
|||
'target' => 'Target', |
|||
'actual' => 'Actual', |
|||
'duration' => 'Duration', |
|||
// Labels
|
|||
'job' => 'Job', |
|||
'list' => 'Job List', |
|||
'on_progress' => 'Job on Progress', |
|||
'detail' => 'Job Detail', |
|||
'search' => 'Ssearch Job', |
|||
'found' => 'Job found.', |
|||
'not_found' => 'Job not found.', |
|||
'tasks' => 'Task List', |
|||
'price_total' => 'Job Price Total', |
|||
'tasks_count' => 'Tasks Count', |
|||
'empty' => 'Job list is empty.', |
|||
'back_to_index' => 'Back to Job List', |
|||
'starts' => 'Starts', |
|||
'ends' => 'Ends', |
|||
'target' => 'Target', |
|||
'actual' => 'Actual', |
|||
'duration' => 'Duration', |
|||
|
|||
// Actions
|
|||
'create' => 'Create new Job', |
|||
'add' => 'Add Jobs', |
|||
'created' => 'New Job has been created.', |
|||
'show' => 'View Job Detail', |
|||
'edit' => 'Edit Job', |
|||
'update' => 'Update Job', |
|||
'updated' => 'Job data has been updated.', |
|||
'delete' => 'Delete Job', |
|||
'deleted' => 'Job has been deleted.', |
|||
'undeleted' => 'Job not deleted.', |
|||
'add_from_other_project' => 'Add Job from another Project', |
|||
'select_project' => 'Select a project.', |
|||
'sort_tasks' => 'Sort Task Priority', |
|||
// Actions
|
|||
'create' => 'Create new Job', |
|||
'add' => 'Add Jobs', |
|||
'created' => 'New Job has been created.', |
|||
'show' => 'View Job Detail', |
|||
'edit' => 'Edit Job', |
|||
'update' => 'Update Job', |
|||
'updated' => 'Job data has been updated.', |
|||
'delete' => 'Delete Job', |
|||
'deleted' => 'Job has been deleted.', |
|||
'undeleted' => 'Job not deleted.', |
|||
'add_from_other_project' => 'Add Job from another Project', |
|||
'select_project' => 'Select a project.', |
|||
'sort_tasks' => 'Sort Task Priority', |
|||
|
|||
'created_from_other_project' => 'Job has been added from other Project.', |
|||
'created_from_other_project' => 'Job has been added from other Project.', |
|||
|
|||
// Attributes
|
|||
'name' => 'Job Name', |
|||
'description' => 'Description', |
|||
'progress' => 'Progress', |
|||
'worker' => 'Worker', |
|||
'price' => 'Price', |
|||
'type' => 'Job Type', |
|||
'target_start_date' => 'Target Start Date', |
|||
'target_end_date' => 'Target End Date', |
|||
'actual_start_date' => 'Actual Start Date', |
|||
'actual_end_date' => 'Actual End Date', |
|||
// Attributes
|
|||
'name' => 'Job Name', |
|||
'description' => 'Description', |
|||
'progress' => 'Progress', |
|||
'worker' => 'Worker', |
|||
'price' => 'Price', |
|||
'type' => 'Job Type', |
|||
'target_start_date' => 'Target Start Date', |
|||
'target_end_date' => 'Target End Date', |
|||
'actual_start_date' => 'Actual Start Date', |
|||
'actual_end_date' => 'Actual End Date', |
|||
'files' => 'Files attached to this job', |
|||
|
|||
// Types
|
|||
'main' => 'Main', |
|||
'additional' => 'Additional', |
|||
// Types
|
|||
'main' => 'Main', |
|||
'additional' => 'Additional', |
|||
]; |
|||
@ -1,43 +1,43 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
// Profile
|
|||
'profile' => 'Profil Saya', |
|||
'profile_edit' => 'Edit Profil Saya', |
|||
'update_profile' => 'Update Profil', |
|||
'profile_updated' => 'Profil sudah diupdate.', |
|||
// Profile
|
|||
'profile' => 'Profil Saya', |
|||
'profile_edit' => 'Edit Profil Saya', |
|||
'update_profile' => 'Update Profil', |
|||
'profile_updated' => 'Profil sudah diupdate.', |
|||
|
|||
// Registration
|
|||
'register' => 'Buat Akun Baru', |
|||
'need_account' => 'Belum punya Akun?', |
|||
'have_an_account' => 'Saya sudah punya Akun', |
|||
// Registration
|
|||
'register' => 'Buat Akun Baru', |
|||
'need_account' => 'Belum punya Akun?', |
|||
'have_an_account' => 'Saya sudah punya Akun', |
|||
|
|||
// Login & Logout
|
|||
'login' => 'Login', |
|||
'welcome' => 'Selamat datang kembali :name.', |
|||
'failed' => 'Identitas tersebut tidak cocok dengan data kami.', |
|||
'throttle' => 'Terlalu banyak usaha masuk. Silahkan coba lagi dalam :seconds detik.', |
|||
'logout' => 'Keluar', |
|||
'logged_out' => 'Anda telah logout.', |
|||
'remember_me' => 'Ingat saya', |
|||
// Login & Logout
|
|||
'login' => 'Login', |
|||
'welcome' => 'Selamat datang kembali :name.', |
|||
'failed' => 'Identitas tersebut tidak cocok dengan data kami.', |
|||
'throttle' => 'Terlalu banyak usaha masuk. Silahkan coba lagi dalam :seconds detik.', |
|||
'logout' => 'Keluar', |
|||
'logged_out' => 'Anda telah logout.', |
|||
'remember_me' => 'Ingat saya', |
|||
|
|||
// Password
|
|||
'change_password' => 'Ganti Password', |
|||
'password_changed' => 'Password berhasil diubah.', |
|||
'forgot_password' => 'Lupa Password?', |
|||
'reset_password' => 'Reset Password', |
|||
'send_reset_password_link' => 'Kirim Link Reset Password', |
|||
'old_password_failed' => 'Password lama tidak cocok!', |
|||
'reset_password_hint' => 'Silakan melakukan reset password dengan mengisi form berikut', |
|||
// Password
|
|||
'change_password' => 'Ganti Password', |
|||
'password_changed' => 'Password berhasil diubah.', |
|||
'forgot_password' => 'Lupa Password?', |
|||
'reset_password' => 'Reset Password', |
|||
'send_reset_password_link' => 'Kirim Link Reset Password', |
|||
'old_password_failed' => 'Password lama tidak cocok!', |
|||
'reset_password_hint' => 'Silakan melakukan reset password dengan mengisi form berikut', |
|||
|
|||
// Attributes
|
|||
'email' => 'Email', |
|||
'password' => 'Password', |
|||
'password_confirmation' => 'Ulangi Password', |
|||
'old_password' => 'Password Lama', |
|||
'new_password' => 'Password Baru', |
|||
'new_password_confirmation' => 'Ulangi Password Baru', |
|||
// Attributes
|
|||
'email' => 'Email', |
|||
'password' => 'Password', |
|||
'password_confirmation' => 'Ulangi Password', |
|||
'old_password' => 'Password Lama', |
|||
'new_password' => 'Password Baru', |
|||
'new_password_confirmation' => 'Ulangi Password Baru', |
|||
|
|||
// Authorization
|
|||
'unauthorized_access' => 'Anda tidak dapat mengakses halaman :url.', |
|||
// Authorization
|
|||
'unauthorized_access' => 'Anda tidak dapat mengakses halaman :url.', |
|||
]; |
|||
@ -1,55 +1,56 @@ |
|||
<?php |
|||
|
|||
return [ |
|||
// Labels
|
|||
'job' => 'Job', |
|||
'list' => 'Daftar Job', |
|||
'on_progress' => 'Job on Progress', |
|||
'detail' => 'Detail Job', |
|||
'search' => 'Cari Job', |
|||
'found' => 'Job ditemukan', |
|||
'not_found' => 'Job tidak ditemukan', |
|||
'tasks' => 'Daftar Task', |
|||
'price_total' => 'Nilai Job Total', |
|||
'tasks_count' => 'Jumlah Task', |
|||
'empty' => 'Belum ada Job', |
|||
'back_to_index' => 'Kembali ke daftar Job', |
|||
'starts' => 'Mulai', |
|||
'ends' => 'Selesai', |
|||
'target' => 'Target', |
|||
'actual' => 'Aktual', |
|||
'duration' => 'Durasi', |
|||
// Labels
|
|||
'job' => 'Job', |
|||
'list' => 'Daftar Job', |
|||
'on_progress' => 'Job on Progress', |
|||
'detail' => 'Detail Job', |
|||
'search' => 'Cari Job', |
|||
'found' => 'Job ditemukan', |
|||
'not_found' => 'Job tidak ditemukan', |
|||
'tasks' => 'Daftar Task', |
|||
'price_total' => 'Nilai Job Total', |
|||
'tasks_count' => 'Jumlah Task', |
|||
'empty' => 'Belum ada Job', |
|||
'back_to_index' => 'Kembali ke daftar Job', |
|||
'starts' => 'Mulai', |
|||
'ends' => 'Selesai', |
|||
'target' => 'Target', |
|||
'actual' => 'Aktual', |
|||
'duration' => 'Durasi', |
|||
|
|||
// Actions
|
|||
'create' => 'Input Job Baru', |
|||
'add' => 'Tambahkan Job', |
|||
'created' => 'Input Job baru telah berhasil.', |
|||
'show' => 'Detail Job', |
|||
'edit' => 'Edit Job', |
|||
'update' => 'Update Job', |
|||
'updated' => 'Update data Job telah berhasil.', |
|||
'delete' => 'Hapus Job', |
|||
'deleted' => 'Hapus data Job telah berhasil.', |
|||
'undeleted' => 'Data Job gagal dihapus.', |
|||
'add_from_other_project' => 'Tambah Job dari Project Lain', |
|||
'select_project' => 'Pilih salah satu project.', |
|||
'sort_tasks' => 'Urutkan Prioritas Task', |
|||
// Actions
|
|||
'create' => 'Input Job Baru', |
|||
'add' => 'Tambahkan Job', |
|||
'created' => 'Input Job baru telah berhasil.', |
|||
'show' => 'Detail Job', |
|||
'edit' => 'Edit Job', |
|||
'update' => 'Update Job', |
|||
'updated' => 'Update data Job telah berhasil.', |
|||
'delete' => 'Hapus Job', |
|||
'deleted' => 'Hapus data Job telah berhasil.', |
|||
'undeleted' => 'Data Job gagal dihapus.', |
|||
'add_from_other_project' => 'Tambah Job dari Project Lain', |
|||
'select_project' => 'Pilih salah satu project.', |
|||
'sort_tasks' => 'Urutkan Prioritas Task', |
|||
|
|||
'created_from_other_project' => 'Berhasil tambah job dari Project lain.', |
|||
'created_from_other_project' => 'Berhasil tambah job dari Project lain.', |
|||
|
|||
// Attributes
|
|||
'name' => 'Nama Job', |
|||
'description' => 'Deskripsi', |
|||
'progress' => 'Progress', |
|||
'worker' => 'Pekerja', |
|||
'price' => 'Biaya Pengerjaan', |
|||
'type' => 'Jenis Job', |
|||
'target_start_date' => 'Target Tgl Mulai', |
|||
'target_end_date' => 'Target Tgl Selesai', |
|||
'actual_start_date' => 'Tgl Mulai Aktual', |
|||
'actual_end_date' => 'Tgl Selesai Aktual', |
|||
// Attributes
|
|||
'name' => 'Nama Job', |
|||
'description' => 'Deskripsi', |
|||
'progress' => 'Progress', |
|||
'worker' => 'Pekerja', |
|||
'price' => 'Biaya Pengerjaan', |
|||
'type' => 'Jenis Job', |
|||
'target_start_date' => 'Target Tgl Mulai', |
|||
'target_end_date' => 'Target Tgl Selesai', |
|||
'actual_start_date' => 'Tgl Mulai Aktual', |
|||
'actual_end_date' => 'Tgl Selesai Aktual', |
|||
'files' => 'File terlampir pada pekerjaan ini', |
|||
|
|||
// Types
|
|||
'main' => 'Utama', |
|||
'additional' => 'Tambahan', |
|||
// Types
|
|||
'main' => 'Utama', |
|||
'additional' => 'Tambahan', |
|||
]; |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue