উপাদানটিতে ড্রাগ-এন-ড্রপ ক্রম যুক্ত করা হচ্ছে


13

আমি জুমলা হ্যালো ওয়ার্ল্ড টিউটোরিয়ালের উপর ভিত্তি করে একটি ছোট্ট উপাদান তৈরি করেছি এবং এখন আমি একই রকম ড্রাগ-এন-ড্রপ পুনরায় ক্রমটি প্রয়োগ করতে চাই যা আরও অনেক জুমলার উপাদানগুলির মধ্যে রয়েছে:

এখানে চিত্র বর্ণনা লিখুন

প্রথম কলাম অনুসারে বাছাই করে, অবস্থান পরিবর্তন করতে প্রতিটি টেবিলের সারিটি টেনে আনা সম্ভব।

জুমলায় এই কার্যকারিতা যুক্ত করার কোনও দেশীয় উপায় আছে, বা আমাকে নিজে এটি প্রোগ্রাম করতে হবে?

সঠিক দিকের কোনও ন্যাজ প্রশংসা করেছে।

উত্তর:


16

কিছু পূর্বশর্ত রয়েছে এবং আপনার ভিউ টেম্পলেটটিতে আপনাকে কিছু পরিবর্তন করতে হবে। তবে আপনাকে এই বৈশিষ্ট্যটি নিজেই বিকাশ করতে হবে না।

পূর্বশর্ত

  • আপনার ডাটাবেস সারণিতে আপনার কলামের আইএনটি টাইপের ক্রম দরকার
  • আপনার তালিকা ভিউ ইতিমধ্যে বাছাইযোগ্য হওয়া উচিত (টেবিল কলাম শিরোনাম ক্লিক করে)

পরিবর্তন

আপনার টেবিলের সারিগুলিকে টেনে আনুন এবং ছাড়িয়ে দেওয়ার জন্য এটি সর্বাধিক গুরুত্বপূর্ণ অংশ:

JHtml::_('sortablelist.sortable', 'itemList', 'adminForm', strtolower($listDirn), $saveOrderingUrl);

আপনার টেবিলটি ডাটাবেস টেবিল কলাম ক্রম অনুসারে বাছাই করা থাকলে কেবল সক্রিয় করা উচিত (যেমন উপরের লাইনটি কার্যকর করুন) । আপনার টেবিলটি কোন কলাম অনুসারে বাছাই করা হয়েছে এবং কোন দিকে (এএসসি বা ডিইএসসি) তা সন্ধান করতে হবে। আপনার ডিফল্ট.এফপি এর শুরুতে এটি করুন:

$listOrder = $this->escape($this->state->get('list.ordering'));
$listDirn  = $this->escape($this->state->get('list.direction'));

আপনার টেবিলটি কলাম অর্ডার দিয়ে অর্ডার করা হয়েছে কিনা তা পরীক্ষা করুন

$saveOrder = $listOrder == 'a.ordering';

আপনার টেবিল সারিগুলিকে টেনে আনুন এবং সাজানোর ব্যবস্থা করুন যদি $ saveOrder সত্য হয়। টাস্কে আইটেম = আইটেমগুলিতে আপনার উপাদানটির নাম এবং "আইটেমগুলি" দিয়ে com_example প্রতিস্থাপন করুন ave

if ($saveOrder)
{
    $saveOrderingUrl = 'index.php?option=com_example&task=items.saveOrderAjax&tmpl=component';
    JHtml::_('sortablelist.sortable', 'itemList', 'adminForm', strtolower($listDirn), $saveOrderingUrl);
}

আপনি যখনই কোনও আইটেম ফেলেছেন তখন $ saveOrderingUrl এজেএক্সের মাধ্যমে কল করা হবে। যদি আপনার নিয়ামক সঠিক জুমলা এমভিসি ক্লাস (জেসিট্রোলারএডমিন) প্রসারিত করে থাকেন তবে এই পদ্ধতিটি আপনার জন্য স্বয়ংক্রিয়ভাবে উপলব্ধ। আইটেমলিস্টটি আপনার এইচটিএমএল টেবিলের আইডি এবং অ্যাডমিনফর্মটি আপনার এইচটিএমএল ফর্মের নাম (বা আইডি, নিশ্চিত নয়):

