Skip to content

Commit a318aed

Browse files
authored
Merge pull request #182 from KalimeroMK/master
Add comprehensive tests and update README with new features
2 parents 962c909 + 7420329 commit a318aed

39 files changed

+3420
-225
lines changed

FEATURES.md

Lines changed: 256 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,256 @@
1+
# Laravel Logger - Ново фичиња
2+
3+
## 📅 Филтрирање по датум
4+
5+
### Опис
6+
7+
Додадено е филтрирање по датумски опсег за подобро управување со активностите.
8+
9+
### Користење
10+
11+
#### 1. Филтрирање по датумски опсег
12+
13+
```php
14+
// Во контролерот
15+
$activities = Activity::whereDate('created_at', '>=', '2024-01-01')
16+
->whereDate('created_at', '<=', '2024-12-31')
17+
->get();
18+
```
19+
20+
#### 2. Преддефинирани периоди
21+
22+
- `today` - Денес
23+
- `yesterday` - Вчера
24+
- `last_7_days` - Последни 7 денови
25+
- `last_30_days` - Последни 30 денови
26+
- `last_3_months` - Последни 3 месеци
27+
- `last_6_months` - Последни 6 месеци
28+
- `last_year` - Последна година
29+
30+
#### 3. URL параметри
31+
32+
```
33+
/activity?date_from=2024-01-01&date_to=2024-12-31
34+
/activity?period=last_7_days
35+
```
36+
37+
### Конфигурација
38+
39+
```php
40+
// config/laravel-logger.php
41+
'enableDateFiltering' => env('LARAVEL_LOGGER_ENABLE_DATE_FILTERING', true),
42+
```
43+
44+
## 📊 Експорт функционалност
45+
46+
### Опис
47+
48+
Додадена е функционалност за експорт на активности во различни формати.
49+
50+
### Поддржани формати
51+
52+
#### 1. CSV експорт
53+
54+
```php
55+
// URL
56+
/activity/export?format=csv
57+
58+
// Метод
59+
public function exportToCsv($activities)
60+
{
61+
$filename = 'activity_log_' . now()->format('Y-m-d_H-i-s') . '.csv';
62+
// ... имплементација
63+
}
64+
```
65+
66+
#### 2. JSON експорт
67+
68+
```php
69+
// URL
70+
/activity/export?format=json
71+
72+
// Метод
73+
public function exportToJson($activities)
74+
{
75+
$filename = 'activity_log_' . now()->format('Y-m-d_H-i-s') . '.json';
76+
// ... имплементација
77+
}
78+
```
79+
80+
#### 3. Excel експорт
81+
82+
```php
83+
// URL
84+
/activity/export?format=excel
85+
86+
// Метод
87+
public function exportToExcel($activities)
88+
{
89+
$filename = 'activity_log_' . now()->format('Y-m-d_H-i-s') . '.xlsx';
90+
// ... имплементација
91+
}
92+
```
93+
94+
### Користење со филтри
95+
96+
```php
97+
// Експорт со филтри
98+
/activity/export?format=csv&date_from=2024-01-01&date_to=2024-12-31
99+
/activity/export?format=json&period=last_7_days&user=123
100+
```
101+
102+
### Конфигурација
103+
104+
```php
105+
// config/laravel-logger.php
106+
'enableExport' => env('LARAVEL_LOGGER_ENABLE_EXPORT', true),
107+
```
108+
109+
## 🎨 Frontend интеграција
110+
111+
### Blade template пример
112+
113+
```blade
114+
{{-- Додај го во activity-log.blade.php --}}
115+
@include('LaravelLogger::partials.filter-export-form')
116+
```
117+
118+
### JavaScript за динамично филтрирање
119+
120+
```javascript
121+
// Додај го во scripts.blade.php
122+
document.getElementById("period").addEventListener("change", function () {
123+
if (this.value) {
124+
document.getElementById("date_from").value = "";
125+
document.getElementById("date_to").value = "";
126+
}
127+
});
128+
```
129+
130+
## 🔧 API употреба
131+
132+
### Експорт преку API
133+
134+
```php
135+
// Во контролерот
136+
public function exportActivityLog(Request $request)
137+
{
138+
$format = $request->get('format', 'csv');
139+
$activities = Activity::orderBy('created_at', 'desc');
140+
141+
// Примени филтри
142+
if (config('LaravelLogger.enableDateFiltering')) {
143+
$activities = $this->applyDateFilter($activities, $request);
144+
}
145+
146+
// Експорт
147+
switch ($format) {
148+
case 'csv':
149+
return $this->exportToCsv($activities->get());
150+
case 'json':
151+
return $this->exportToJson($activities->get());
152+
case 'excel':
153+
return $this->exportToExcel($activities->get());
154+
}
155+
}
156+
```
157+
158+
## 📝 Рути
159+
160+
### Нови рути
161+
162+
```php
163+
// routes/web.php
164+
Route::get('/export', ['uses' => 'LaravelLoggerController@exportActivityLog'])->name('export-activity');
165+
```
166+
167+
## 🌐 Преводи
168+
169+
### Англиски (en)
170+
171+
```php
172+
// resources/lang/en/laravel-logger.php
173+
'filterAndExport' => 'Filter and Export',
174+
'fromDate' => 'From Date',
175+
'toDate' => 'To Date',
176+
'exportCSV' => 'Export CSV',
177+
'exportJSON' => 'Export JSON',
178+
'exportExcel' => 'Export Excel',
179+
// ... повеќе преводи
180+
```
181+
182+
## 🚀 Инсталација и употреба
183+
184+
### 1. Инсталирај го пакетот
185+
186+
```bash
187+
composer require jeremykenedy/laravel-logger
188+
```
189+
190+
### 2. Публикувај ги конфигурациите
191+
192+
```bash
193+
php artisan vendor:publish --provider="jeremykenedy\LaravelLogger\LaravelLoggerServiceProvider"
194+
```
195+
196+
### 3. Додај ги рутите
197+
198+
```php
199+
// routes/web.php
200+
Route::group(['middleware' => ['web', 'auth']], function () {
201+
// Додај ги Laravel Logger рутите
202+
});
203+
```
204+
205+
### 4. Користи го во Blade
206+
207+
```blade
208+
{{-- Во твојот layout --}}
209+
@include('LaravelLogger::partials.filter-export-form')
210+
```
211+
212+
## 🔍 Пример за користење
213+
214+
### Филтрирање и експорт
215+
216+
```php
217+
// Во контролерот
218+
public function getFilteredActivities(Request $request)
219+
{
220+
$activities = Activity::orderBy('created_at', 'desc');
221+
222+
// Примени филтри
223+
if ($request->filled('date_from')) {
224+
$activities->whereDate('created_at', '>=', $request->get('date_from'));
225+
}
226+
227+
if ($request->filled('period')) {
228+
switch ($request->get('period')) {
229+
case 'last_7_days':
230+
$activities->where('created_at', '>=', now()->subDays(7));
231+
break;
232+
// ... повеќе случаи
233+
}
234+
}
235+
236+
return $activities->get();
237+
}
238+
```
239+
240+
## 📊 Статистики
241+
242+
### Број на активности по период
243+
244+
```php
245+
$todayCount = Activity::whereDate('created_at', today())->count();
246+
$weekCount = Activity::where('created_at', '>=', now()->subDays(7))->count();
247+
$monthCount = Activity::where('created_at', '>=', now()->subDays(30))->count();
248+
```
249+
250+
## 🎯 Предности
251+
252+
1. **Подобрена перформанса** - Филтрирање на ниво на база на податоци
253+
2. **Флексибилност** - Поддршка за различни формати на експорт
254+
3. **Корисничко искуство** - Интуитивен интерфејс за филтрирање
255+
4. **Скалабилност** - Ефикасно управување со големи количини на податоци
256+
5. **Интеграција** - Лесна интеграција со постоечки системи

