هذا هو تطبيق ويب لارافيل لمشاريع التعهيد الجماعي والاستبيانات.
.env.envيتضمن تقديم الرمز تحت تراخيص المصادر المفتوحة العديد من الفوائد. من هؤلاء ، الأشخاص المتعلقون بمشروعنا ، هم:
التثبيت الرسمي ECAS
تفكيك التثبيت الرسمي
تم تقسيم تعليمات الإعداد إلى قسمين من أجل الوضوح:
بغض النظر عن طريقة التثبيت ، ستحتاج إلى تشغيل الأوامر التالية لإعداد التطبيق.
يجب تشغيل هذه الأوامر خارج أي حاوية Docker:
sudo chown -R ` whoami ` :www-data storage
chmod 775 storage
cd storage/
find . -type f -exec chmod 664 {} ;
find . -type d -exec chmod 775 {} ;اعتمادًا على طريقة التثبيت ، يجب عليك تشغيل بقية الخطوات سواء في حاوية Docker أو على جهازك المحلي.
ملاحظة: إذا كنت تستخدم Docker Compose ، فستحتاج أولاً إلى إدخال حاوية PHP:
docker exec -it crowdsourcing_platform_server bashثم قم بتشغيل بقية الأوامر.
إذا كنت تقوم بتشغيل الأوامر على جهازك المحلي ، فيمكنك تشغيل الأوامر التالية مباشرة.
إذا كنت قد بدأت DDEV ، فيجب عليك تشغيل جميع الأوامر المسبقة باستخدام ddev exec .
.envبعد استنساخ المشروع ، قم بإنشاء ملف .env (يجب أن يكون نسخة من .env.example):
cp .env.example .envفي حالة التثبيت غير القوي ، ستحتاج إلى إنشاء قاعدة بيانات للتطبيق.
في حالة وجود بيئة Docker ، أدخل حاوية crowdsourcing_platform_db ، وقم بإنشاء قاعدة بيانات تسمى crowdsourcing_db_docker :
docker exec -it crowdsourcing_platform_db bashأدخل قذيفة MySQL:
mysql -u root -pثم ، قم بتشغيل أمر MySQL التالي:
CREATE DATABASE IF NOT EXISTS crowdsourcing_db_docker;أولاً ستحتاج إلى إدخال حاوية DB:
docker exec -it crowdsourcing_platform_db bashإذا كان لديك ملف MySQL Dump موجود ، فتأكد من وجوده في الدليل الحالي ، واستيراده إلى قاعدة البيانات:
mysql -u root -p crowdsourcing_db_docker < dump.sql ثم ، أضف ما يلي إلى ملف .env :
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=crowdsourcing_db_docker
DB_USERNAME=root
DB_PASSWORD=rootملاحظة: إذا كنت تستخدم Docker Compose ، فستحتاج أولاً إلى إدخال حاوية الخادم :
docker exec -it crowdsourcing_platform_server bashphp artisan migratephp artisan db:seedأدخل حاوية PHP (إذا كنت تستخدم Docker Compose):
docker exec -it crowdsourcing_platform_server bashثم ، قم بتشغيل الأوامر التالية:
composer install
composer dump-autoloadphp artisan key:generatenpm install
npm run dev # (if in development mode, use for live changes)
npm run build # (if in development mode)
npm run prod # (if in production mode)بشكل افتراضي ، يتم تخزين الصور في التطبيق/التخزين/العام. يجري
php artisan storage:link.env ثم استمر في إعدادات .env إلى ذاكرة التخزين المؤقت لارافيل:
php artisan config:cacheمن أجل ربط هذا المجلد بالدليل العام
يستخدم هذا التطبيق المكون الإضافي Socialite Laravel للتعامل مع تسجيل الدخول الاجتماعي.
من أجل تشغيلها في بيئة التطوير الخاصة بك ، تحتاج إلى التأكد من أن لديك مفاتيح و API وأسرار لـ Facebook و Twitter (أدلة هنا وهنا) ، ويمكنك الوصول إلى https: //dev.crowdsourcing/ (لاحظ https) على جهازك.
يمكن العثور على دليل لتمكين HTTPs على جهازك المحلي هنا.
في الأساس ، تحتاج إلى الجري
openssl req -new -sha256 -newkey rsa:2048 -nodes
-keyout dev.crowdsourcing.key -x509 -days 365
-out dev.crowdsourcing.crtمرجع الملفات التي تم إنشاؤها في ملف تكوين NGINX للتطبيق. تأكد من تغيير المنفذ إلى 443 كما هو موضح أدناه:
server {
listen 443 ssl;
server_name dev.crowdsourcing;
ssl_certificate /path/to/dev.crowdsourcing.crt;
ssl_certificate_key /path/to/dev.crowdsourcing.key;
root /var/www/crowdsourcing/public;
add_header X-Frame-Options "SAMEORIGIN" ;
add_header X-XSS-Protection "1; mode=block" ;
add_header X-Content-Type-Options "nosniff" ;
index index.php index.html index.htm index.nginx-debian.html;
charset utf-8;
location / {
try_files $uri $uri / /index.php? $query_string ;
}
location = /favicon.ico { access_log off ; log_not_found off ; }
location = /robots.txt { access_log off ; log_not_found off ; }
error_page 404 /index.php;
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
}
location ~ /.ht {
deny all ;
}
}تأكد أيضًا من إعادة تشغيل Nginx ، عن طريق التشغيل
sudo systemctl restart nginx يستخدم هذا التطبيق المكوّن الإضافي spatie - laravel sitemap ، من أجل إنشاء ملف public/sitemap.xml (الذي يتم استبعاده من GIT) ، والذي سيتم الزحف بواسطة محركات البحث. من أجل تشغيل المولد لتثبيت التطبيق الحالي ، قم بتشغيل أمر laravel المضمن:
php artisan sitemap:generateيستخدم هذا التطبيق Laravel Pint من أجل تنفيذ نمط الرمز.
من أجل تشغيل Styler ، قم بتشغيل:
./vendor/bin/pint --test -v # the --test will not do any changes, it will just output the changes needed
./vendor/bin/pint -v # this command will actually perform the code style changes يستخدم هذا التطبيق Eslint و أجمل من أجل تنفيذ نمط الرمز.
من أجل تشغيل Styler & Formatter ، قم بتشغيل:
npm run lint # this command will check the code style
npm run format # this command will format the code style يستخدم هذا المشروع قالب AdminLte المجاني.
كما أنه يستخدم bootstrap 4
يمكن تعديل التطبيق وتخصيصه لكل تثبيت. في ملف .env يمكنك تعيين متغير INSTALLATION_RESOURCES_DIR وفقًا لذلك. يجب أن يأخذ هذا المتغير قيمة تمثل اسم الدليل في دليل resourcess/views/home/partials . على سبيل المثال ، راجع دليل resourcess/views/home/partials/together . يجب أن يحتوي هذا الدليل على ملفات شفرة جزئية للتثبيت.
يصف هذا الجزء من الوثائق بنية دليل تطبيق Laravel.
في الغالب يتم تحديدها إلى الدلائل والملفات المخصصة المستخدمة في التطبيق. بالنسبة لهيكل دليل Laravel العام ، يرجى الرجوع إلى الوثائق الرسمية.
├── app # Laravel application directory
│ ├── BusinessLogicLayer # Business Logic Layer classes (services that contain the business logic and delegate from Controllers towards the Data Access Layer)
│ ├── Http/Controllers # Controllers directory (classes that handle the HTTP requests, perform the necessary validations/operations and return the responses)
│ ├── Http/Middleware # Middleware directory (classes that handle the HTTP requests before they reach the Controllers)
│ ├── Models # Models directory (ORM classes that represent the database tables and contain the relationships between them)
│ ├── Notifications # Notifications directory (classes that handle the notifications, like emails)
│ ├── ViewModels # View Models directory (classes that contain the data that will be passed to the views)
│ ├── Repository # Repository directory (classes that handle the database operations and contain the DB/ORM queries)
│ resources # Resources directory (contains the views, assets, front-end files, and other resources)
│ ├── views # Views directory (contains the blade files that are used to render the HTML)
│ ├── assets # Assets directory (contains the front-end assets like CSS, JS, images, etc.)
│ ├── js # JavaScript files (contains the Vue.js components and other JS files)
│ ├── sass # SASS files (contains the SASS files that are compiled to CSS)
│ ├── lang # Language files (contains the language files for the translations)
يستخدم التطبيق نمط المستودع لفصل منطق العمل عن منطق الوصول إلى البيانات.
تتم معالجة جميع عمليات قاعدة البيانات بواسطة فئات المستودع ، والتي تحتوي على استعلامات DB/ORM.
توجد هذه الفئات في دليل app/Repository ، وكلها تمدد فئة app/Repository/Repository .
يمثل كل فئة طفل جدول/كيان قاعدة بيانات ويحتوي على استعلامات لهذا الجدول. يتم تعريف هذا الكيان في دليل app/Models ، ويتم الإشارة إليه من قبل فئة مستودع الطفل ، في طريقة getModelClassName .
لذلك ، يمكننا استخدام الأساليب الأساسية التي يتم تعريفها في فئة Repository ، مثل getAll ، getById ، create ، update ، دون الحاجة إلى كتابة نفس الاستعلامات في كل فئة من الأطفال. يمكننا أيضًا تحديد الاستعلامات المخصصة في فصول الطفل ، أو تجاوز الأساليب الأساسية إذا لزم الأمر.
يتم استخدام فئات المستودعات من قبل فئات طبقة منطق الأعمال ، والتي تحتوي على منطق العمل وتفوضها من وحدات التحكم نحو طبقة الوصول إلى البيانات.
يمكن العثور على مزيد من المعلومات حول نمط المستودع هنا.
تأكد من قيامك بمسح أي ملفات ذاكرة التخزين المؤقت والتكوين:
php artisan cache:clear
php artisan config:clearقم بإنشاء ملف قاعدة بيانات الاختبار:
touch storage/database_testing.sqliteأعط الأذونات اللازمة لملف قاعدة بيانات الاختبار:
chmod 777 storage/database_testing.sqliteثم ، تأكد من إعداد قاعدة بيانات الاختبار:
قم بتشغيل الترحيل والبذور لقاعدة بيانات الاختبار:
php artisan migrate:fresh --seed --env=testing --database=sqlite_testingphp artisan test يمكنك إجراء الاختبارات باستخدام أمر php artisan test ، وهو أمر laravel مدمج.
وأخيرا ، قم بإجراء الاختبارات:
# Note that you filter the tests by using the --filter flag (without the = sign)
php artisan test --env=testing --filter {METHOD OR CLASS NAME} --coveragerun-tests.sh يمكنك أيضًا إجراء الاختبارات باستخدام البرنامج النصي run-tests.sh ، وهو غلاف حول الأمر phpunit.
chmod +x run-tests.sh
./run-tests.sh يمكن أن يأخذ هذا أيضًا أي وسيطات (مثل --filter أو --coverage ) التي ستنتقلها إلى أمر phpunit.
./run-tests.sh --filter {METHOD OR CLASS NAME}أو
./run-tests.sh --coverageباستخدام Docker Compose ، يمكنك تصحيح التطبيق باتباع هذه الخطوات:
docker compose up لبدء الحاويات..vscode/launch.json مع المحتويات التالية: {
"version" : " 0.2.0 " ,
"configurations" : [
{
"name" : " Listen for Xdebug " ,
"type" : " php " ,
"request" : " launch " ,
"port" : 9003 ,
"pathMappings" : {
"/var/www" : " ${workspaceFolder} "
},
"log" : true
}
]
}الآن يمكنك بدء تصحيح التطبيق الخاص بك.
لتصحيح الاختبارات:
docker exec -it crowdsourcing_platform_server bash للدخول إلى حاوية PHP.php artisan app:test --filter {METHOD OR CLASS NAME} . على سبيل المثال php artisan app:test --filter authenticatedNonAdminUserCannotAccessCreatePage . إذا واجهت أي مشكلات ، راجع الخطوات التالية:
docker compose logssystemctl status nginx و systemctl status php-fpmstorage/logs/laravel.log.env الخاص بك يحتوي على بيانات اعتماد قاعدة البيانات الصحيحةsystemctl status mysqlnginx -t للمساهمة في التطبيق ، اتبع هذه الخطوات:
git checkout -b <branch_name> .git commit -m '<commit_message>'git push origin <project_name>/<location>هذا المشروع هو برنامج مفتوح المصادر مرخصة بموجب ترخيص Apache ، الإصدار 2.0.
تم تطوير هذا المشروع عن طريق Scify و ECAs ويستند إلى إطار Laravel. يتم الحفاظ على المشروع عن طريق Scify.
بعض الصور المستخدمة في التطبيق من Freepik.
لا تتردد في الاتصال بالمشروع المشاريع: