WP Manifestindependent plugin directory
manifest / admin / persian-project-management-wordpress-plugin

Persian Project Management

افزونه مدیریت پروژه فارسی برای وردپرس — پروژه، وظیفه، کانبان، تقویم جلالی و داشبورد شاخص‌ها داخل پیشخوان. Persian-first WordPress project management plugin.

by Alireza Aminzadeh · github.com/alireza-aminzadeh/persian-project-management-wordpress-plugin · website

0stars
0forks

Install

The author publishes release zips, so WP-CLI can install straight from GitHub:

wp plugin install https://github.com/alireza-aminzadeh/persian-project-management-wordpress-plugin/releases/download/v2.1.0/persian-project-management.2.1.0.zip

Persian Project Management

Persian Project Management — RTL-first WordPress plugin with projects, tasks, Kanban, and Jalali calendar

Persian Project Management

Persian-first project management for WordPress — projects, tasks, a Trello-style Kanban board, a Jalali/Gregorian work calendar, KPI charts, and CSV export, entirely inside wp-admin.

مدیریت پروژهٔ فارسی برای وردپرس — پروژه، وظیفه، بورد کانبان، تقویم کاری شمسی/میلادی، داشبورد شاخص‌ها و خروجی CSV، همگی داخل پیشخوان.

Repository github.com/alireza-aminzadeh/persian-project-management-wordpress-plugin
Author Alireza Aminzadeh
WordPress.org copy readme.txt (plugin directory header, tags, FAQ)
Directory graphics .wordpress-org/ — WordPress.org /assets icons & banners; GitHub social card: docs/social-preview.png
License GPL-2.0-or-later
Requires WordPress 6.2+, PHP 7.4+
Current version 2.1.0

Who it is for: Persian/Farsi teams that want lightweight PM without leaving WordPress — RTL layout, Vazirmatn typography, Jalali pickers, Saturday-first calendar week — while dates stay Gregorian Y-m-d in the database for APIs and exports.

What it is not: There is no frontend UI, no shortcodes, and no Gutenberg blocks. Team and Reports admin menus are placeholders for later releases.

Table of contents / فهرست

English: Overview · Dashboard · Projects · Tasks · Kanban · Calendar · Settings · Security · Data · Hooks · FAQ · Privacy · Installation

فارسی: معرفی · داشبورد · پروژه‌ها · وظایف · کانبان · تقویم · تنظیمات · امنیت · داده · سوالات متداول · حریم خصوصی · نصب

Overview & features (English)

Persian Project Management is a WordPress plugin that adds a Persian-first, RTL-oriented project workspace entirely inside wp-admin. It is aimed at teams that want lightweight PM (projects, tasks, deadlines, and a shared board) without leaving WordPress, with strings and layout tuned for Persian/Farsi users.

Data model: Projects and tasks live in custom tables (wp_ppm_projects, wp_ppm_tasks with your table prefix), not in posts—so lists stay fast and the schema stays explicit. Schema migrations run on plugins_loaded via an internal ppm_db_version flag and dbDelta.

Admin UX: The plugin ships RTL layouts, the Vazirmatn web font (bundled), scoped CSS under plugin wrappers, optional per-screen background colors, and a configurable primary sidebar (show/hide per screen) plus optional logo, organization name, and tagline in the header.

Top-level menu (مدیریت پروژه): Dashboard → Projects → Team (placeholder) → Tasks/Kanban → Work calendar → Reports (placeholder) → Settings. Hidden items (linked from the UI): New project, Edit project, and the Tasks list (capability-gated). The WordPress admin menu uses dashicons-networking, position 26, with Dashicon prefixes on submenu labels.

Persian calendar stack: Project create/edit flows and the work calendar use bundled persian-date and JalaliDatePicker where dates are picked or displayed in Jalali; the backend stores Gregorian Y-m-d for consistency.

Third-party assets (bundled in assets/vendor/): Vazirmatn, Chart.js 4.4.1 (dashboard charts only), Persian Date, JalaliDatePicker—loaded only on relevant screens. No remote CDN.

Asset loading: Plugin CSS/JS enqueue only on PPM admin screens (cache-bust via filemtime). A small admin-menu stylesheet loads for users with ppm_view_projects so submenu Dashicons size correctly. wp_enqueue_media() runs on settings, new-project, and project-edit when the user may manage projects.

Summary table

Area What you get
Projects CRUD, archive, delete (with nonce), list table with search/filter/sort/pagination, bulk archive, CSV export, extended meta_json (team, 5 phases, colors, logo, file attachments)
Projects UI Grid + list toggle (remembered in localStorage), KPI strip, deadline alerts, #PRJ-xxx cards, progress stepper, copy edit link
Tasks Per-project lists, open/closed, Kanban column key, optional due date, quick-add, close/delete, pagination
Kanban One cross-project board, up to 12 configurable columns, drag-and-drop (jquery-ui-sortable), quick add, card modal, AJAX move/save/delete
Notebook New-project wizard (create or save draft), archived projects browser, team/resources directory
Calendar Merged project ranges + task due dates; filters by type and project; Jalali/Gregorian toggle; REST GET /wp-json/ppm/v1/calendar-events and wp_ajax_ppm_calendar_events fallback
Appearance Brand banner + sidebar logo, per-screen colors, Kanban backdrop (color, image, optional overlay)
Security Capabilities ppm_manage_projects, ppm_view_projects, ppm_manage_tasks; nonces on forms and AJAX
Extensibility Filter ppm_projects_total_budget_display for dashboard/list budget card text
Scope Admin-only (no shortcodes/blocks/frontend). Team and Reports menus are placeholders