LARAVEL9_LANG_FIX.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# Laravel 9+ Language Directory Fix
2+
3+
## Problem
4+
In Laravel 9+, the default language directory has moved from `/resources/lang` to `/lang`. The Laravel Logger package was still using the old structure, which could cause confusion and conflicts.
5+
6+
## Solution
7+
Updated the package to support both Laravel 9+ and older versions:
8+
9+
### Changes Made:
10+
11+
1. **Moved language files** from `/src/resources/lang/` to `/src/lang/`
12+
2. **Updated ServiceProvider** to detect and use the appropriate structure
13+
3. **Added backward compatibility** for older Laravel versions
14+
4. **Updated publish commands** to support both structures
15+
16+
### ServiceProvider Updates:
17+
18+
```php
19+
// Load translations from new Laravel 9+ structure if available, fallback to old structure
20+
if (is_dir(__DIR__.'/lang/')) {
21+
$this->loadTranslationsFrom(__DIR__.'/lang/', 'LaravelLogger');
22+
} else {
23+
$this->loadTranslationsFrom(__DIR__.'/resources/lang/', 'LaravelLogger');
24+
}
25+
```
26+
27+
### Publishing Updates:
28+
29+
```php
30+
// Publish language files to Laravel 9+ structure if available, fallback to old structure
31+
if (is_dir(__DIR__.'/lang/')) {
32+
// Laravel 9+ structure
33+
$this->publishes([
34+
__DIR__.'/lang' => base_path('lang/vendor/'.$publishTag),
35+
], $publishTag);
36+
37+
// Also publish to old structure for backward compatibility
38+
$this->publishes([
39+
__DIR__.'/lang' => base_path('resources/lang/vendor/'.$publishTag),
40+
], $publishTag.'-legacy');
41+
} else {
42+
// Old structure fallback
43+
$this->publishes([
44+
__DIR__.'/resources/lang' => base_path('resources/lang/vendor/'.$publishTag),
45+
], $publishTag);
46+
}
47+
```
48+
49+
## Benefits:
50+
51+
-**Laravel 9+ Compatible** - Uses new `/lang` directory structure
52+
-**Backward Compatible** - Still works with older Laravel versions
53+
-**No Breaking Changes** - Existing installations continue to work
54+
-**Future Proof** - Ready for Laravel 10+ and beyond
55+
56+
## Usage:
57+
58+
### Laravel 9+ Projects:
59+
```bash
60+
php artisan vendor:publish --tag=LaravelLogger
61+
# Language files will be published to /lang/vendor/LaravelLogger/
62+
```
63+
64+
### Legacy Laravel Projects:
65+
```bash
66+
php artisan vendor:publish --tag=LaravelLogger-legacy
67+
# Language files will be published to /resources/lang/vendor/LaravelLogger/
68+
```
69+
70+
## References:
71+
- [Laravel 9 Language Directory Change](https://laravel.com/docs/9.x/upgrade#language-directory)
72+
- [GitHub Issue #151](https://github.com/jeremykenedy/laravel-logger/issues/151)
73+
- [Stack Overflow Discussion](https://stackoverflow.com/questions/71084830/laravel-9-app-upgraded-from-8-lang-directory-not-working-as-expected)

0 commit comments

Comments
 (0)