<?php
if (!defined('__TYPECHO_ROOT_DIR__')) exit;

/**
 * تنظیمات اصلی پوسته
 */
function themeConfig($form) {
    // ---------- تنظیمات عمومی ----------
    
    $logoUrl = new \Typecho\Widget\Helper\Form\Element\Text(
        'logoUrl', 
        NULL, 
        NULL, 
        _t('آدرس لوگو سایت'), 
        _t('آدرس تصویر لوگو را وارد کنید.')
    );
    $form->addInput($logoUrl->addRule('url', _t('لطفا آدرس معتبر وارد کنید')));

    $favicon = new \Typecho\Widget\Helper\Form\Element\Text(
        'favicon', 
        NULL, 
        NULL, 
        _t('آدرس فاویکون'), 
        _t('آدرس فایل فاویکون سایت (.ico, .png, .svg) را وارد کنید.')
    );
    $form->addInput($favicon);

    $authorAvatar = new \Typecho\Widget\Helper\Form\Element\Text(
        'authorAvatar', 
        NULL, 
        NULL, 
        _t('آدرس آواتار نویسنده'), 
        _t('آدرس عکس پروفایل را وارد کنید.')
    );
    $form->addInput($authorAvatar);

    $authorBio = new \Typecho\Widget\Helper\Form\Element\Textarea(
        'authorBio', 
        NULL, 
        _t('توضیحات کوتاه درباره نویسنده'), 
        _t('درباره نویسنده'), 
        _t('این متن در سایدبار نمایش داده می‌شود.')
    );
    $form->addInput($authorBio);

    // ---------- تنظیمات شبکه‌های اجتماعی ----------
    
    $socialTwitter = new \Typecho\Widget\Helper\Form\Element\Text('socialTwitter', NULL, NULL, _t('لینک توییتر (X)'), _t('آدرس پروفایل توییتر خود را وارد کنید.'));
    $form->addInput($socialTwitter->addRule('url', _t('آدرس معتبر نیست')));

    $socialTelegram = new \Typecho\Widget\Helper\Form\Element\Text('socialTelegram', NULL, NULL, _t('لینک تلگرام'), _t('آدرس پروفایل تلگرام خود را وارد کنید.'));
    $form->addInput($socialTelegram->addRule('url', _t('آدرس معتبر نیست')));

    $socialInstagram = new \Typecho\Widget\Helper\Form\Element\Text('socialInstagram', NULL, NULL, _t('لینک اینستاگرام'), _t('آدرس پروفایل اینستاگرام خود را وارد کنید.'));
    $form->addInput($socialInstagram->addRule('url', _t('آدرس معتبر نیست')));

    $socialLinkedin = new \Typecho\Widget\Helper\Form\Element\Text('socialLinkedin', NULL, NULL, _t('لینک لینکدین'), _t('آدرس پروفایل لینکدین خود را وارد کنید.'));
    $form->addInput($socialLinkedin->addRule('url', _t('آدرس معتبر نیست')));

    $socialGithub = new \Typecho\Widget\Helper\Form\Element\Text('socialGithub', NULL, NULL, _t('لینک گیت‌هاب'), _t('آدرس پروفایل گیت‌هاب خود را وارد کنید.'));
    $form->addInput($socialGithub->addRule('url', _t('آدرس معتبر نیست')));

    // ---------- دریافت لیست صفحات برای منوها ----------
    
    $pagesList = \Typecho\Widget::widget('Widget_Contents_Page_List');
    $pageOptions = [];
    while ($pagesList->next()) {
        $pageOptions[$pagesList->permalink] = $pagesList->title;
    }

    // ---------- تنظیمات ویجت درباره نویسنده ----------
    
    $aboutAuthorPage = new \Typecho\Widget\Helper\Form\Element\Select(
        'aboutAuthorPage',
        $pageOptions,
        '', 
        _t('صفحه "درباره من"'),
        _t('صفحه‌ای را که می‌خواهید دکمه "بیشتر بدانید" به آن لینک شود، انتخاب کنید.')
    );
    $form->addInput($aboutAuthorPage);

    $isAboutAuthorStyled = new \Typecho\Widget\Helper\Form\Element\Checkbox(
        'isAboutAuthorStyled',
        ['1' => _t('فعال‌سازی استایل پرایمری (رنگی)')],
        [],
        _t('سبک ویژه درباره نویسنده'),
        _t('اگر این گزینه را تیک بزنید، پس‌زمینه، حاشیه و دکمه ویجت درباره نویسنده به رنگ اصلی پوسته تغییر می‌کند.')
    );
    $form->addInput($isAboutAuthorStyled->multiMode());

    // ---------- تنظیمات ویجت‌های سایدبار ----------
    
    $sidebarBlock = new \Typecho\Widget\Helper\Form\Element\Checkbox(
        'sidebarBlock',
        [
            'ShowSearch'            => _t('نمایش جستجو'),
            'ShowAboutAuthor'       => _t('نمایش درباره نویسنده'),
            'ShowAboutAuthorTitle'  => _t('نمایش عنوان «درباره نویسنده»'),
            'ShowRecentPosts'       => _t('نمایش پست‌های اخیر'),
            'ShowRecentComments'    => _t('نمایش نظرات اخیر'),
            'ShowCategory'          => _t('نمایش دسته‌بندی'),            
            'ShowTags'             => _t('نمایش برچسب‌ها')
        ],
        ['ShowSearch', 'ShowAboutAuthor', 'ShowRecentPosts', 'ShowRecentComments', 'ShowCategory', 'ShowTags', 'ShowAboutAuthorTitle'],
        _t('نمایش نوار کناری')
    );
    $form->addInput($sidebarBlock->multiMode());

    // ---------- تنظیمات دسته‌بندی‌های منوی بالا ----------
    
    $categoryList = \Typecho\Widget::widget('Widget_Metas_Category_List');
    $catOptions = [];
    while ($categoryList->next()) {
        $catOptions[$categoryList->slug] = $categoryList->name;
    }

    $navCategories = new \Typecho\Widget\Helper\Form\Element\Checkbox(
        'navCategories',
        $catOptions,
        [],
        _t('دسته‌بندی‌های منوی بالا'),
        _t('دسته‌بندی‌هایی که می‌خواهید در منوی ناوبری (بین خانه و صفحات) نمایش داده شوند را انتخاب کنید.')
    );
    $form->addInput($navCategories->multiMode());

    // ---------- تنظیمات صفحات منوی بالا ----------
    
    $navPages = new \Typecho\Widget\Helper\Form\Element\Checkbox(
        'navPages',
        $pageOptions,
        [],
        _t('صفحات منوی بالا'),
        _t('صفحات مستقلی که می‌خواهید در منوی بالای سایت نمایش داده شوند را انتخاب کنید.')
    );
    $form->addInput($navPages->multiMode());

    // ---------- تنظیمات صفحات فوتر ----------
    
    $footerPages = new \Typecho\Widget\Helper\Form\Element\Checkbox(
        'footerPages',
        $pageOptions,
        [],
        _t('صفحات فوتر'),
        _t('صفحاتی را که می‌خواهید در بخش فوتر سایت نمایش داده شوند را انتخاب کنید.')
    );
    $form->addInput($footerPages->multiMode());
}

