Created comprehensive Editorial Guidelines Manager to display all 22 publication targets with detailed submission requirements: **New Page:** `/admin/editorial-guidelines.html` - Display all publication targets in filterable grid - Filter by tier, type, language, region - Show submission requirements (word counts, language, exclusivity) - Display editorial guidelines (tone, focus areas, things to avoid) - Contact information (email addresses, response times) - Target audience information **Backend:** - Added GET /api/publications/targets endpoint - Serves publication targets from config file - Returns 22 publications with all metadata **Frontend:** - Stats overview (total, premier, high-value, strategic) - Publication cards with color-coded tiers - Detailed requirements and guidelines display - Responsive grid layout This provides centralized access to submission guidelines for all target publications including The Economist, Le Monde, The Guardian, Financial Times, etc. Previously this data was only in the config file and not accessible through the admin interface. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
94 lines
4.1 KiB
HTML
94 lines
4.1 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Editorial Guidelines | Tractatus Admin</title>
|
|
<link rel="stylesheet" href="/css/tailwind.css?v=0.1.0.1729786000000">
|
|
<link rel="stylesheet" href="/css/tractatus-theme.min.css?v=0.1.0.1729786000000">
|
|
<script defer src="/js/admin/auth-check.js?v=0.1.0.1729786000000"></script>
|
|
</head>
|
|
<body class="bg-gray-50">
|
|
<div id="admin-navbar"></div>
|
|
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
|
<!-- Header -->
|
|
<div class="mb-8">
|
|
<h1 class="text-3xl font-bold text-gray-900">Editorial Guidelines Manager</h1>
|
|
<p class="mt-2 text-gray-600">Publication targets, submission requirements, and editorial guidelines for external communications</p>
|
|
</div>
|
|
|
|
<!-- Stats Overview -->
|
|
<div class="grid grid-cols-1 md:grid-cols-4 gap-6 mb-8">
|
|
<div class="bg-white rounded-lg shadow p-6">
|
|
<div class="text-sm font-medium text-gray-500">Total Publications</div>
|
|
<div class="mt-2 text-3xl font-semibold text-gray-900" id="stat-total">-</div>
|
|
</div>
|
|
<div class="bg-white rounded-lg shadow p-6">
|
|
<div class="text-sm font-medium text-gray-500">Premier Tier</div>
|
|
<div class="mt-2 text-3xl font-semibold text-blue-600" id="stat-premier">-</div>
|
|
</div>
|
|
<div class="bg-white rounded-lg shadow p-6">
|
|
<div class="text-sm font-medium text-gray-500">High Value</div>
|
|
<div class="mt-2 text-3xl font-semibold text-green-600" id="stat-high-value">-</div>
|
|
</div>
|
|
<div class="bg-white rounded-lg shadow p-6">
|
|
<div class="text-sm font-medium text-gray-500">Strategic</div>
|
|
<div class="mt-2 text-3xl font-semibold text-purple-600" id="stat-strategic">-</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Filters -->
|
|
<div class="bg-white rounded-lg shadow p-6 mb-8">
|
|
<div class="grid grid-cols-1 md:grid-cols-4 gap-4">
|
|
<div>
|
|
<label class="block text-sm font-medium text-gray-700 mb-2">Tier</label>
|
|
<select id="filter-tier" class="w-full border border-gray-300 rounded px-3 py-2">
|
|
<option value="">All Tiers</option>
|
|
<option value="premier">Premier</option>
|
|
<option value="high-value">High Value</option>
|
|
<option value="strategic">Strategic</option>
|
|
</select>
|
|
</div>
|
|
<div>
|
|
<label class="block text-sm font-medium text-gray-700 mb-2">Type</label>
|
|
<select id="filter-type" class="w-full border border-gray-300 rounded px-3 py-2">
|
|
<option value="">All Types</option>
|
|
<option value="letter">Letter to Editor</option>
|
|
<option value="op-ed">Op-Ed</option>
|
|
<option value="article">Article</option>
|
|
</select>
|
|
</div>
|
|
<div>
|
|
<label class="block text-sm font-medium text-gray-700 mb-2">Language</label>
|
|
<select id="filter-language" class="w-full border border-gray-300 rounded px-3 py-2">
|
|
<option value="">All Languages</option>
|
|
<option value="en">English</option>
|
|
<option value="fr">French</option>
|
|
<option value="de">German</option>
|
|
</select>
|
|
</div>
|
|
<div>
|
|
<label class="block text-sm font-medium text-gray-700 mb-2">Region</label>
|
|
<select id="filter-region" class="w-full border border-gray-300 rounded px-3 py-2">
|
|
<option value="">All Regions</option>
|
|
<option value="US">United States</option>
|
|
<option value="UK">United Kingdom</option>
|
|
<option value="France">France</option>
|
|
<option value="Germany">Germany</option>
|
|
<option value="Australia">Australia</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Publications Grid -->
|
|
<div id="publications-container" class="grid grid-cols-1 lg:grid-cols-2 gap-6">
|
|
<!-- Will be populated by JS -->
|
|
</div>
|
|
</div>
|
|
|
|
<script src="/js/components/navbar-admin.js?v=0.1.0.1729786000000"></script>
|
|
<script src="/js/admin/editorial-guidelines.js?v=0.1.0.1729786000000"></script>
|
|
</body>
|
|
</html>
|