Admin experience & appearance

  • RTL layout and Persian strings across plugin screens (text domain: persian-project-management).
  • Primary sidebar navigation on supported screens; each screen can show or hide the sidebar from Settings → Sidebar.
  • Branding: optional custom logo (media library), organization name, and tagline in the header; falls back to site title / WordPress branding when empty.
  • Per-screen background colors for #wpbody-content on whitelisted admin pages (Settings → Screens).
  • Team Kanban backdrop: optional solid color and/or background image from the media library (Settings → Kanban).
  • Brand banner (logo + organization name + optional tagline) on dashboard, lists, Kanban, calendar, settings, placeholders, and project screens.
  • Logo fallback chain: custom attachment → Site Icon → core WordPress w-logo-blue.png.
  • Company name max 120 characters; tagline max 220. Empty name uses bloginfo('name').
  • Settings UI uses ARIA tabs; viewers can open Settings, but saving requires ppm_manage_projects.
  • Hex colors are sanitized (#RRGGBB); optional HTML color picker plus text field.

Dashboard

  • User strip: display name and WordPress role label.
  • Quick project search in the top bar (submits to the projects list).
  • Hero shortcuts to projects list, tasks list, new project (if allowed), and team Kanban.
  • KPI cards: all projects (including archived), active projects with “created this month”, overdue projects (past end date), active projects without an owner, and a budget / spend summary card (integrators can supply a value via the ppm_projects_total_budget_display filter).
  • Deadline alerts for projects ending within the next 7 days, with links into project view and overdue / upcoming labels.
  • Charts (Chart.js): project status distribution (non-archived), active projects per owner (top eight managers), 12‑month trend (created vs completed by update month), and open vs closed tasks.
  • Average progress of active (non-completed, non-archived) projects shown above the chart grid (one decimal).
  • Activity columns: up to 5 projects owned by the current user, 5 recently updated open tasks (with project title), and 5 recently updated non-archived projects.
  • Shortcuts card plus CSV export of projects (managers only) from the dashboard.
  • Deadline banner on the dashboard is capped at 8 rows, with a link to the full projects list. Chart.js is enqueued only on the dashboard screen.

Projects

  • List view with table UX: search, filters, column sorting, pagination, and CSV export (via dashboard / list actions as implemented).
  • Project fields: title, slug, status (draft, planning, in_progress, on_hold, completed), owner (WordPress user), start/end dates, progress (0–100), category, tags, archived flag.
  • Extended metadata (stored in meta_json): team members with optional role labels; five project phases (initiation → closing) each with optional date range; visual identity (project logo, primary/secondary colors); file attachments (media IDs).
  • Create project: multi-step style flow with date picking (Jalali-oriented UI where provided).
  • Edit / view modes for a single project; viewers with view-only capability see read-only summaries for extended fields.
  • Architecture notebook side navigation on notebook flows: new project, archive notebook view, resources notebook view, plus a link to the work calendar (when the user may view projects).
  • Grid vs list: default card grid (code #PRJ-xxx, status badge, 5-step visual stepper from progress, progress bar, owner, due date, avatars) plus classic WP_List_Table. Toggle is stored in localStorage key ppm_projects_view.
  • Grid “add project” card for users who can manage projects.
  • Filters: status, category (distinct stored values), owner (including unassigned), end-date from/to, archived (0 / 1 / all). Search matches project title.
  • Sortable columns: title, status, start, end, progress. Extra column: open task count per project.
  • Row actions: view, tasks for this project, edit, archive, delete (nonce), copy edit URL (Clipboard API with prompt fallback).
  • KPI + deadline alerts also appear on the projects screen (active / overdue / budget card).
  • CSV: UTF-8 with BOM (Excel-friendly), respects current list filters, cap 5000 rows, filename ppm-projects-YYYY-MM-DD.csv. Columns: id, title, status, owner_user_id, date_start, date_end, progress, category, tags, archived. Requires ppm_manage_projects.
  • Unique slug auto-generated from the title (sanitize_title, suffix -2, -3, …).
  • Save as draft on the new-project notebook (ppm_submit=draft); empty title becomes “پیش‌نویس بدون عنوان”; status forced to draft.
  • Phase dates fill empty project date_start / date_end from the first start and last end among the five phases.
  • Deleting a project also deletes its tasks (cascade in PPM_Projects_Repository::delete).
  • Notebook → بایگانی: archived projects with title search, 12 per page, link to the filtered table view.
  • Notebook → منابع: WordPress users who have ppm_view_projects or ppm_manage_projects (avatar, role label, email, “project manager” badge).
  • Team rows: add/remove members in the UI; role labels max 80 characters; duplicate user IDs skipped. Attachments picked from the media library (multiple); logo from image attachments. 3-digit hex colors expanded to 6-digit.

Tasks

  • Per-project task list screen from the admin flow.
  • Task model: title, open/closed status, Kanban column key, optional due date (Y-m-d).
  • Filtering tasks by project where the UI supports it.
  • Hidden admin page persian-project-management-tasks (not in the top-level submenu; opened from dashboard, project rows, Kanban, and calendar).
  • Quick add when a project filter is active (title + optional due date); requires ppm_manage_tasks.
  • Close (open → closed) and delete with per-task nonces; pagination 20 per page.
  • Default Kanban column for new tasks is the board’s fallback column (first defined column, typically waiting).

Team Kanban

  • Single board aggregating tasks across projects for users who can view projects.
  • Configurable columns (up to 12): custom keys, titles, and per-column “quick add” visibility; defaults map to waiting / in progress / review-style columns.
  • Drag-and-drop cards between columns with AJAX (ppm_kanban_move_card).
  • Card editor modal: update fields such as title and due date (ppm_kanban_save_card with per-task nonces).
  • Delete tasks from the board via AJAX (ppm_kanban_delete_card).
  • Custom backdrop (color + image) as above.
  • Board shows open tasks only, joined to non-archived projects. Cards show project tag (truncated/uppercased title), project progress bar, due date (or last update date), and a link to that project’s task list.
  • Column manager on the board (users with ppm_manage_tasks): rename, add, remove, toggle “quick add” per column. Titles max 120 characters; at least one column required. Removing a column reassigns its open tasks to the first remaining column. Stored in option ppm_kanban_column_layout. Default keys: waiting (لیست انتظار), in_progress (در حال انجام), review (بازبینی). New custom keys look like col_xxxxxxxxxx.
  • Hero stats: total open tasks on the board and column count.
  • Quick-add composer: pick project, title, optional due date, target column. Archived projects cannot receive new cards.
  • Modal can reassign the task to another active project.
  • GET fallbacks (no JS): ppm_kanban_action=move|delete with nonces, for environments where AJAX is blocked.
  • Anyone who can view the board may drag/edit/delete cards (current_user_can_team_kanban_task_crud matches view). Column layout save still requires manage tasks.
  • Color + image together apply a ~38% color overlay on the image. Reset backdrop from Settings or the Kanban appearance form.

Work calendar

  • Unified calendar built from project date ranges and task due dates (Gregorian Y-m-d in the backend; the calendar UI may present Jalali dates).
  • Filters in the UI/API layer: event types (all, projects, tasks) and optional project_id scoping.
  • REST: GET /wp-json/ppm/v1/calendar-events with authenticated users who pass the permission callback.
  • Admin AJAX endpoint for loading events in the calendar screen without full page reload.
  • Jalali / Gregorian month views; preference stored in localStorage (ppm_cal_jalali). Iranian week: Saturday first → Friday last (weekStartDay = 6).
  • Toolbar: previous / today / next month, type filter, project filter, calendar-system toggle. Day details sidebar with event list; “more” overflow on busy days.
  • Legend: in-progress projects (emerald), planning/other (sky), overdue projects (rose), tasks (violet), overdue tasks (orange). Accents also cover completed (slate), on-hold (amber), draft (zinc).
  • Project events: only non-archived rows with a start and/or end date; single-sided ranges collapse to one day; reversed start/end swapped. Overdue = end date before today and status not completed or draft.
  • Task events: open tasks with a due_date on non-archived projects. Links: edit project, project tasks, Kanban.
  • Invalid from/to (not Y-m-d, or from > to) returns HTTP 400 on REST and AJAX.

Settings

Three tabs (save requires manage projects capability where enforced):

  1. Sidebar — per-screen sidebar visibility, logo, company name, tagline.
  2. Kanban — board backdrop color and image.
  3. Screens — content background color per allowed admin slug.
  • Tab key in the URL: ppm_tab=sidebar|kanban|screens (default sidebar).
  • Reset Kanban backdrop and clear all screen colors without wiping the other tab’s options.
  • Screen color whitelist includes dashboard, projects, tasks, team, Kanban, calendar, reports, settings, new project, and edit project.
  • Sidebar visibility keys (default: all on): dashboard, projects, tasks, team, team_kanban, work_calendar, reports, settings, project_new, project_edit.

Security & roles

  • Custom capabilities: ppm_manage_projects, ppm_view_projects, ppm_manage_tasks (assigned to Administrator on activation / upgrade).
  • Nonces on AJAX and settings forms; capability checks on screens and API callbacks.
  • Caps are not assigned to Editor (or other roles) automatically; use a role editor or custom code.
  • ppm_view_projects or ppm_manage_projects grants view. ppm_manage_tasks or ppm_manage_projects grants task management on the list screen.
  • Attachment IDs must be real attachment posts (images for logos/Kanban backdrop). User IDs for team/owner must exist.
  • Submenu Dashicon HTML is passed through wp_kses. Redirects use wp_safe_redirect. CSV and settings posts use admin-post.php + nonces.
  • REST calendar: logged-in users only, permission ppm_view_projects. AJAX handlers are wp_ajax_* (no nopriv).

Data layer

  • Tables: {prefix}ppm_projects, {prefix}ppm_tasks (created/updated with dbDelta).
  • Internal DB version option ppm_db_version; maybe_upgrade runs on plugins_loaded to align schema.
  • Current schema flag: 1.3.0 (PPM_Activator::DB_VERSION). meta_json is encoded with JSON_UNESCAPED_UNICODE.
  • Projects indexes: unique slug; status_archived; owner_user_id; date_end.
  • Tasks indexes: project_id; project_status; kanban_status; due_date.
  • Task due_date reads are guarded if the column is missing (pre-upgrade installs).

List & workflow extras

  • Projects list: WordPress screen option ppm_projects_per_page (default 20) controls pagination.
  • Bulk actions: Bulk archive selected projects (requires ppm_manage_projects), with bulk-projects nonce.
  • Success notices for delete / archive / bulk archive (ppm_msg query args).
  • Checkbox column is hidden for users who cannot manage projects (no bulk archive).

Developer hooks & AJAX (logged-in admin)

Kind Name / endpoint Notes
Filter ppm_projects_total_budget_display Return HTML or plain text for the budget KPI card on dashboard and projects list (empty string = hidden/minimal).
REST GET /wp-json/ppm/v1/calendar-events Query: from, to (required), optional project_id, types (all | projects | tasks). Permission: ppm_view_projects.
AJAX ppm_calendar_events Same calendar payload when REST/plain permalinks are problematic; capability check + nonce as implemented.
AJAX ppm_kanban_move_card, ppm_kanban_save_card, ppm_kanban_delete_card Kanban DnD, modal save, delete; nonces and capability checks in PPM_Kanban_Ajax.
admin_post ppm_export_projects CSV download.
admin_post ppm_save_project Create/update project.
admin_post ppm_save_task Quick-add task on the tasks screen.
admin_post ppm_save_plugin_settings Kanban appearance + per-screen colors.
admin_post ppm_save_kanban_appearance Kanban backdrop from the board screen.
admin_post ppm_save_kanban_quick_task Quick-add card.
admin_post ppm_kanban_update_task Classic POST update of a card (non-AJAX).
admin_post ppm_save_kanban_columns Column layout.
admin_post ppm_save_sidebar_settings Sidebar visibility + branding.

Not yet implemented (placeholders)

  • Team top-level menu: placeholder screen.
  • Reports top-level menu: placeholder screen.

معرفی و امکانات (فارسی)

مدیریت پروژه فارسی (Persian Project Management) افزونه‌ای برای وردپرس است که کل فضای مدیریت پروژه را داخل پیشخوان (wp-admin) می‌آورد—مناسب تیم‌هایی که می‌خواهند پروژه، وظیفه، مهلت و یک بورد مشترک را بدون ابزار جدا از وردپرس دنبال کنند، با اولویت رابط فارسی و چیدمان راست‌به‌چپ.

این افزونه دقیقاً چه کاری می‌کند؟

  • ذخیرهٔ داده جدا از نوشته‌ها: پروژه‌ها و وظایف در جداول اختصاصی (با پیشوند جدول وردپرس، مثلاً wp_ppm_projects و wp_ppm_tasks) نگه‌داری می‌شوند تا لیست‌ها سبک بمانند و ساختار داده شفاف باشد. با فعال‌سازی و به‌روزرسانی افزونه، اسکیما با dbDelta و گزینهٔ ppm_db_version هم‌تراز می‌شود.
  • تجربهٔ بصری فارسی: فونت وزیرمتن همراه افزونه، استایل‌های محدود به ناحیهٔ افزونه، و در صورت تمایل رنگ پس‌زمینهٔ جداگانه برای هر صفحهٔ مجاز و نوار کناری قابل تنظیم (نمایش/مخفی per-screen) به‌همراه لوگو، نام سازمان و شعار در هدر.
  • منوی اصلی پیشخوان: زیرمنوی «مدیریت پروژه» شامل: داشبورد، پروژه‌ها، تیم (فعلاً صفحهٔ جای‌نگهدار)، وظایف/کانبان، تقویم کاری، گزارش‌ها (جای‌نگهدار)، تنظیمات. صفحات پروژه جدید، ویرایش پروژه و لیست وظایف به‌صورت آیتم مخفی منو هستند و از داخل رابط لینک می‌شوند. آیکون منو dashicons-networking و موقعیت ۲۶ است.
  • تقویم شمسی در جریان کاری: در مسیرهای ایجاد/ویرایش پروژه و تقویم کاری از persian-date و jalalidatepicker استفاده می‌شود؛ در بک‌اند تاریخ‌ها به‌صورت میلادی Y-m-d ذخیره می‌شوند تا گزارش‌گیری و API یکدست بماند.
  • دارایی‌های شخص ثالث: وزیرمتن، Chart.js (فقط داشبورد) و کتابخانه‌های تاریخ شمسی داخل assets/vendor/ همراه افزونه هستند و از CDN بارگذاری نمی‌شوند.
  • بارگذاری دارایی: CSS/JS افزونه فقط روی صفحات PPM (نسخه‌گذاری با filemtime). استایل کوچک منو برای کاربران دارای مشاهدهٔ پروژه. کتابخانهٔ رسانه روی تنظیمات، پروژهٔ جدید و ویرایش (در صورت مجوز مدیریت).
  • محدوده: فقط پیشخوان؛ شورت‌کد، بلوک گوتنبرگ و رابط فرانت‌اند وجود ندارد.

جدول خلاصهٔ امکانات

بخش امکانات کلیدی
پروژه‌ها ایجاد، ویرایش، مشاهده، حذف و آرشیو (با nonce)، لیست با جستجو، فیلتر، مرتب‌سازی، صفحه‌بندی، آرشیو گروهی، خروجی CSV، فیلدهای گسترده در meta_json (تیم، پنج فاز، رنگ و لوگو، پیوست)
رابط پروژه‌ها نمای شبکه + فهرست (ذخیره در localStorage)، کارت KPI، هشدار مهلت، کد #PRJ-xxx، استپر پیشرفت، کپی لینک ویرایش
وظایف لیست در سطح پروژه، وضعیت باز/بسته، ستون کانبان، تاریخ سررسید اختیاری، افزودن سریع، بستن/حذف، صفحه‌بندی
کانبان تیمی یک بورد برای همهٔ پروژه‌های قابل‌مشاهده، حداکثر ۱۲ ستون قابل تنظیم، کشیدن‌ورها با jQuery UI Sortable، افزودن سریع و مودال ویرایش، به‌روزرسانی با AJAX
دفترچه معماری ویزارد پروژهٔ جدید (ایجاد یا پیش‌نویس)، مرور بایگانی، دایرکتوری منابع/تیم
تقویم کاری ترکیب بازهٔ پروژه و سررسید وظایف؛ فیلتر نوع و پروژه؛ تغییر نمای شمسی/میلادی؛ REST و در صورت نیاز admin-ajax
ظاهر بنر برند + لوگوی نوار، رنگ هر صفحه، پس‌زمینهٔ کانبان (رنگ، تصویر، پوشش نیمه‌شفاف)
امنیت قابلیت‌های سفارشی و nonce روی فرم‌ها و AJAX
توسعه فیلتر ppm_projects_total_budget_display برای متن کارت بودجه در داشبورد/لیست
محدوده فقط ادمین (بدون شورت‌کد/بلوک). منوی تیم و گزارش‌ها جای‌نگهدار است

تجربهٔ ادمین و ظاهر

  • چیدمان RTL و رشته‌های ترجمه‌شده در صفحات افزونه (دامنهٔ متن: persian-project-management).
  • نوار کناری ناوبری در صفحات پشتیبانی‌شده؛ برای هر صفحه می‌توان نمایش یا عدم نمایش نوار را از تنظیمات → نوار کناری تعیین کرد.
  • برندینگ: لوگوی سفارشی (از رسانه)، نام سازمان و شعار در هدر؛ در صورت خالی بودن از عنوان سایت / برند وردپرس استفاده می‌شود.
  • رنگ پس‌زمینهٔ محتوا به‌صورت جداگانه برای هر صفحهٔ مجاز ادمین (تنظیمات → صفحات).
  • پس‌زمینهٔ کانبان: رنگ و/یا تصویر پس‌زمینه از کتابخانهٔ رسانه (تنظیمات → کانبان).
  • بنر برند (لوگو + نام سازمان + شعار اختیاری) روی داشبورد، لیست‌ها، کانبان، تقویم، تنظیمات، جای‌نگهدارها و صفحات پروژه.
  • زنجیرهٔ پیش‌فرض لوگو: پیوست سفارشی → نماد سایت → لوگوی آبی هستهٔ وردپرس.
  • نام سازمان حداکثر ۱۲۰ نویسه؛ شعار حداکثر ۲۲۰. نام خالی = عنوان سایت.
  • تب‌های تنظیمات با ARIA؛ مشاهده برای دارندگان مجوز مشاهده، ذخیره فقط با مدیریت پروژه.
  • رنگ‌ها به‌صورت #RRGGBB پاکسازی می‌شوند (انتخابگر رنگ + فیلد متن).

داشبورد

  • نوار کاربر: نام نمایشی و برچسب نقش وردپرس.
  • جستجوی سریع عنوان پروژه در نوار بالا (هدایت به لیست پروژه‌ها).
  • میانبرهای قهرمان: لیست پروژه‌ها، لیست وظایف، پروژهٔ جدید (در صورت مجوز)، کانبان تیمی.
  • کارت‌های شاخص: همهٔ پروژه‌ها (شامل آرشیو)، پروژه‌های فعال به‌همراه «ایجادشده این ماه»، پروژه‌های با تأخیر (سررسید گذشته)، پروژه‌های فعال بدون مالک، و کارت بودجه / هزینه (توسعه‌دهندگان می‌توانند مقدار نمایشی را با فیلتر ppm_projects_total_budget_display وارد کنند).
  • هشدار مهلت برای پروژه‌هایی که در ۷ روز آینده به پایان می‌رسند، با لینک به نمای پروژه و برچسب سررسید نزدیک / گذشته.
  • نمودارها (Chart.js): توزیع وضعیت پروژه (غیرآرشیو)، تعداد پروژهٔ فعال به‌ازای مدیر (۸ مدیر اول)، روند ۱۲ ماه (ایجاد در مقابل تکمیل بر اساس ماه به‌روزرسانی)، و وظایف باز در مقابل بسته.
  • میانگین پیشرفت پروژه‌های فعال (غیرتمام‌شده و غیرآرشیو) بالای نمودارها (یک رقم اعشار).
  • ستون فعالیت: تا ۵ پروژهٔ تحت مدیریت کاربر جاری، ۵ وظیفهٔ باز اخیر، و ۵ پروژهٔ اخیراً به‌روزشده.
  • کارت میانبر به‌همراه خروجی CSV (فقط مدیران پروژه). بنر مهلت داشبورد حداکثر ۸ ردیف. Chart.js فقط روی داشبورد بار می‌شود.

پروژه‌ها

  • لیست با جدول ادمین: جستجو، فیلتر، مرتب‌سازی ستون، صفحه‌بندی و خروجی CSV (طبق پیاده‌سازی در لیست / داشبورد).
  • فیلدها: عنوان، اسلاگ، وضعیت (draft، planning، in_progress، on_hold، completedمالک (کاربر وردپرس)، تاریخ شروع/پایان، درصد پیشرفت، دسته، برچسب‌ها، پرچم آرشیو.
  • متادیتای گسترده (در meta_json): اعضای تیم با نقش اختیاری؛ پنج فاز مدیریت پروژه هر کدام با بازهٔ تاریخ اختیاری؛ هویت بصری (لوگو، رنگ اصلی/ثانویه)؛ پیوست‌های فایل (شناسهٔ رسانه).
  • ایجاد پروژه: جریان چندمرحله‌ای با انتخاب تاریخ (رابط تاریخ شمسی جایی که پیاده‌سازی شده).
  • حالت‌های ویرایش / مشاهده؛ کاربران فقط-مشاهده خلاصهٔ فقط-خواندنی فیلدهای گسترده را می‌بینند.
  • دفترچه معماری در نوار کناری جریان دفترچه: پروژه جدید، نمای بایگانی، نمای منابع، و لینک به تقویم کاری (در صورت مجوز مشاهدهٔ پروژه).
  • شبکه در برابر فهرست: پیش‌فرض کارت شبکه‌ای (کد #PRJ-xxx، نشان وضعیت، استپر پنج‌مرحله‌ای از روی پیشرفت، نوار پیشرفت، مدیر، تاریخ تحویل، آواتار) به‌علاوهٔ جدول کلاسیک وردپرس. انتخاب نما در localStorage با کلید ppm_projects_view ذخیره می‌شود.
  • کارت افزودن پروژه در نمای شبکه برای مدیران پروژه.
  • فیلترها: وضعیت، دسته (مقادیر ذخیره‌شده)، مسئول (از جمله بدون مسئولبازهٔ تاریخ پایان، آرشیو (0 / 1 / all). جستجو روی عنوان پروژه.
  • مرتب‌سازی: عنوان، وضعیت، شروع، پایان، پیشرفت. ستون اضافه: تعداد وظایف باز.
  • اقدام ردیف: مشاهده، وظایف این پروژه، ویرایش، آرشیو، حذف (nonce)، کپی لینک ویرایش.
  • کارت‌های KPI و هشدار مهلت در صفحهٔ پروژه‌ها هم نمایش داده می‌شوند.
  • CSV: UTF-8 با BOM (سازگار با اکسل)، مطابق فیلتر جاری، سقف ۵۰۰۰ ردیف، نام ppm-projects-YYYY-MM-DD.csv. ستون‌ها: id، title، status، owner_user_id، date_start، date_end، progress، category، tags، archived. نیازمند مدیریت پروژه.
  • اسلاگ یکتا از عنوان (sanitize_title و پسوند -2، -3، …).
  • ذخیره به‌صورت پیش‌نویس در دفترچهٔ پروژهٔ جدید؛ عنوان خالی می‌شود «پیش‌نویس بدون عنوان» و وضعیت draft.
  • تاریخ خالی شروع/پایان پروژه از اولین شروع و آخرین پایان فازها پر می‌شود.
  • حذف پروژه، وظایف همان پروژه را هم حذف می‌کند.
  • بایگانی دفترچه: پروژه‌های آرشیو با جستجوی عنوان، ۱۲ در هر صفحه، لینک به نمای جدولی فیلترشده.
  • منابع دفترچه: کاربران وردپرس دارای ppm_view_projects یا ppm_manage_projects (آواتار، نقش، ایمیل، نشان مدیر پروژه).
  • ردیف تیم: افزودن/حذف عضو؛ نقش حداکثر ۸۰ نویسه؛ شناسهٔ تکراری نادیده گرفته می‌شود. پیوست از رسانه (چندتایی)؛ لوگو فقط تصویر. رنگ سه‌رقمی به شش‌رقمی گسترش می‌یابد.

وظایف

  • لیست وظایف در سطح پروژه از مسیر ادمین.
  • مدل وظیفه: عنوان، وضعیت باز/بسته، کلید ستون کانبان، تاریخ سررسید اختیاری (Y-m-d).
  • فیلتر بر اساس پروژه در جایی که رابط پشتیبانی می‌کند.
  • صفحهٔ مخفی persian-project-management-tasks (در زیرمنوی اصلی نیست؛ از داشبورد، ردیف پروژه، کانبان و تقویم باز می‌شود).
  • افزودن سریع وقتی فیلتر پروژه فعال است (عنوان + سررسید اختیاری)؛ نیازمند ppm_manage_tasks.
  • بستن و حذف با nonce به‌ازای هر وظیفه؛ صفحه‌بندی ۲۰ ردیف.
  • ستون پیش‌فرض وظیفهٔ جدید، اولین ستون بورد است (معمولاً waiting).

کانبان تیمی

  • یک بورد برای وظایف چندپروژه‌ای برای کاربرانی که پروژه را می‌بینند.
  • ستون‌های قابل پیکربندی (حداکثر ۱۲): کلید، عنوان و نمایش دکمهٔ افزودن سریع به‌ازای هر ستون؛ پیش‌فرض شبیه «انتظار / در حال انجام / بازبینی» است.
  • کشیدن و رها کردن کارت بین ستون‌ها با AJAX (ppm_kanban_move_card).
  • مودال ویرایش کارت: به‌روزرسانی عنوان، تاریخ سررسید و غیره (ppm_kanban_save_card با nonce به‌ازای هر وظیفه).
  • حذف وظیفه از بورد با AJAX (ppm_kanban_delete_card).
  • پس‌زمینهٔ سفارشی کانبان (رنگ + تصویر) همان‌طور که در تنظیمات تعریف شده.
  • فقط وظایف باز پروژه‌های غیرآرشیو. کارت: برچسب پروژه، نوار پیشرفت پروژه، سررسید (یا تاریخ به‌روزرسانی)، لینک به لیست وظایف همان پروژه.
  • مدیریت ستون‌ها روی خود بورد (با ppm_manage_tasks): تغییر عنوان، افزودن، حذف، نمایش افزودن سریع. عنوان حداکثر ۱۲۰ نویسه؛ حداقل یک ستون. حذف ستون، وظایف باز را به اولین ستون باقی‌مانده منتقل می‌کند. ذخیره در ppm_kanban_column_layout. پیش‌فرض: waiting (لیست انتظار)، in_progress (در حال انجام)، review (بازبینی).
  • آمار هدر: تعداد وظایف باز و تعداد ستون.
  • افزودن سریع: انتخاب پروژه، عنوان، سررسید اختیاری، ستون هدف. پروژهٔ آرشیو کارت نمی‌گیرد.
  • مودال می‌تواند وظیفه را به پروژهٔ فعال دیگر منتقل کند.
  • پشتیبان GET (بدون JS): ppm_kanban_action=move|delete با nonce.
  • هر کس بورد را ببیند می‌تواند کارت را بکشد/ویرایش/حذف کند. ذخیرهٔ چیدمان ستون نیازمند مدیریت وظایف است.
  • رنگ + تصویر = پوشش رنگی حدود ۳۸٪ روی تصویر. بازنشانی پس‌زمینه از تنظیمات یا فرم ظاهر کانبان.

تقویم کاری

  • تقویم یکپارچه از روی بازهٔ تاریخ پروژه‌ها و سررسید وظایف (میلادی Y-m-d در بک‌اند؛ رابط ممکن است شمسی نشان دهد).
  • فیلتر نوع رویداد (all، projects، tasks) و در صورت نیاز project_id.
  • REST: GET /wp-json/ppm/v1/calendar-events برای کاربران احراز هویت‌شده با مجوز مناسب.
  • AJAX ادمین برای بارگذاری رویدادها در صفحهٔ تقویم بدون بارگذاری کامل صفحه.
  • نمای شمسی / میلادی؛ ترجیح در localStorage (ppm_cal_jalali). هفتهٔ ایرانی: شنبه اول تا جمعه.
  • نوار ابزار: ماه قبل / امروز / ماه بعد، فیلتر نوع، فیلتر پروژه، تغییر تقویم. جزئیات روز در ستون کناری؛ «بیشتر» برای روزهای شلوغ.
  • راهنما: پروژه در حال اجرا، برنامه‌ریزی/سایر، پروژهٔ عقب‌افتاده، وظیفه، وظیفهٔ عقب‌افتاده (رنگ‌های وضعیت completed / on_hold / draft هم اعمال می‌شود).
  • رویداد پروژه: فقط غیرآرشیو با تاریخ شروع و/یا پایان؛ بازهٔ یک‌طرفه یک روزه می‌شود. عقب‌افتاده = پایان قبل از امروز و وضعیت غیر از completed و draft.
  • رویداد وظیفه: وظایف باز با due_date روی پروژهٔ غیرآرشیو. لینک به ویرایش پروژه، وظایف، کانبان.
  • بازهٔ نامعتبر (from/to) در REST و AJAX کد ۴۰۰ برمی‌گرداند.

تنظیمات

سه تب (ذخیره در جاهایی که اعمال شده نیازمند قابلیت مدیریت پروژه است):

  1. نوار کناری — نمایش نوار به‌ازای هر صفحه، لوگو، نام سازمان، شعار.
  2. کانبان — رنگ و تصویر پس‌زمینهٔ بورد.
  3. صفحات — رنگ پس‌زمینهٔ محتوا به‌ازای هر اسلاگ مجاز.
  • کلید تب در آدرس: ppm_tab=sidebar|kanban|screens (پیش‌فرض نوار کناری).
  • بازنشانی پس‌زمینهٔ کانبان و پاک کردن همهٔ رنگ صفحات بدون خراب کردن تب دیگر.
  • فهرست رنگ صفحات: داشبورد، پروژه‌ها، وظایف، تیم، کانبان، تقویم، گزارش‌ها، تنظیمات، پروژه جدید، ویرایش پروژه.
  • کلیدهای نمایش نوار (پیش‌فرض همه روشن): dashboard، projects، tasks، team، team_kanban، work_calendar، reports، settings، project_new، project_edit.

امنیت و نقش‌ها

  • قابلیت‌های سفارشی: ppm_manage_projects، ppm_view_projects، ppm_manage_tasks (به مدیرکل در فعال‌سازی / ارتقا داده می‌شود).
  • Nonce روی AJAX و فرم‌های تنظیمات؛ بررسی capability روی صفحات و callbackهای API.
  • به نقش ویرایشگر (و نقش‌های دیگر) به‌صورت خودکار قابلیت داده نمی‌شود؛ با افزونهٔ نقش یا کد سفارشی اختصاص دهید.
  • مشاهده با ppm_view_projects یا مدیریت پروژه. مدیریت وظایف لیست با ppm_manage_tasks یا مدیریت پروژه.
  • شناسهٔ پیوست باید پست attachment واقعی باشد. شناسهٔ کاربر تیم/مالک باید وجود داشته باشد.
  • HTML آیکون زیرمنو از wp_kses می‌گذرد. ریدایرکت با wp_safe_redirect. CSV و تنظیمات از admin-post.php با nonce.
  • REST تقویم فقط کاربر واردشده با مجوز مشاهده. AJAX فقط wp_ajax_* (بدون nopriv).

لایهٔ داده

  • جداول: {prefix}ppm_projects، {prefix}ppm_tasks (ایجاد/به‌روز با dbDelta).
  • گزینهٔ نسخهٔ داخلی ppm_db_version؛ اجرای maybe_upgrade روی plugins_loaded برای هم‌تراز کردن اسکیما.
  • پرچم اسکیمای فعلی: 1.3.0. meta_json با JSON_UNESCAPED_UNICODE.
  • ایندکس پروژه‌ها: slug یکتا؛ status_archived؛ owner_user_id؛ date_end.
  • ایندکس وظایف: project_id؛ project_status؛ kanban_status؛ due_date.
  • خواندن due_date اگر ستون هنوز وجود نداشته باشد (قبل از ارتقا) خطا نمی‌دهد.

لیست پروژه و گردش کار

  • گزینهٔ صفحهٔ ادمین: تعداد ردیف در هر صفحه با ppm_projects_per_page (پیش‌فرض ۲۰).
  • اقدام دسته‌جمعی: آرشیو گروهی پروژه‌های انتخاب‌شده (نیازمند ppm_manage_projects) با nonce مربوط به bulk-projects.
  • اعلان موفقیت برای حذف / آرشیو / آرشیو گروهی.
  • ستون چک‌باکس برای کاربر بدون مجوز مدیریت مخفی است.

توسعه‌دهنده: فیلتر و AJAX

نوع نام / آدرس توضیح کوتاه
فیلتر ppm_projects_total_budget_display خروجی متن یا HTML برای کارت بودجه/هزینه در داشبورد و لیست پروژه‌ها؛ رشتهٔ خالی یعنی بدون محتوای سفارشی.
REST GET /wp-json/ppm/v1/calendar-events پارامترها: from، to (اجباری)، اختیاری project_id، types. نیازمند مجوز مشاهدهٔ پروژه.
AJAX ppm_calendar_events همان دادهٔ تقویم در صورت محدودیت REST یا permalink ساده.
AJAX ppm_kanban_move_card، ppm_kanban_save_card، ppm_kanban_delete_card جابه‌جایی کارت، ذخیره از مودال، حذف؛ با nonce و بررسی capability در کلاس کانبان.
admin_post ppm_export_projects دانلود CSV.
admin_post ppm_save_project ایجاد/به‌روزرسانی پروژه.
admin_post ppm_save_task افزودن سریع وظیفه در صفحهٔ وظایف.
admin_post ppm_save_plugin_settings ظاهر کانبان + رنگ صفحات.
admin_post ppm_save_kanban_appearance پس‌زمینه از خود صفحهٔ کانبان.
admin_post ppm_save_kanban_quick_task افزودن سریع کارت.
admin_post ppm_kanban_update_task ذخیرهٔ کارت بدون AJAX.
admin_post ppm_save_kanban_columns چیدمان ستون‌ها.
admin_post ppm_save_sidebar_settings نمایش نوار و برندینگ.

هنوز پیاده‌سازی نشده (جای‌نگهدار)

  • منوی تیم: صفحهٔ جای‌نگهدار.
  • منوی گزارش‌ها: صفحهٔ جای‌نگهدار.

جستجوی نوار دفترچهٔ معماری، دکمهٔ تنظیمات/اعلان، و dropzone فایل در ویزارد پروژهٔ جدید در حال حاضر نمایشی هستند؛ پیوست واقعی از کتابخانهٔ رسانه وردپرس ذخیره می‌شود.

Stored options (wp_options)

Option Purpose
ppm_db_version Schema version (currently 1.3.0)
ppm_kanban_column_layout Kanban column definitions
ppm_kanban_appearance Backdrop color + image attachment ID
ppm_sidebar_screens Per-screen sidebar visibility map
ppm_sidebar_logo_attachment_id Custom logo
ppm_plugin_company_name Organization name in the brand banner
ppm_plugin_company_tagline Tagline
ppm_screen_backgrounds Hex colors per admin slug

User meta: ppm_projects_per_page. Browser-only: localStorage keys ppm_projects_view and ppm_cal_jalali.

گزینه‌های ذخیره‌شده

همان جدول بالا در wp_options؛ متای کاربر ppm_projects_per_page؛ ترجیح نمای لیست/تقویم فقط در مرورگر.

Bundled library versions (loaded on matching screens only)

Library Version Used on
Vazirmatn 33.003 All plugin admin screens
Chart.js 4.4.1 Dashboard charts
persian-date 1.1.0 Project datepicker + work calendar
@majidh1/jalalidatepicker 0.9.5 New/edit project phase dates

Internationalization

  • Text domain: persian-project-management. Header Domain Path: /languages (place .po/.mo there for extra locales).
  • Default UI copy in PHP is Persian. WordPress 4.6+ can load translations from wordpress.org when the plugin is listed there.
  • Status labels (پیش‌نویس، برنامه‌ریزی، در حال اجرا، متوقف، تمام‌شده) and Kanban defaults are translated strings.

ترجمه و بین‌المللی‌سازی

دامنهٔ متن persian-project-management؛ مسیر /languages. متن پیش‌فرض رابط فارسی است.

Accessibility

  • dir="rtl" on plugin wrappers; screen-reader-text on filter labels; ARIA tabs on Settings; role="dialog" / aria-modal on the Kanban card modal; role="progressbar" on project/Kanban progress; wp.a11y.speak when copying an edit link.
  • Calendar weekday row and grid have accessible labels; loading state is announced.

دسترس‌پذیری

چیدمان RTL، برچسب‌های صفحه‌خوان، تب ARIA در تنظیمات، مودال کانبان، نوار پیشرفت، اعلام کپی لینک، و برچسب‌های تقویم.

Privacy and data

  • Admin-only. No public REST without login + ppm_view_projects. No wp_ajax_nopriv_* handlers.
  • Stores project/task rows in custom tables and the options listed above. File attachments are WordPress media IDs (files live in the Media Library).
  • No analytics, telemetry, or third-party tracking. Fonts and scripts ship inside assets/vendor/ (no remote CDN).
  • Budget KPI is empty until a site integrator fills ppm_projects_total_budget_display; the plugin does not store financial amounts of its own.

حریم خصوصی و داده

فقط پیشخوان؛ بدون REST عمومی و بدون AJAX مهمان. داده در جداول اختصاصی و گزینه‌ها. پیوست‌ها شناسهٔ رسانهٔ وردپرس‌اند. ردیابی و تلهمتری وجود ندارد. کارت بودجه تا اتصال فیلتر خالی است.

Deactivation and uninstall

There is no uninstall.php. Deactivating the plugin does not drop {prefix}ppm_projects, {prefix}ppm_tasks, or PPM options. Remove those tables/options manually if you need a clean uninstall.

غیرفعال‌سازی و حذف

فایل uninstall.php وجود ندارد. غیرفعال‌سازی جداول و گزینه‌ها را پاک نمی‌کند.

Frequently asked questions

Does this plugin show anything on the site frontend?
No. It only adds a مدیریت پروژه menu inside wp-admin.

Can Editors use it?
Not until you grant ppm_view_projects / ppm_manage_projects / ppm_manage_tasks. Activation assigns those caps to Administrator only.

Why is the budget card a dash?
The plugin has no built-in finance module. Return a string from ppm_projects_total_budget_display to show a total.

Are dates stored as Jalali?
No. Pickers and the calendar UI can show Jalali; the database and REST API use Gregorian Y-m-d.

Why are Team and Reports empty?
They are placeholder screens (“این بخش به‌زودی در دسترس خواهد بود”) for future releases.

CSV looks wrong in Excel?
Export is UTF-8 with a BOM. Open via Excel’s import if your locale still misreads encoding.

Is there a Gutenberg block or shortcode?
No.

سوالات م

This README is longer than the copy stored here. Read the rest on GitHub →

Releases

1 release. Each count is every asset in that release; expand a row for the breakdown.

Tag
Published
Assets
Downloads
v2.1.0 latest
Aug 28, 2026 15d ago
persian-project-management.2.1.0.zip
0