/**
 * فیلدهای سفارشی نوشته‌ها
 */
function themeFields($layout) {
    // ---------- تصویر شاخص (بنر) ----------
    $banner = new \Typecho\Widget\Helper\Form\Element\Text(
        'banner', 
        NULL, 
        NULL, 
        _t('آدرس تصویر شاخص (بنر)'), 
        _t('آدرس تصویر شاخص را وارد کنید.')
    );
    $layout->addItem($banner);

    // ---------- لینک دانلود فایل ----------
    $download_link = new \Typecho\Widget\Helper\Form\Element\Text(
        'download_link',
        NULL,
        NULL,
        _t('لینک دانلود فایل'),
        _t('آدرس کامل فایل برای دکمه دانلود را وارد کنید.')
    );
    $layout->addItem($download_link);

    // ---------- لینک پیش‌نمایش ----------
    $preview_link = new \Typecho\Widget\Helper\Form\Element\Text(
        'preview_link',
        NULL,
        NULL,
        _t('لینک پیش‌نمایش'),
        _t('آدرس کامل برای دکمه پیش‌نمایش را وارد کنید.')
    );
    $layout->addItem($preview_link);

    // ---------- گالری تصاویر ----------
    $gallery_urls = new \Typecho\Widget\Helper\Form\Element\Textarea(
        'gallery_urls',
        NULL,
        NULL,
        _t('لینک‌های گالری تصاویر'),
        _t('هر آدرس تصویر را در یک خط جداگانه وارد کنید. این تصاویر به صورت گالری نمایش داده خواهند شد.')
    );
    $layout->addItem($gallery_urls);

    $gallery_style = new \Typecho\Widget\Helper\Form\Element\Select(
        'gallery_style',
        [
            'style-zoom'  => _t('گرید با انیمیشن زوم (مدرن)'),
            'style-dark'  => _t('گرید با روکش تیره (کلاسیک)'),
        ],
        'style-zoom', 
        _t('استایل نمایش گالری'),
        _t('مدل نمایش تصاویر را انتخاب کنید.')
    );
    $layout->addItem($gallery_style);

    $gallery_columns = new \Typecho\Widget\Helper\Form\Element\Select(
        'gallery_columns',
        [
            '2' => _t('۲ ستون'),
            '3' => _t('۳ ستون'),
            '4' => _t('۴ ستون'),
        ],
        '3', 
        _t('تعداد ستون‌ها'),
        _t('تعداد ستون‌های گالری را انتخاب کنید.')
    );
    $layout->addItem($gallery_columns);

    $gallery_ratio = new \Typecho\Widget\Helper\Form\Element\Select(
        'gallery_ratio',
        [
            'landscape' => _t('افقی (Landscape)'),
            'portrait'  => _t('عمودی (Portrait)'),
            'square'    => _t('مربع (Square)'),
        ],
        'landscape',
        _t('شکل تصاویر'),
        _t('نسبت تصویر (ارتفاع) را انتخاب کنید.')
    );
    $layout->addItem($gallery_ratio);
}

