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 |
<?php |
||||
|
|
||||
return [ |
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 |
<?php |
||||
|
|
||||
return [ |
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 |
<?php |
||||
|
|
||||
return [ |
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 |
<?php |
||||
|
|
||||
return [ |
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 |
<?php |
||||
|
|
||||
return [ |
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 |
<?php |
||||
|
|
||||
return [ |
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