gurmehub/helpdesk

Laravel Helpdesk package — Odoo XML-RPC client and Inertia React pages.

Maintainers

Package info

github.com/gurmesoft/helpdesk

Language:TypeScript

pkg:composer/gurmehub/helpdesk

Transparency log

Statistics

Installs: 5

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

0.1.5 2026-07-30 12:44 UTC

This package is not auto-updated.

Last update: 2026-07-31 07:52:28 UTC


README

Laravel Composer paketi. Odoo Helpdesk ile XML-RPC (/xmlrpc/2/common, /xmlrpc/2/object) üzerinden konuşur. Inertia + React (Polaris) sayfaları içerir. Ticket için Eloquent model yoktur.

Gereksinimler

  • PHP 8.2+
  • Laravel 11 veya 12 (Inertia React)
  • Host’ta Polaris, App Bridge, Vite ve React hazır olmalı
  • Host’ta Laravel Wayfinder (laravel/wayfinder + @laravel/vite-plugin-wayfinder) kurulu olmalı — paket frontend URL’leri için zorunlu
  • Giriş yapmış kullanıcı: users.name = Shopify mağaza domaini (Odoo shopify_domain ile eşleşir)
  • Host’ta verify.shopify middleware tanımlı olmalı (API route’ları bunu kullanır)
  • App\Models\User üzerinde Shopify GraphQL için api()->graph() olmalı (create/reply iletişim alanları)

Kurulum

composer require gurmehub/helpdesk:^0.1

Host .env:

HELPDESK_ODOO_URL=https://odoo.example.com
HELPDESK_ODOO_DB=odoo
HELPDESK_ODOO_USERNAME=api@example.com
HELPDESK_ODOO_PASSWORD=api-key-or-password
HELPDESK_TEAM_ID=1
HELPDESK_ODOO_COMPANY_ID=1,3

# isteğe bağlı:
# HELPDESK_SOLVED_STAGE_ID=
# HELPDESK_TIMEOUT=30
# HELPDESK_LANG=tr_TR
# HELPDESK_PREFIX=helpdesk
# HELPDESK_ROUTE_TICKETS=tickets

HELPDESK_TEAM_ID ticket oluşturmak için zorunludur. HELPDESK_ODOO_COMPANY_ID virgülle ayrılmış company id listesidir (allowed_company_ids).

Config publish (opsiyonel):

php artisan vendor:publish --tag=helpdesk-config

Host app.blade.php (zorunlu)

Laravel Inertia scaffold genelde sayfa chunk’ını Vite ile preload eder:

@vite(['resources/js/app.tsx', "resources/js/pages/{$page['component']}.tsx"])

Helpdesk sayfaları paket içinde (vendor/gurmehub/helpdesk/...) olduğu için bu path production manifest’te yoktur ve şu hatayı üretir:

Unable to locate file in Vite manifest: resources/js/pages/helpdesk/tickets/index.tsx

Sadece entry bırakın:

@vite(['resources/js/app.tsx'])

Sayfalar app.tsx içindeki import.meta.glob + resolveHelpdeskPage ile yüklenir. Host sayfaları bozulmaz; yalnızca erken page preload kalkar.

Host Inertia resolve

Paket resources/js/inertia.ts içinde kendi glob’unu taşır. Host app.tsx’e fallback ekleyin:

import { resolveHelpdeskPage } from "../../vendor/gurmehub/helpdesk/resources/js/inertia";

const hostPages = import.meta.glob("./pages/**/*.tsx");

createInertiaApp({
  resolve: (name) => {
    const hostKey = `./pages/${name}.tsx`;
    if (hostPages[hostKey]) {
      return resolvePageComponent(hostKey, hostPages);
    }
    return resolveHelpdeskPage(name);
  },
  // ...
});

vite.config.ts değiştirmenize gerek yok (Wayfinder plugin zaten host’ta olmalı). Asıl zorunlu olan üstteki app.blade.php @vite düzeltmesidir.

Paket içinde ayrı bir tsconfig.json yoktur; Vite host projenin tsconfig.json dosyasını kullanır.

Kurulumdan sonra frontend’i build edin (npm run build veya npm run dev) — helpdesk sayfaları host Vite bundle’ına o zaman girer.

Wayfinder (frontend URL’leri)

Paket React sayfaları route URL’lerini controller’dan Inertia prop olarak almaz. URL’ler host Wayfinder ile üretilir:

import {
  index,
  create,
  show,
  store,
  storeMessage,
  markSolved,
} from "@/actions/Gurmehub/Helpdesk/Http/Controllers/TicketController";

create.url();
show.url(ticketId);
store.url();
storeMessage.url(ticketId);
markSolved.url(ticketId);

Önemli: route env değişince yeniden build

HELPDESK_PREFIX, HELPDESK_ROUTE_TICKETS (veya config/helpdesk.php route ayarları) değişirse Wayfinder URL’leri build anındaki değerlere gömülür. Sadece .env değiştirmek frontend’deki linkleri güncellemez.

Değişiklikten sonra mutlaka:

npm run build

(@laravel/vite-plugin-wayfinder build/dev sırasında wayfinder:generate çalıştırır.)