// ============================================================
// توابع کمکی
// ============================================================

/**
 * دریافت تاریخ به فرمت محلی (شمسی در صورت فعال بودن)
 */
if (!function_exists('getLocalizedDate')) {
    function getLocalizedDate($timestamp = NULL, $format = 'Y/m/d') {
        if ($timestamp === NULL) {
            $timestamp = time();
        } elseif (is_string($timestamp) && !is_numeric($timestamp)) {
            $timestamp = strtotime($timestamp);
        }
        
        if (function_exists('jalali_date')) {
            return jalali_date($format, $timestamp);
        }
        
        return date($format, $timestamp);
    }
}

/**
 * دریافت نام ماه شمسی
 */
if (!function_exists('getPersianMonthName')) {
    function getPersianMonthName($monthNumber) {
        $months = [
            1 => 'فروردین', 2 => 'اردیبهشت', 3 => 'خرداد', 4 => 'تیر',
            5 => 'مرداد', 6 => 'شهریور', 7 => 'مهر', 8 => 'آبان',
            9 => 'آذر', 10 => 'دی', 11 => 'بهمن', 12 => 'اسفند'
        ];
        return isset($months[$monthNumber]) ? $months[$monthNumber] : '';
    }
}

/**
 * فرمت تاریخ برای صفحه آرشیو
 */
if (!function_exists('formatArchiveDate')) {
    function formatArchiveDate($dateString) {
        $time = strtotime($dateString);
        
        if (function_exists('jalali_date')) {
            return jalali_date('F Y', $time);
        }
        
        $enMonths = [
            'January', 'February', 'March', 'April', 'May', 'June',
            'July', 'August', 'September', 'October', 'November', 'December'
        ];
        $faMonths = [
            'ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن',
            'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر'
        ];
        
        $enMonth = date('F', $time);
        $year = date('Y', $time);
        
        return str_replace($enMonths, $faMonths, $enMonth) . ' ' . $year;
    }
}

/**
 * نمایش متادیتای نوشته
 */
if (!function_exists('postMeta')) {
    function postMeta($archive) {
        $titleTag = $archive->is('post') ? 'h1' : 'h2';
    ?>
        <<?php echo $titleTag; ?> class="post-title">
            <a itemprop="url" href="<?php $archive->permalink(); ?>"><?php $archive->title() ?></a>
        </<?php echo $titleTag; ?>>
        
        <?php if (!$archive->is('page')): ?>
        <ul class="post-meta">
            <li itemprop="author"><?php _e('نویسنده'); ?>: <?php $archive->author(); ?></li>
            <li itemprop="datePublished"><?php _e('زمان'); ?>: <time><?php echo getLocalizedDate($archive->created); ?></time></li>
            <li><?php _e('دسته‌بندی'); ?>: <?php $archive->category(','); ?></li>
            <?php if ($archive->is('index')): ?>
                <li itemprop="interactionCount"><a href="<?php $archive->permalink() ?>#comments"><?php $archive->commentsNum(_t('بدون دیدگاه'), _t('1 دیدگاه'), _t('%d دیدگاه')); ?></a></li>
            <?php endif; ?>
        </ul>
        <?php endif; ?>
    <?php
    }
}

/**
 * دریافت آدرس آواتار نویسنده
 */
function getAuthorAvatar($email) {
    $options = \Typecho\Widget::widget('Widget_Options');
    
    if (empty($email)) {
        $email = 'guest@example.com';
    }
    
    if ($options->authorAvatar) {
        return $options->authorAvatar;
    }
    
    $themeDir = basename(__DIR__);
    $localAvatarPath = __TYPECHO_ROOT_DIR__ . '/usr/themes/' . $themeDir . '/img/avatar.png';
    
    if (file_exists($localAvatarPath)) {
        return $options->siteUrl . 'usr/themes/' . $themeDir . '/img/avatar.png';
    }
    
    $gravatarUrl = 'https://www.gravatar.com/avatar/';
    $gravatarUrl .= md5( strtolower( trim( (string)$email ) ) );
    $gravatarUrl .= "?s=200&d=mp&r=g";
    
    return $gravatarUrl;
}

/**
 * افزودن data-label به جداول برای نمایش ریسپانسیو
 */
function addDataLabelsToTables($content) {
    return $content;
}