/**
  * Render an item in the backend (list/tree)
  *
  * @param InterfaceGeneralModel $objModelRow the model to be drawn
  *
  * @return void
  */
 protected function drawItem(InterfaceGeneralModel $objModelRow)
 {
     $objNativeItem = $objModelRow->getItem();
     $objMetaModel = $objNativeItem->getMetaModel();
     $objView = MetaModelRenderSettingsFactory::byId($objMetaModel, $this->intViewId);
     if ($objView) {
         $objTemplate = new MetaModelTemplate($objView->get('template'));
     } else {
         return 'No rendersetting defined.';
     }
     if ($objMetaModel->hasVariants() && !$objNativeItem->isVariantBase()) {
         // create a clone to have a seperate copy of the object as we are going to manipulate it here.
         $objView = clone $objView;
         // loop over all attributes and remove those from rendering that are not desired.
         foreach (array_keys($objMetaModel->getInVariantAttributes()) as $strAttrName) {
             $objView->setSetting($strAttrName, NULL);
         }
     }
     $this->prepareTemplate($objTemplate, $objNativeItem, $objView);
     return $objTemplate->parse('html5', true);
 }
 /**
  * Check if two models have the same values in all properties.
  *
  * @param InterfaceGeneralModel $objModel1 The first model to compare.
  *
  * @param InterfaceGeneralModel $objModel2 The second model to compare.
  *
  * @return boolean True - If both models are same, false if not.
  */
 public function sameModels($objModel1, $objModel2)
 {
     /**
      * These must be:
      * @var GeneralModelMetaModel $objModel1
      * @var GeneralModelMetaModel $objModel2
      */
     $objNative1 = $objModel1->getItem();
     $objNative2 = $objModel2->getItem();
     if ($objNative1->getMetaModel() != $objNative2->getMetaModel()) {
         return false;
     }
     foreach ($objNative1->getMetaModel()->getAttributes() as $objAttribute) {
         if ($objNative1->get($objAttribute->getColName()) != $objNative2->get($objAttribute->getColName())) {
             return false;
         }
     }
     return true;
 }