<form action="<?php echo JRoute::_('index.php?option=com_example&view=items'); ?>" method="post" name="adminForm" id="adminForm">
    ...
    <table class="table table-striped" id="itemList">
        ...
    </table>
    ...
</form>

আপনার HTML টেবিলটিতে আপনার একটি নতুন কলামের প্রয়োজন হবে column আপনার স্ক্রিনশটে এটি কলামটি খুব বামে। সারণী কলামের শিরোনামটি দেখতে এমন দেখাচ্ছে:

<th width="1%" class="nowrap center hidden-phone">
    <?php echo JHtml::_('searchtools.sort', '', 'a.ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING', 'icon-menu-2'); ?>
</th>

আপনার টেবিলের বডির জন্য আপনার সম্ভবত সমস্ত তালিকা আইটেমের মধ্য দিয়ে একটি ফোরচ লুপ রয়েছে। আপনার এইচটিএমএল টেবিলের প্রতিটি সারিতে প্রথম কক্ষটি সেই টেনে আনার আইকন হবে। যদি আপনার কাছে টানা এবং ড্রপ অক্ষম করা থাকে (কারণ আপনার টেবিলটি অর্ডার দিয়ে অর্ডার করা হয়নি ) আপনার আইকনটি নিষ্ক্রিয় করে একটি সরঞ্জামদণ্ড তৈরি করা উচিত:

<tbody>
    <?php foreach ($this->items as $i => $item) :
        $ordering  = ($listOrder == 'ordering');
    ?>
    <tr class="row<?php echo $i % 2; ?>">
        <td class="order nowrap center hidden-phone">
        <?php
            $iconClass = '';
            if (!$saveOrder) {
                $iconClass = ' inactive tip-top hasTooltip" title="' . JHtml::tooltipText('JORDERINGDISABLED');
            }
         ?>
             <span class="sortable-handler <?php echo $iconClass ?>">
                 <span class="icon-menu"></span>
             </span>
             <?php if ($saveOrder) : ?>
             <input type="text" style="display:none" name="order[]" size="5" value="<?php echo $item->ordering; ?>" class="width-20 text-area-order " />
             <?php endif; ?>
        </td>
  ...
</tbody>

আপনাকে ধন্যবাদ, খুব সুন্দর এবং বিস্তৃত উত্তর। আমি আসলে এটি এখনও কাজ করতে সক্ষম হননি তবে আমি আরও কাছাকাছি আসছি :)
বোগোওয়ে

আপনার যদি কোনও প্রশ্ন থাকে বা আমার গাইডের কিছু আছে তবে ভুল বা উন্নতির প্রয়োজন হলে আমাকে জানান।
ফ্রিপেল

আমি বুঝতে পেরেছি! আমি পরিবর্তন করতে ভুলে গেছি task=items.saveOrderAjaxকরতে task=myviews.saveOrderAjax। এখন এটি ভাল কাজ করছে।
বোগোওয়ে

ড্র্যাগ'ন ড্রপ বাছাই সার্চটুলগুলির সাথে যুক্ত। আপনি যদি অনুসন্ধানের সরঞ্জামগুলি প্রয়োগ না করে থাকেন (নিবন্ধগুলির মতো) তবে ড্রাগ'আরড্রপ লিঙ্কের অনুসারে বাছাইযোগ্য কাজ করে না।
ডেনিস হেইডেন

এখানে কিছু অনুপস্থিত। আমি টেবিলের আইটেমগুলি টেনে আনতে পারি না এবং ক্রমের কলামটিও বাছাই করতে পারি না।
TIIUNDER
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.