protected function getData() { $manager = SnippetManager::instance(); $snippets = $manager->listSnippets($this->theme); $searchTerm = Str::lower($this->getSearchTerm()); if (strlen($searchTerm)) { $words = explode(' ', $searchTerm); $filteredSnippets = []; foreach ($snippets as $snippet) { if ($this->textMatchesSearch($words, $snippet->getName() . ' ' . $snippet->code . ' ' . $snippet->getDescription())) { $filteredSnippets[] = $snippet; } } $snippets = $filteredSnippets; } usort($snippets, function ($a, $b) { return strcmp($a->getName(), $b->getName()); }); return $snippets; }
public function onGetSnippetNames() { $codes = array_unique(Request::input('codes')); $result = []; foreach ($codes as $snippetCode) { $parts = explode('|', $snippetCode); $componentClass = null; if (count($parts) > 1) { $snippetCode = $parts[0]; $componentClass = $parts[1]; } $snippet = SnippetManager::instance()->findByCodeOrComponent($this->theme, $snippetCode, $componentClass); if (!$snippet) { $result[$snippetCode] = sprintf(trans('rainlab.pages::lang.snippet.not_found'), $snippetCode); } else { $result[$snippetCode] = $snippet->getName(); } } return ['names' => $result]; }
/** * Apples default property values and fixes property names. * * As snippet properties are defined with data attributes, they are lower case, whereas * real property names are case sensitive. This method finds original property names defined * in snippet classes or partials and replaces property names defined in the static page markup. */ protected static function preprocessPropertyValues($theme, $snippetCode, $componentClass, $properties) { $snippet = SnippetManager::instance()->findByCodeOrComponent($theme, $snippetCode, $componentClass, true); if (!$snippet) { throw new ApplicationException(Lang::get('rainlab.pages::lang.snippet.not_found', ['code' => $snippetCode])); } $properties = array_change_key_case($properties); $snippetProperties = $snippet->getProperties(); foreach ($snippetProperties as $propertyInfo) { $propertyCode = $propertyInfo['property']; $lowercaseCode = strtolower($propertyCode); if (!array_key_exists($lowercaseCode, $properties)) { if (array_key_exists('default', $propertyInfo)) { $properties[$propertyCode] = $propertyInfo['default']; } } else { $markupPropertyInfo = $properties[$lowercaseCode]; unset($properties[$lowercaseCode]); $properties[$propertyCode] = $markupPropertyInfo; } } return $properties; }