Compare commits
91 Commits
c16203110b
...
v5.0-basel
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2bea1ce79a | ||
|
|
ea3fba0cd6 | ||
|
|
02a6aa8d24 | ||
|
|
8b195fff55 | ||
|
|
0a796ef4e4 | ||
|
|
604b986e6e | ||
|
|
995d3d3ea0 | ||
|
|
87af27fe10 | ||
|
|
e6496b8ae0 | ||
|
|
6390717622 | ||
|
|
2dbcf3e2e6 | ||
|
|
0f24a817ce | ||
|
|
1b645de66e | ||
|
|
e1ac5bd2a5 | ||
|
|
e3c5b44174 | ||
|
|
9a6e3a63b2 | ||
|
|
0f12309175 | ||
|
|
e25228e25e | ||
|
|
633249438c | ||
|
|
fe02cfe2d4 | ||
|
|
854a39db30 | ||
|
|
94b55851b4 | ||
|
|
08571b2358 | ||
|
|
0abc30c7a0 | ||
|
|
b4d92bb14a | ||
|
|
0327471c92 | ||
|
|
72b800b22d | ||
|
|
54eb09f080 | ||
|
|
6d67430c33 | ||
|
|
cde3a8597c | ||
|
|
6bc7f0b3f0 | ||
|
|
1007e59b7d | ||
|
|
fe3b645352 | ||
|
|
bcaad2306a | ||
|
|
0e3c86a075 | ||
|
|
b78a0dd6d2 | ||
|
|
af0fae29f8 | ||
|
|
5d2ab7ffe2 | ||
|
|
0b3ef61086 | ||
|
|
18dd91e2a8 | ||
|
|
42acec513f | ||
|
|
71f5c53b53 | ||
|
|
1e1440edaf | ||
|
|
0b157efbbf | ||
|
|
d2f492212b | ||
|
|
73770a85be | ||
|
|
5f44fd781f | ||
|
|
a4cbfd63da | ||
|
|
bbf0fd286d | ||
|
|
57cc16abf2 | ||
|
|
2688f9cab9 | ||
|
|
54c685ce79 | ||
|
|
9aa01a4f31 | ||
|
|
386f04b32f | ||
|
|
fafa871214 | ||
|
|
9874fb4b60 | ||
|
|
cb89f32a64 | ||
|
|
21ec11e998 | ||
|
|
0ca7174e2f | ||
|
|
fabc31ac2b | ||
|
|
427fbf616d | ||
|
|
1b30d340b3 | ||
|
|
56f790c279 | ||
|
|
1aaf083a8a | ||
|
|
ef9a79539a | ||
|
|
1f621ad7a3 | ||
|
|
ba86aa3039 | ||
|
|
30a6351136 | ||
|
|
519ee7a567 | ||
|
|
c938d6b08b | ||
|
|
566e657060 | ||
|
|
88679773fe | ||
|
|
11bf31af39 | ||
|
|
16fcca5333 | ||
|
|
0952f460d5 | ||
|
|
0d26eefab9 | ||
|
|
b7875f0236 | ||
|
|
4def6bcf09 | ||
|
|
a15c237f53 | ||
|
|
4f91dd8370 | ||
|
|
d0eeafcd52 | ||
|
|
e7a4dce4e1 | ||
|
|
f355b3a9b5 | ||
|
|
5a7008b8d9 | ||
|
|
9dfd6f3884 | ||
|
|
b2985a5b32 | ||
|
|
4ccd15566d | ||
|
|
b76eb97d66 | ||
|
|
423a23abce | ||
|
|
7b979abad1 | ||
|
|
31cf5dbb3b |
@@ -1,6 +0,0 @@
|
|||||||
# Local Development MinIO Configuration
|
|
||||||
# Copy to .env.local and update with your MinIO credentials
|
|
||||||
|
|
||||||
# MinIO credentials (get from your production server)
|
|
||||||
MINIO_KEY=secret_key
|
|
||||||
MINIO_SECRET=your_minio_root_password
|
|
||||||
11
.gitignore
vendored
11
.gitignore
vendored
@@ -1,14 +1,3 @@
|
|||||||
/vendor
|
/vendor
|
||||||
/node_modules
|
/node_modules
|
||||||
.env
|
.env
|
||||||
|
|
||||||
# SSH Keys - Never commit private keys
|
|
||||||
*.ppk
|
|
||||||
*.pem
|
|
||||||
*.key
|
|
||||||
id_rsa
|
|
||||||
id_dsa
|
|
||||||
id_ecdsa
|
|
||||||
id_ed25519
|
|
||||||
_key/
|
|
||||||
.ssh/
|
|
||||||
|
|||||||
@@ -1,125 +0,0 @@
|
|||||||
# SSH Keys Setup Guide
|
|
||||||
|
|
||||||
## Security Notice
|
|
||||||
|
|
||||||
SSH private keys (.ppk, .pem, id_rsa, etc.) should **NEVER** be:
|
|
||||||
- Stored in the application directory
|
|
||||||
- Committed to git repositories
|
|
||||||
- Placed in web-accessible locations
|
|
||||||
|
|
||||||
## Recommended Setup
|
|
||||||
|
|
||||||
### 1. Create Secure Keys Directory on Server
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# On your production server
|
|
||||||
sudo mkdir -p /var/crew-keys
|
|
||||||
sudo chmod 700 /var/crew-keys
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Place Your SSH Key
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Copy your key to the secure location
|
|
||||||
sudo cp /path/to/your/root.ppk /var/crew-keys/
|
|
||||||
sudo chmod 600 /var/crew-keys/root.ppk
|
|
||||||
sudo chown root:root /var/crew-keys/root.ppk
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Verify Permissions
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ls -la /var/crew-keys/
|
|
||||||
# Should show: drwx------ (700) for directory
|
|
||||||
# Should show: -rw------- (600) for key file
|
|
||||||
```
|
|
||||||
|
|
||||||
## Docker Configuration
|
|
||||||
|
|
||||||
The `docker-compose.prod.yml` and `docker-compose.dev.yml` files are configured to mount `/var/crew-keys` as a **read-only** volume:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
volumes:
|
|
||||||
- /var/crew-keys:/var/keys:ro
|
|
||||||
```
|
|
||||||
|
|
||||||
The `:ro` flag ensures the container can only read the keys, not modify them.
|
|
||||||
|
|
||||||
## Application Configuration
|
|
||||||
|
|
||||||
The [config/filesystems.php](config/filesystems.php) references the key at:
|
|
||||||
|
|
||||||
```php
|
|
||||||
'privateKey' => '/var/keys/root.ppk',
|
|
||||||
```
|
|
||||||
|
|
||||||
This path is inside the container and maps to `/var/crew-keys/root.ppk` on the host.
|
|
||||||
|
|
||||||
## Testing
|
|
||||||
|
|
||||||
To verify the SFTP connection works:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker exec crewsportswear_app_prod php -r "
|
|
||||||
use League\Flysystem\Sftp\SftpAdapter;
|
|
||||||
try {
|
|
||||||
\$adapter = new SftpAdapter([
|
|
||||||
'host' => '35.232.234.8',
|
|
||||||
'port' => 22,
|
|
||||||
'username' => 'root',
|
|
||||||
'privateKey' => '/var/keys/root.ppk',
|
|
||||||
'root' => '/var/www/html/images',
|
|
||||||
'timeout' => 10,
|
|
||||||
]);
|
|
||||||
echo 'SFTP connection: SUCCESS';
|
|
||||||
} catch (Exception \$e) {
|
|
||||||
echo 'SFTP connection failed: ' . \$e->getMessage();
|
|
||||||
}
|
|
||||||
"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
### Permission Denied
|
|
||||||
|
|
||||||
If you get permission errors:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Fix directory permissions
|
|
||||||
sudo chmod 700 /var/crew-keys
|
|
||||||
|
|
||||||
# Fix key file permissions
|
|
||||||
sudo chmod 600 /var/crew-keys/root.ppk
|
|
||||||
```
|
|
||||||
|
|
||||||
### Key Format Issues
|
|
||||||
|
|
||||||
PuTTY keys (.ppk) may need conversion for Linux/PHP:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Convert .ppk to OpenSSH format
|
|
||||||
puttygen root.ppk -O private-openssh -o /var/crew-keys/root.pem
|
|
||||||
chmod 600 /var/crew-keys/root.pem
|
|
||||||
```
|
|
||||||
|
|
||||||
Then update `filesystems.php`:
|
|
||||||
```php
|
|
||||||
'privateKey' => '/var/keys/root.pem',
|
|
||||||
```
|
|
||||||
|
|
||||||
## Security Best Practices
|
|
||||||
|
|
||||||
✅ **DO:**
|
|
||||||
- Store keys outside application directory
|
|
||||||
- Use restrictive permissions (600 for files, 700 for directories)
|
|
||||||
- Mount as read-only in Docker
|
|
||||||
- Keep keys out of version control
|
|
||||||
- Use SSH key authentication instead of passwords
|
|
||||||
- Rotate keys regularly
|
|
||||||
|
|
||||||
❌ **DON'T:**
|
|
||||||
- Commit keys to git
|
|
||||||
- Store in web-accessible directories
|
|
||||||
- Use world-readable permissions
|
|
||||||
- Share keys across multiple services
|
|
||||||
- Use password-protected keys without proper passphrase management
|
|
||||||
126
UPGRADE_NOTES.md
Normal file
126
UPGRADE_NOTES.md
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
# Laravel 5.0 → 11 Upgrade Progress
|
||||||
|
|
||||||
|
## Current State (Baseline)
|
||||||
|
- **Laravel Version**: 5.0.*
|
||||||
|
- **PHP Version**: 5.6.40 (container), 7.0 (production Dockerfile)
|
||||||
|
- **Database**: MySQL via PDO
|
||||||
|
- **Branch**: feature/laravel-upgrade
|
||||||
|
|
||||||
|
## Dependencies Audit
|
||||||
|
|
||||||
|
### Core Dependencies
|
||||||
|
- ✅ `laravel/framework`: 5.0.* → Need to upgrade incrementally
|
||||||
|
- ✅ `webpatser/laravel-uuid`: ^2.0 → Compatible through Laravel 8
|
||||||
|
- ⚠️ `netshell/paypal`: dev-master → May need replacement (outdated)
|
||||||
|
- ⚠️ `guzzlehttp/guzzle`: ~5.0 → Need to upgrade to ^7.0
|
||||||
|
- ✅ `google/recaptcha`: ~1.1 → Still maintained
|
||||||
|
- ⚠️ `spatie/laravel-analytics`: ^1.4 → Need to upgrade to ^5.0
|
||||||
|
- ✅ `league/flysystem-sftp`: ^1.0 → Upgrade to ^3.0 for Laravel 9+
|
||||||
|
- ✅ `aws/aws-sdk-php`: ~3.0 → Compatible
|
||||||
|
|
||||||
|
### Custom Middleware Found
|
||||||
|
- `CheckTeamStorePassword` - Custom team store authentication
|
||||||
|
- `IsAdmin` - Admin role check
|
||||||
|
- `IsUser` - Normal user role check
|
||||||
|
- `isAuthorized` - Custom authorization
|
||||||
|
- `Cors` - CORS handling
|
||||||
|
|
||||||
|
### Custom Code Patterns Detected
|
||||||
|
- ✅ `app/helpers.php` - Auto-loaded helper functions (minio_url, minio_image_url)
|
||||||
|
- ✅ Routes in `app/Http/routes.php` (Laravel 5.0 pattern)
|
||||||
|
- ⚠️ Controllers echoing HTML directly (needs refactoring)
|
||||||
|
- ⚠️ Boolean stored as strings ("TRUE"/"FALSE" in database)
|
||||||
|
|
||||||
|
## Upgrade Path
|
||||||
|
|
||||||
|
### Phase 1: Laravel 5.0 → 5.1 (Week 1)
|
||||||
|
- [ ] Update composer.json
|
||||||
|
- [ ] Test route compatibility
|
||||||
|
- [ ] Verify middleware still works
|
||||||
|
- [ ] Test authentication flow
|
||||||
|
|
||||||
|
### Phase 2: Laravel 5.1 → 5.5 LTS (Week 2)
|
||||||
|
- [ ] Move routes to `routes/web.php`
|
||||||
|
- [ ] Update exception handler
|
||||||
|
- [ ] Test all database queries
|
||||||
|
- [ ] Update validation rules
|
||||||
|
|
||||||
|
### Phase 3: PHP 7.0 → 7.4 & Laravel 5.5 → 6.x (Week 3)
|
||||||
|
- [ ] Update Dockerfile to PHP 7.4
|
||||||
|
- [ ] Remove mcrypt dependencies (if any encrypted data)
|
||||||
|
- [ ] Add string/array helpers package
|
||||||
|
- [ ] Test file uploads
|
||||||
|
|
||||||
|
### Phase 4: Laravel 6.x → 8.x (Week 4)
|
||||||
|
- [ ] Update factory syntax
|
||||||
|
- [ ] Test rate limiting
|
||||||
|
- [ ] Verify queue jobs
|
||||||
|
|
||||||
|
### Phase 5: PHP 8.0 & Laravel 8.x → 9.x (Week 5)
|
||||||
|
- [ ] Update Dockerfile to PHP 8.0
|
||||||
|
- [ ] Update Flysystem to v3 (affects MinIO config)
|
||||||
|
- [ ] Test query builder changes
|
||||||
|
|
||||||
|
### Phase 6: Laravel 9.x → 10.x (Week 6)
|
||||||
|
- [ ] Update to PHP 8.1
|
||||||
|
- [ ] Add type declarations where needed
|
||||||
|
- [ ] Test invokable validation rules
|
||||||
|
|
||||||
|
### Phase 7: Laravel 10.x → 11.x (Week 7)
|
||||||
|
- [ ] Update to PHP 8.2
|
||||||
|
- [ ] Test new application skeleton
|
||||||
|
- [ ] Verify all functionality
|
||||||
|
|
||||||
|
## Breaking Changes to Watch
|
||||||
|
|
||||||
|
### Database
|
||||||
|
- Boolean fields stored as strings ("TRUE"/"FALSE") - Need migration
|
||||||
|
- Direct DB facade usage throughout codebase
|
||||||
|
|
||||||
|
### Routes
|
||||||
|
- Controller array syntax in routes will be removed
|
||||||
|
- Need to update to standard controller@method or invokable
|
||||||
|
|
||||||
|
### Middleware
|
||||||
|
- Middleware signature changes in later versions
|
||||||
|
- CSRF token handling updates
|
||||||
|
|
||||||
|
### Views
|
||||||
|
- Blade syntax mostly compatible
|
||||||
|
- PHP in controllers (<?php echo) needs refactoring
|
||||||
|
|
||||||
|
### External Services
|
||||||
|
- PayPal integration (netshell/paypal) may need complete rewrite
|
||||||
|
- Google Analytics package needs major upgrade
|
||||||
|
- Screenshot Node.js service should remain compatible
|
||||||
|
|
||||||
|
## Rollback Plan
|
||||||
|
- Keep master branch untouched
|
||||||
|
- Tag current state: `git tag v5.0-baseline`
|
||||||
|
- Can revert entire branch if needed
|
||||||
|
- Parallel testing environment on port 8090
|
||||||
|
|
||||||
|
## Testing Checklist (After Each Upgrade)
|
||||||
|
- [ ] Homepage loads
|
||||||
|
- [ ] User registration/login works
|
||||||
|
- [ ] Sports category pages render
|
||||||
|
- [ ] Designer tool loads
|
||||||
|
- [ ] Pattern/clipart selection works
|
||||||
|
- [ ] Cart functionality
|
||||||
|
- [ ] Team store pages
|
||||||
|
- [ ] PayPal checkout flow
|
||||||
|
- [ ] Admin panel access
|
||||||
|
- [ ] Image serving from MinIO
|
||||||
|
- [ ] Screenshot generation service
|
||||||
|
- [ ] File uploads work
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
- Current Composer version 1.x - may need to use `composer self-update --1` during transition
|
||||||
|
- AWS SDK already at 3.0, compatible with all Laravel versions
|
||||||
|
- Helper functions (minio_url) should remain compatible
|
||||||
|
- Fabric.js designer tool is front-end only, won't be affected
|
||||||
|
|
||||||
|
## Completed Steps
|
||||||
|
1. ✅ Created feature branch
|
||||||
|
2. ✅ Documented current state
|
||||||
|
3. ⏳ Ready to start first upgrade
|
||||||
@@ -22,11 +22,8 @@ class Handler extends ExceptionHandler {
|
|||||||
* @param \Exception $e
|
* @param \Exception $e
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function report($e)
|
public function report(Exception $e)
|
||||||
{
|
{
|
||||||
if (!$e instanceof Exception) {
|
|
||||||
$e = new \ErrorException($e->getMessage(), $e->getCode(), E_ERROR, $e->getFile(), $e->getLine());
|
|
||||||
}
|
|
||||||
return parent::report($e);
|
return parent::report($e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,14 +31,11 @@ class Handler extends ExceptionHandler {
|
|||||||
* Render an exception into an HTTP response.
|
* Render an exception into an HTTP response.
|
||||||
*
|
*
|
||||||
* @param \Illuminate\Http\Request $request
|
* @param \Illuminate\Http\Request $request
|
||||||
* @param mixed $e
|
* @param \Exception $e
|
||||||
* @return \Illuminate\Http\Response
|
* @return \Illuminate\Http\Response
|
||||||
*/
|
*/
|
||||||
public function render($request, $e)
|
public function render($request, Exception $e)
|
||||||
{
|
{
|
||||||
if (!$e instanceof Exception) {
|
|
||||||
$e = new \ErrorException($e->getMessage(), $e->getCode(), E_ERROR, $e->getFile(), $e->getLine());
|
|
||||||
}
|
|
||||||
return parent::render($request, $e);
|
return parent::render($request, $e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,46 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Support\Facades\Mail;
|
|
||||||
|
|
||||||
class TestEmailController extends Controller
|
|
||||||
{
|
|
||||||
|
|
||||||
public function show()
|
|
||||||
{
|
|
||||||
return view('test-email', ['token' => csrf_token()]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function send(Request $request)
|
|
||||||
{
|
|
||||||
$this->validate($request, [
|
|
||||||
'recipient' => 'required|email',
|
|
||||||
]);
|
|
||||||
|
|
||||||
$recipient = $request->input('recipient');
|
|
||||||
$config = [
|
|
||||||
'driver' => config('mail.driver'),
|
|
||||||
'host' => config('mail.host'),
|
|
||||||
'port' => config('mail.port'),
|
|
||||||
'username' => config('mail.username'),
|
|
||||||
'encryption' => config('mail.encryption'),
|
|
||||||
];
|
|
||||||
|
|
||||||
try {
|
|
||||||
Mail::send('emails.test', ['config' => $config, 'recipient' => $recipient], function ($message) use ($recipient) {
|
|
||||||
$message->from('no-reply@crewsportswear.com', 'CREW Sportswear');
|
|
||||||
$message->to($recipient)->subject('CREW Sportswear — Test Email');
|
|
||||||
});
|
|
||||||
|
|
||||||
$status = 'success';
|
|
||||||
$message = 'Test email sent successfully to ' . $recipient . '.';
|
|
||||||
} catch (\Throwable $e) {
|
|
||||||
$status = 'danger';
|
|
||||||
$message = 'Failed to send email: ' . $e->getMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
return redirect()->back()->with('status', $status)->with('message', $message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -41,10 +41,6 @@ Route::get('cart', ['as' => 'cart', 'uses' => 'teamstore\TeamStoreController@car
|
|||||||
Route::get('/checkout', 'teamstore\TeamStoreController@checkout');
|
Route::get('/checkout', 'teamstore\TeamStoreController@checkout');
|
||||||
Route::get('/mail', 'teamstore\TeamStoreController@mail');
|
Route::get('/mail', 'teamstore\TeamStoreController@mail');
|
||||||
|
|
||||||
// Test email page
|
|
||||||
Route::get('/test-email', 'TestEmailController@show');
|
|
||||||
Route::post('/test-email/send', 'TestEmailController@send');
|
|
||||||
|
|
||||||
Route::get('/designer/{templateid}', 'designer\DesignerController@index');
|
Route::get('/designer/{templateid}', 'designer\DesignerController@index');
|
||||||
|
|
||||||
Route::get('/designer/preview/{designCode}', 'designer\DesignerController@getDesign');
|
Route::get('/designer/preview/{designCode}', 'designer\DesignerController@getDesign');
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ return [
|
|||||||
'port' => 22,
|
'port' => 22,
|
||||||
'username' => 'root',
|
'username' => 'root',
|
||||||
'password' => '',
|
'password' => '',
|
||||||
'privateKey' => '/var/keys/root.ppk',
|
'privateKey' => '/var/www/html/_key/instance2/root.ppk',
|
||||||
'root' => '/var/www/html/images',
|
'root' => '/var/www/html/images',
|
||||||
'timeout' => 10
|
'timeout' => 10
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ return [
|
|||||||
|
|
||||||
'prod_private_server_ip' => env('https://crewsportswear.app', 'https://crewsportswear.app'),
|
'prod_private_server_ip' => env('https://crewsportswear.app', 'https://crewsportswear.app'),
|
||||||
'images_url' => env('https://crewsportswear.app:5955', 'https://crewsportswear.app:5955'),
|
'images_url' => env('https://crewsportswear.app:5955', 'https://crewsportswear.app:5955'),
|
||||||
'minio_url' => env('MINIO_URL', 'https://minio.crewsportswear.app/crewsportswear'),
|
|
||||||
'uploads' => env('https://crewsportswear.com/uploads/images/', 'https://crewsportswear.com/uploads/images/'), // local
|
'uploads' => env('https://crewsportswear.com/uploads/images/', 'https://crewsportswear.com/uploads/images/'), // local
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- ./storage:/var/www/html/storage
|
- ./storage:/var/www/html/storage
|
||||||
- ./public/uploads:/var/www/html/public/uploads
|
- ./public/uploads:/var/www/html/public/uploads
|
||||||
- /var/crew-keys:/var/keys:ro
|
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
# Development environment (dev.crewsportswear.app)
|
# Development environment (dev.crewsportswear.app)
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- ./storage:/var/www/html/storage
|
- ./storage:/var/www/html/storage
|
||||||
- ./public/uploads:/var/www/html/public/uploads
|
- ./public/uploads:/var/www/html/public/uploads
|
||||||
- /var/crew-keys:/var/keys:ro
|
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
# Production environment (crewsportswear.com) - Uses paid SSL certificate
|
# Production environment (crewsportswear.com) - Uses paid SSL certificate
|
||||||
|
|||||||
@@ -407,7 +407,7 @@
|
|||||||
<td align="left" style="width: 180px;">
|
<td align="left" style="width: 180px;">
|
||||||
@foreach($img_thumb as $img)
|
@foreach($img_thumb as $img)
|
||||||
@if($img->ProductId == $item->ProductId)
|
@if($img->ProductId == $item->ProductId)
|
||||||
<img style="height: 200px; overflow: hidden; object-fit: contain;" src="{{ minio_url('images/' . $img->Image) }}">
|
<img style="height: 200px; overflow: hidden; object-fit: contain;" src="{{ config('site_config.images_url') }}/{{ $img->Image }}">
|
||||||
@endif
|
@endif
|
||||||
@endforeach
|
@endforeach
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Test Email — CREW Sportswear</title>
|
|
||||||
</head>
|
|
||||||
<body style="font-family: Arial, sans-serif; color: #333; padding: 20px;">
|
|
||||||
<h2 style="color: #d9534f;">CREW Sportswear — Test Email</h2>
|
|
||||||
<p>This is a test email to verify that the mail configuration is working correctly.</p>
|
|
||||||
<p>Sent to: <strong>{{ $recipient }}</strong></p>
|
|
||||||
<hr>
|
|
||||||
<p style="font-size: 12px; color: #777;">
|
|
||||||
<strong>Mail Config Used:</strong><br>
|
|
||||||
Driver: {{ $config['driver'] }}<br>
|
|
||||||
Host: {{ $config['host'] }}<br>
|
|
||||||
Port: {{ $config['port'] }}<br>
|
|
||||||
Username: {{ $config['username'] }}<br>
|
|
||||||
Encryption: {{ $config['encryption'] }}
|
|
||||||
</p>
|
|
||||||
<hr>
|
|
||||||
<p style="font-size: 12px; color: #aaa;">This is an automated test message from CREW Sportswear.</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -138,7 +138,7 @@
|
|||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
@foreach($img_thumb as $img)
|
@foreach($img_thumb as $img)
|
||||||
@if($img->ProductId == $item->ProductId)
|
@if($img->ProductId == $item->ProductId)
|
||||||
<img class="previewImage" src="{{ minio_url('images/' . $img->Image) }}">
|
<img class="previewImage" src="{{ config('site_config.images_url') }}/{{ $img->Image }}">
|
||||||
@endif
|
@endif
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -64,7 +64,7 @@
|
|||||||
<table class="table">
|
<table class="table">
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="2" class="text-center"><img class="previewImage" src="{{ minio_url('images/' . $item->Image) }}"></td>
|
<td rowspan="2" class="text-center"><img class="previewImage" src="http://{{ config('site_config.images_url') }}/{{ $item->Image }} "></td>
|
||||||
<td colspan="5">
|
<td colspan="5">
|
||||||
<h4>{{ $item->ProductName }} {{ $itemOrder }} <br>Price: ${{ $item->Price }}</h4>
|
<h4>{{ $item->ProductName }} {{ $itemOrder }} <br>Price: ${{ $item->Price }}</h4>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -205,7 +205,7 @@
|
|||||||
<div class="col-md-3 col-sm-6">
|
<div class="col-md-3 col-sm-6">
|
||||||
<span class="thumbnail">
|
<span class="thumbnail">
|
||||||
<a href="{{ url('teamstore') }}/{{ $store_array[0]->StoreUrl }}/product/{{ $product->ProductURL }}">
|
<a href="{{ url('teamstore') }}/{{ $store_array[0]->StoreUrl }}/product/{{ $product->ProductURL }}">
|
||||||
<img style="height: 201.84px;" src="{{ minio_url('images/' . $filename) }}" alt="{{ $product->ProductName }}" >
|
<img style="height: 201.84px;" src="{{ config('site_config.images_url') }}/{{ $filename }}" alt="{{ $product->ProductName }}" >
|
||||||
</a>
|
</a>
|
||||||
<h4 class="text-center product-name-holder">{{ $product->ProductName }}</h4>
|
<h4 class="text-center product-name-holder">{{ $product->ProductName }}</h4>
|
||||||
<hr class="line">
|
<hr class="line">
|
||||||
|
|||||||
@@ -234,13 +234,13 @@
|
|||||||
@if($thumbnail->ImageClass == 'active')
|
@if($thumbnail->ImageClass == 'active')
|
||||||
<div class="active item text-center" data-slide-number="{{ $i }}">
|
<div class="active item text-center" data-slide-number="{{ $i }}">
|
||||||
<span class="zoom img-zoom">
|
<span class="zoom img-zoom">
|
||||||
<img style="height:400px;" src="{{ minio_url('images/' . $thumbnail->Image) }}">
|
<img style="height:400px;" src="{{ config('site_config.images_url') }}/{{ $thumbnail->Image }}">
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@else
|
@else
|
||||||
<div class="item text-center" data-slide-number="{{ $i }}">
|
<div class="item text-center" data-slide-number="{{ $i }}">
|
||||||
<span class="zoom img-zoom">
|
<span class="zoom img-zoom">
|
||||||
<img style="height:400px;" src="{{ minio_url('images/' . $thumbnail->Image) }}">
|
<img style="height:400px;" src="{{ config('site_config.images_url') }}/{{ $thumbnail->Image }}">
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
@@ -269,7 +269,7 @@
|
|||||||
@foreach($thumbnails_array as $thumbnail)
|
@foreach($thumbnails_array as $thumbnail)
|
||||||
<li class="col-sm-3 col-xs-3">
|
<li class="col-sm-3 col-xs-3">
|
||||||
<a class="thumbnail a_thumbnail {{ $thumbnail->ImageClass }}" id="carousel-selector-{{ $j }}">
|
<a class="thumbnail a_thumbnail {{ $thumbnail->ImageClass }}" id="carousel-selector-{{ $j }}">
|
||||||
<img class="img img-responsive product-center image-thumbnails" style="height: 59.45px;" src="{{ minio_url('images/' . $thumbnail->Image) }}"/>
|
<img class="img img-responsive product-center image-thumbnails" style="height: 59.45px;" src="{{ config('site_config.images_url') }}/{{ $thumbnail->Image }}"/>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@define $j++
|
@define $j++
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
@extends('layout.main')
|
|
||||||
|
|
||||||
@section('content')
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-6 col-md-offset-3" style="margin-top: 40px; margin-bottom: 40px;">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<h3 class="panel-title"><strong>Send Test Email</strong></h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
|
|
||||||
@if (session('message'))
|
|
||||||
<div class="alert alert-{{ session('status') }} alert-dismissible" role="alert">
|
|
||||||
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
|
|
||||||
<span aria-hidden="true">×</span>
|
|
||||||
</button>
|
|
||||||
{{ session('message') }}
|
|
||||||
</div>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
<!-- Mail Config Info -->
|
|
||||||
<div class="well well-sm" style="font-size: 12px;">
|
|
||||||
<strong>Current Mail Config</strong><br>
|
|
||||||
Driver: <code>{{ config('mail.driver') ?: '(not set)' }}</code><br>
|
|
||||||
Host: <code>{{ config('mail.host') ?: '(not set)' }}</code><br>
|
|
||||||
Port: <code>{{ config('mail.port') ?: '(not set)' }}</code><br>
|
|
||||||
Username: <code>{{ config('mail.username') ?: '(not set)' }}</code><br>
|
|
||||||
Encryption: <code>{{ config('mail.encryption') ?: '(not set)' }}</code>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<form method="POST" action="{{ url('test-email/send') }}">
|
|
||||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
|
||||||
<input type="hidden" name="token" value="{{ $token }}">
|
|
||||||
<div class="form-group{{ $errors->has('recipient') ? ' has-error' : '' }}">
|
|
||||||
<label for="recipient">Recipient Email</label>
|
|
||||||
<input type="email"
|
|
||||||
name="recipient"
|
|
||||||
id="recipient"
|
|
||||||
class="form-control"
|
|
||||||
placeholder="you@example.com"
|
|
||||||
value="{{ old('recipient') }}"
|
|
||||||
required>
|
|
||||||
@if ($errors->has('recipient'))
|
|
||||||
<span class="help-block">{{ $errors->first('recipient') }}</span>
|
|
||||||
@endif
|
|
||||||
</div>
|
|
||||||
<button type="submit" class="btn btn-primary btn-block">
|
|
||||||
<i class="fa fa-envelope"></i> Send Test Email
|
|
||||||
</button>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@endsection
|
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
@foreach($array_client_designs as $row)
|
@foreach($array_client_designs as $row)
|
||||||
@foreach($array_template_paths as $key => $row1)
|
@foreach($array_template_paths as $key => $row1)
|
||||||
@if($key == 0)
|
@if($key == 0)
|
||||||
<img src="{{ minio_url('images/' . $row->DesignCode . '-front-thumbnail.png') }}" alt="{{ $row->DesignName }}" id="main-thumbnail" class="img img-responsive">
|
<img src="{{ config('site_config.images_url') }}/{{ $row->DesignCode }}-front-thumbnail.png" alt="{{ $row->DesignName }}" id="main-thumbnail" class="img img-responsive">
|
||||||
@endif
|
@endif
|
||||||
@endforeach
|
@endforeach
|
||||||
@endforeach
|
@endforeach
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
@if($key == 0)
|
@if($key == 0)
|
||||||
<li class="col-sm-3 col-xs-3">
|
<li class="col-sm-3 col-xs-3">
|
||||||
<a class="thumbnail a_thumbnail active">
|
<a class="thumbnail a_thumbnail active">
|
||||||
<img class="img img-responsive product-center image-thumbnails" style="height: 59.45px;" src="{{ minio_url('images/' . $row->DesignCode . '-front-thumbnail.png') }}"/>
|
<img class="img img-responsive product-center image-thumbnails" style="height: 59.45px;" src="{{ config('site_config.images_url') }}/{{ $row->DesignCode }}-front-thumbnail.png"/>
|
||||||
</a>
|
</a>
|
||||||
<!-- <p>Select Default Thumbnail:</p>
|
<!-- <p>Select Default Thumbnail:</p>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
@else
|
@else
|
||||||
<li class="col-sm-3 col-xs-3">
|
<li class="col-sm-3 col-xs-3">
|
||||||
<a class="thumbnail a_thumbnail">
|
<a class="thumbnail a_thumbnail">
|
||||||
<img class="img img-responsive product-center image-thumbnails" style="height: 59.45px;" src="{{ minio_url('images/' . $row->DesignCode . '-' . strtolower($row1->Side) . '-thumbnail.png') }}"/>
|
<img class="img img-responsive product-center image-thumbnails" style="height: 59.45px;" src="{{ config('site_config.images_url') }}/{{ $row->DesignCode }}-{{ strtolower($row1->Side) }}-thumbnail.png"/>
|
||||||
</a>
|
</a>
|
||||||
<!-- <p> </p>
|
<!-- <p> </p>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
@foreach($array_client_designs as $row)
|
@foreach($array_client_designs as $row)
|
||||||
<div class="col-md-3 col-sm-6">
|
<div class="col-md-3 col-sm-6">
|
||||||
<span class="thumbnail">
|
<span class="thumbnail">
|
||||||
<img src="{{ minio_url('images/' . $row->DesignCode . '-front-thumbnail.png') }}" alt="{{ $row->DesignName }}" >
|
<img src="{{ config('site_config.images_url') }}/{{ $row->DesignCode }}-front-thumbnail.png" alt="{{ $row->DesignName }}" >
|
||||||
<h4 class="design-name-holder">{{ $row->DesignName }}</h4>
|
<h4 class="design-name-holder">{{ $row->DesignName }}</h4>
|
||||||
<small>{{ date('F j, Y g:i a', strtotime($row->DateCreated)) }}</small>
|
<small>{{ date('F j, Y g:i a', strtotime($row->DateCreated)) }}</small>
|
||||||
<hr class="line">
|
<hr class="line">
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<img class="previewImage" id="active_thumbnail" src="{{ minio_url('images/' . $array_thumbnail_display[0]->Image) }}">
|
<img class="previewImage" id="active_thumbnail" src="{{ config('site_config.images_url') . '/images/' . $array_thumbnail_display[0]->Image }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
|
|||||||
@@ -93,7 +93,7 @@
|
|||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
@foreach($img_thumb as $img)
|
@foreach($img_thumb as $img)
|
||||||
@if($img->ProductId == $item->ProductId)
|
@if($img->ProductId == $item->ProductId)
|
||||||
<img class="previewImage" src="{{ minio_url('images/' . $img->Image) }}">
|
<img class="previewImage" src="{{ config('site_config.images_url') }}/{{ $img->Image }}">
|
||||||
@endif
|
@endif
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
@foreach($array_client_designs as $row)
|
@foreach($array_client_designs as $row)
|
||||||
@foreach($array_template_paths as $key => $row1)
|
@foreach($array_template_paths as $key => $row1)
|
||||||
@if($key == 0)
|
@if($key == 0)
|
||||||
<img src="{{ minio_url('images/' . $row->DesignCode . '-front-thumbnail.png') }}" alt="{{ $row->DesignName }}" id="main-thumbnail" class="img img-responsive">
|
<img src="{{ config('site_config.images_url') }}/{{ $row->DesignCode }}-front-thumbnail.png" alt="{{ $row->DesignName }}" id="main-thumbnail" class="img img-responsive">
|
||||||
@endif
|
@endif
|
||||||
@endforeach
|
@endforeach
|
||||||
@endforeach
|
@endforeach
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
@if($key == 0)
|
@if($key == 0)
|
||||||
<li class="col-sm-3 col-xs-3">
|
<li class="col-sm-3 col-xs-3">
|
||||||
<a class="thumbnail a_thumbnail active">
|
<a class="thumbnail a_thumbnail active">
|
||||||
<img class="img img-responsive product-center image-thumbnails" style="height: 59.45px;" src="{{ minio_url('images/' . $row->DesignCode . '-front-thumbnail.png') }}"/>
|
<img class="img img-responsive product-center image-thumbnails" style="height: 59.45px;" src="{{ config('site_config.images_url') }}/{{ $row->DesignCode }}-front-thumbnail.png"/>
|
||||||
</a>
|
</a>
|
||||||
<!-- <p>Select Default Thumbnail:</p>
|
<!-- <p>Select Default Thumbnail:</p>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
@else
|
@else
|
||||||
<li class="col-sm-3 col-xs-3">
|
<li class="col-sm-3 col-xs-3">
|
||||||
<a class="thumbnail a_thumbnail">
|
<a class="thumbnail a_thumbnail">
|
||||||
<img class="img img-responsive product-center image-thumbnails" style="height: 59.45px;" src="{{ minio_url('images/' . $row->DesignCode . '-' . strtolower($row1->Side) . '-thumbnail.png') }}"/>
|
<img class="img img-responsive product-center image-thumbnails" style="height: 59.45px;" src="{{ config('site_config.images_url') }}/{{ $row->DesignCode }}-{{ strtolower($row1->Side) }}-thumbnail.png"/>
|
||||||
</a>
|
</a>
|
||||||
<!-- <p> </p>
|
<!-- <p> </p>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
<div class="col-md-3 col-sm-6">
|
<div class="col-md-3 col-sm-6">
|
||||||
<div class="thumbnail" >
|
<div class="thumbnail" >
|
||||||
<a href="{{ url('user/store-items/item') }}/{{ $product->ProductURL }}">
|
<a href="{{ url('user/store-items/item') }}/{{ $product->ProductURL }}">
|
||||||
<img style="height:200px" src="{{ minio_url('images/' . $filename) . '?t=' . time() }}" alt="{{ $product->ProductName }}" >
|
<img style="height:200px" src="{{ config('site_config.images_url') }}/{{ $filename . '?t=' . time() }}" alt="{{ $product->ProductName }}" >
|
||||||
</a>
|
</a>
|
||||||
<hr class="line">
|
<hr class="line">
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
|
|||||||
@@ -63,7 +63,7 @@
|
|||||||
<div id="{{ 'order_number_' . $product->Id }}">
|
<div id="{{ 'order_number_' . $product->Id }}">
|
||||||
<div class="thumbnail" >
|
<div class="thumbnail" >
|
||||||
<a href="#">
|
<a href="#">
|
||||||
<img style="height:200px" src="{{ minio_url('images/' . $filename) . '?t=' . time() }}" alt="{{ $product->ProductName }}" >
|
<img style="height:200px" src="{{ config('site_config.images_url') }}/{{ $filename . '?t=' . time() }}" alt="{{ $product->ProductName }}" >
|
||||||
</a>
|
</a>
|
||||||
<hr class="line">
|
<hr class="line">
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
@foreach($array_client_designs as $row)
|
@foreach($array_client_designs as $row)
|
||||||
@foreach($array_template_paths as $key => $row1)
|
@foreach($array_template_paths as $key => $row1)
|
||||||
@if($key == 0)
|
@if($key == 0)
|
||||||
<img src="{{ minio_url('images/' . $row->DesignCode . '-front-thumbnail.png') }}" alt="{{ $row->DesignName }}" id="main-thumbnail" class="img img-responsive">
|
<img src="{{ config('site_config.images_url') }}/{{ $row->DesignCode }}-front-thumbnail.png" alt="{{ $row->DesignName }}" id="main-thumbnail" class="img img-responsive">
|
||||||
@endif
|
@endif
|
||||||
@endforeach
|
@endforeach
|
||||||
@endforeach
|
@endforeach
|
||||||
@@ -53,13 +53,13 @@
|
|||||||
@if($key == 0)
|
@if($key == 0)
|
||||||
<li class="col-sm-3 col-xs-3">
|
<li class="col-sm-3 col-xs-3">
|
||||||
<a class="thumbnail a_thumbnail active">
|
<a class="thumbnail a_thumbnail active">
|
||||||
<img class="img img-responsive product-center image-thumbnails" style="height: 59.45px;" src="{{ minio_url('images/' . $row->DesignCode . '-front-thumbnail.png') }}"/>
|
<img class="img img-responsive product-center image-thumbnails" style="height: 59.45px;" src="{{ config('site_config.images_url') }}/{{ $row->DesignCode }}-front-thumbnail.png"/>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@else
|
@else
|
||||||
<li class="col-sm-3 col-xs-3">
|
<li class="col-sm-3 col-xs-3">
|
||||||
<a class="thumbnail a_thumbnail">
|
<a class="thumbnail a_thumbnail">
|
||||||
<img class="img img-responsive product-center image-thumbnails" style="height: 59.45px;" src="{{ minio_url('images/' . $row->DesignCode . '-' . strtolower($row1->Side) . '-thumbnail.png') }}"/>
|
<img class="img img-responsive product-center image-thumbnails" style="height: 59.45px;" src="{{ config('site_config.images_url') }}/{{ $row->DesignCode }}-{{ strtolower($row1->Side) }}-thumbnail.png"/>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@endif
|
@endif
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
<div class="col-md-12 text-center">
|
<div class="col-md-12 text-center">
|
||||||
@foreach($thumbnails_array as $thumbnail)
|
@foreach($thumbnails_array as $thumbnail)
|
||||||
@if($thumbnail->ImageClass == 'active')
|
@if($thumbnail->ImageClass == 'active')
|
||||||
<img style="height:400px" src="{{ minio_url('images/' . $thumbnail->Image) . '?t=' . time() }}" id="main-thumbnail">
|
<img style="height:400px" src="{{ config('site_config.images_url') }}/{{ $thumbnail->Image . '?t=' . time() }}" id="main-thumbnail">
|
||||||
@endif
|
@endif
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
<li class="col-sm-3 col-xs-4">
|
<li class="col-sm-3 col-xs-4">
|
||||||
<a class="thumbnail a_thumbnail {{ $thumbnail->ImageClass }}" style="border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; margin-bottom: -28px;">
|
<a class="thumbnail a_thumbnail {{ $thumbnail->ImageClass }}" style="border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; margin-bottom: -28px;">
|
||||||
<!-- <span class="close">×</span> -->
|
<!-- <span class="close">×</span> -->
|
||||||
<img class="img img-responsive product-center image-thumbnails" style="height: 59.45px;" src="{{ minio_url('images/' . $thumbnail->Image) . '?t=' . time() }}"/>
|
<img class="img img-responsive product-center image-thumbnails" style="height: 59.45px;" src="{{ config('site_config.images_url') }}/{{ $thumbnail->Image . '?t=' . time() }}"/>
|
||||||
</a>
|
</a>
|
||||||
<div class="funkyradio">
|
<div class="funkyradio">
|
||||||
<div class="funkyradio-primary">
|
<div class="funkyradio-primary">
|
||||||
@@ -200,7 +200,7 @@
|
|||||||
|
|
||||||
<tr id="{{ 'item-' . $thumbnail->Id }}">
|
<tr id="{{ 'item-' . $thumbnail->Id }}">
|
||||||
<td class="text-center" style="width: 50px"><i class="fa fa-bars"></i></td>
|
<td class="text-center" style="width: 50px"><i class="fa fa-bars"></i></td>
|
||||||
<td><img class="img img-responsive product-center" style="height: 59.45px;" src="{{ minio_url('images/' . $thumbnail->Image) . '?t=' . time() }}"/></td>
|
<td><img class="img img-responsive product-center" style="height: 59.45px;" src="{{ config('site_config.images_url') }}/{{ $thumbnail->Image . '?t=' . time() }}"/></td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<!-- <button class="btn btn-default btn-xs btn-edit-clipart" data-id="#"><i class="fa fa-edit"></i></button> -->
|
<!-- <button class="btn btn-default btn-xs btn-edit-clipart" data-id="#"><i class="fa fa-edit"></i></button> -->
|
||||||
<button class="btn btn-default btn-sm btn-delete-item-image" data-id="{{ $thumbnail->Id }}" data-filename="{{ $thumbnail->Image }}" title="Delete Image"><i class="fa fa-trash"></i></button>
|
<button class="btn btn-default btn-sm btn-delete-item-image" data-id="{{ $thumbnail->Id }}" data-filename="{{ $thumbnail->Image }}" title="Delete Image"><i class="fa fa-trash"></i></button>
|
||||||
|
|||||||
Reference in New Issue
Block a user