1. PHP / Говнокод #18890

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    function Show($aMenu, $level=0)
    	{
    		$scripts = '';
    
    		$bSubmenu = (isset($aMenu["items"]) && is_array($aMenu["items"]) && !empty($aMenu["items"])) || isset($aMenu["dynamic"]) && $aMenu["dynamic"] == true;
    		$bSectionActive = isset($aMenu["items_id"]) && (in_array($aMenu["items_id"], array_keys($this->aActiveSections)) || $this->IsSectionActive($aMenu["items_id"]));
    
    		$icon = isset($aMenu["icon"]) && $aMenu["icon"] <> ""
    			? '<span class="adm-submenu-item-link-icon '.$aMenu["icon"].'"></span>'
    //			: ($level < 1 ? '<span class="adm-submenu-item-link-icon" id="default_menu_icon"></span>' : '');
    			: '';
    		$id = 'menu_item_'.RandString(10);
    		?><div class="adm-sub-submenu-block<?=$level > 0 ? ' adm-submenu-level-'.($level+1) : ''?><?=$bSectionActive && isset($aMenu["items"]) && is_array($aMenu["items"]) && count($aMenu['items']) > 0 ? ' adm-sub-submenu-open' : ''?><?=$aMenu["_active"] ? ' adm-submenu-item-active' : ''?>"><?
    		?><div class="adm-submenu-item-name<?=!$bSubmenu ? ' adm-submenu-no-children' : ''?>" id="<?=$id?>" data-type="submenu-item"<?=isset($aMenu['fav_id']) ? ' data-fav-id="'.intval($aMenu['fav_id']).'"' : ''?>><?
    		$onclick = '';
    		if ($bSubmenu)
    		{
    			if(isset($aMenu["dynamic"]) && $aMenu["dynamic"] == true && (!$aMenu["items"] || count($aMenu["items"]) <= 0))
    			{
    				$onclick = "BX.adminMenu.toggleDynSection(".$this->_get_menu_item_width($level).", this.parentNode.parentNode, '".htmlspecialcharsbx(CUtil::JSEscape($aMenu["module_id"]))."', '".htmlspecialcharsbx(CUtil::JSEscape($aMenu["items_id"]))."', '".($level+1)."')";
    			}
    			elseif(!$aMenu["dynamic"] || !$bSectionActive || $aMenu['dynamic'] && $bSectionActive && isset($aMenu["items"]) && count($aMenu["items"]) > 0)
    			{
    				$onclick = "BX.adminMenu.toggleSection(this.parentNode.parentNode, '".htmlspecialcharsbx(CUtil::JSEscape($aMenu["items_id"]))."', '".($level+1)."')";
    			} //endif;
    		}
    
    		?><span class="adm-submenu-item-arrow"<?=$level > 0 ? ' style="width:'.$this->_get_menu_item_width($level).'px;"' : ''?><?=$onclick ? ' onclick="'.$onclick.'"' : ''?>><span class="adm-submenu-item-arrow-icon"></span></span><?
    
    		if(isset($aMenu["url"]) && $aMenu["url"] <> ""):
    			?><a class="adm-submenu-item-name-link<?=(isset($aMenu["readonly"]) && $aMenu["readonly"] == true? ' menutext-readonly':'')?>"<?=$level > 0 ? ' style="padding-left:'.$this->_get_menu_item_padding($level).'px;"' : ''?> href="<?=$aMenu["url"]?>"><?=$icon?><span class="adm-submenu-item-name-link-text"><?=$aMenu["text"]?></span></a><?
    		elseif ($bSubmenu):
    			if(isset($aMenu["dynamic"]) && $aMenu["dynamic"] == true && !$bSectionActive && (!$aMenu["items"] || count($aMenu["items"]) <= 0)):
    				?><a class="adm-submenu-item-name-link<?=(isset($aMenu["readonly"]) && $aMenu["readonly"] == true? ' menutext-readonly':'')?>"<?=$level > 0 ? ' style="padding-left:'.$this->_get_menu_item_padding($level).'px;"' : ''?> href="javascript:void(0)" onclick="BX.adminMenu.toggleDynSection(<?=$this->_get_menu_item_width($level)?>, this.parentNode.parentNode, '<?=htmlspecialcharsbx(CUtil::JSEscape($aMenu["module_id"]))?>', '<?=htmlspecialcharsbx(CUtil::JSEscape($aMenu["items_id"]))?>', '<?=$level+1?>')"><?=$icon?><span class="adm-submenu-item-name-link-text"><?=$aMenu["text"]?></span></a><?
    			elseif(!$aMenu["dynamic"] || !$bSectionActive || $aMenu['dynamic'] && $bSectionActive && isset($aMenu["items"]) && count($aMenu["items"]) > 0):
    				?><a class="adm-submenu-item-name-link<?=(isset($aMenu["readonly"]) && $aMenu["readonly"] == true? ' menutext-readonly':'')?>"<?=$level > 0 ? ' style="padding-left:'.$this->_get_menu_item_padding($level).'px;"' : ''?> href="javascript:void(0)" onclick="BX.adminMenu.toggleSection(this.parentNode.parentNode, '<?=htmlspecialcharsbx(CUtil::JSEscape($aMenu["items_id"]))?>', '<?=$level+1?>')"><?=$icon?><span class="adm-submenu-item-name-link-text"><?=$aMenu["text"]?></span></a><?
    			else:
    				?><span class="adm-submenu-item-name-link<?=(isset($aMenu["readonly"]) && $aMenu["readonly"] == true? ' menutext-readonly':'')?>"<?=$level > 0 ? ' style="padding-left:'.$this->_get_menu_item_padding($level).'px"' : ''?>><?=$icon?><span class="adm-submenu-item-name-link-text"><?=$aMenu["text"]?></span></span><?
    			endif;
    		else:
    			?><span class="adm-submenu-item-name-link<?=(isset($aMenu["readonly"]) && $aMenu["readonly"] == true? ' menutext-readonly':'')?>"<?=$level > 0 ? ' style="padding-left:'.$this->_get_menu_item_padding($level).'px"' : ''?>><?=$icon?><span class="adm-submenu-item-name-link-text"><?=$aMenu["text"]?></span></span><?
    		endif;
    		?></div><?
    
    		if(($bSubmenu || (isset($aMenu["dynamic"]) && $aMenu["dynamic"] == true)) && is_array($aMenu["items"]))
    		{
    			echo  "<div class=\"adm-sub-submenu-block-children\">";
    			foreach($aMenu["items"] as $submenu)
    			{
    				if($submenu)
    				{
    					$scripts .= $this->Show($submenu, $level+1);
    				}
    			}
    			echo "</div>";
    		}

    это между прочим метод класса CAdminPage административного интерфейса 1С Битрикс.
    Адская смесь всех вэб-технологий, от которой лопаются глаза!

    Запостил: nik757, 20 Октября 2015

    Комментарии (23) RSS

    • Мне кажется, что 95% людей на планете - тоже написаны на Битрикс
      Ответить
    • Ты так говоришь "между прочим", как-будто 1С Битрикс - это образец идеального кода идеальной компании.
      Ответить
      • пффф, это в каком месте такое утверждалось? ппц, %лять, образец идельного кода.
        "Между прочем" - это потому, что весь это 3,14здец находится в методе класса, где ему не место. Не говоря уже про разделение M-V-C а тут млять порноMVC в одном файле
        Ответить
    • Это битрикс детка! Чему ты удивляешься? http://habrahabr.ru/company/bitrix/blog/139721/#comment_4669119
      Ответить
    • вот вам смешно, а у меня на столе лежит ТЗ от заказчика, где, окромя всего прочего, требуется ему запилить портал на битриксе

      вот неужели нет адекватной замены ему? (шарепойнт не предлагать)

      а мне теперь субподряд/аутсорс искать
      Ответить
      • >вот неужели нет адекватной замены ему? (шарепойнт не предлагать)
        Полно. Как мне рассказывал один разработчик на Битрексе, заказуны сут паром от интеграции с 1С бухгалтерией.
        Хотя проблему сделать тоже самое на другие платформы я не вижу.
        Ответить
        • > интеграции с 1С бухгалтерией
          Но ведь у битрикса от 1с только название?

          И с 1с поди xml'ками общается? Или всё же более тесная интеграция?
          Ответить
          • 1с этому заказчику не нужен

            корпоративный портал - календари, персоны, чят, новости, вот это всё
            причем, почему-то конкретно на битриксе надо делать

            а у меня чо т нет совсем желания расширяться пыхоёбом по такому счастливому случаю
            Ответить
          • через SOAP может. Хотя может и через xml. И хз ещё какими способами.
            Ответить
      • >> требуется ему запилить портал на битриксе
        аналогичная ситуация. Мои соболезнования...
        Ответить
        • Мои категорические соболезнования! Я прошел через кишечник того, что битрикс назвывает "управление сайтом", но даже после этого их корппортал вызывает у меня смятение!
          Ответить
          • Слово «корппортал» в одном предложении со словом «кишечник» у меня сначала прочиталось как «копропортал».
            Ответить
            • Не, корппортал - это же портал для трупов
              Ответить

    Добавить комментарий