当前位置: 首页>>代码示例>>PHP>>正文


PHP ilUtil::appendUrlParameterString方法代码示例

本文整理汇总了PHP中ilUtil::appendUrlParameterString方法的典型用法代码示例。如果您正苦于以下问题:PHP ilUtil::appendUrlParameterString方法的具体用法?PHP ilUtil::appendUrlParameterString怎么用?PHP ilUtil::appendUrlParameterString使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ilUtil的用法示例。


在下文中一共展示了ilUtil::appendUrlParameterString方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: getAudioScript

 /**
  * @return string
  */
 public static function getAudioScript()
 {
     $script = self::getDirectory() . '/securimage_play.swf';
     $script = ilUtil::appendUrlParameterString($script, 'audio_file=' . self::getDirectory() . '/il_securimage_play.php', true);
     $script = ilUtil::appendUrlParameterString($script, 'icon_file=' . ilUtil::getImagePath('icon_audiocaptcha-19.png'), true);
     return $script;
 }
开发者ID:arlendotcn,项目名称:ilias,代码行数:10,代码来源:class.ilSecurImageUtil.php

示例2: getNodeHref

 function getNodeHref($a_node)
 {
     if ($this->getSetLinkTargetScript() == "") {
         return "#";
     } else {
         $link = ilUtil::appendUrlParameterString($this->getSetLinkTargetScript(), "linktype=RepositoryItem" . "&linktarget=il__" . $a_node["type"] . "_" . $a_node["child"]);
         return $link;
     }
 }
开发者ID:arlendotcn,项目名称:ilias,代码行数:9,代码来源:class.ilIntLinkRepItemExplorerGUI.php

示例3: buildLinkTarget

 function buildLinkTarget($a_node_id, $a_type)
 {
     if ($this->getSetLinkTargetScript() == "") {
         return "#";
     } else {
         //$tpl->setVariable("LINK_TARGET", "content");
         $link = ilUtil::appendUrlParameterString($this->getSetLinkTargetScript(), "linktype=RepositoryItem" . "&linktarget=il__" . $a_type . "_" . $a_node_id);
         return $link;
     }
 }
开发者ID:Walid-Synakene,项目名称:ilias,代码行数:10,代码来源:class.ilIntLinkRepItemExplorer.php

示例4: getCommandLink

 /**
  * Get command link url.
  *
  * @param	int			$a_ref_id		reference id
  * @param	string		$a_cmd			command
  *
  */
 function getCommandLink($a_cmd)
 {
     global $ilCtrl;
     $a_cmd = explode('::', $a_cmd);
     if (count($a_cmd) == 2) {
         $cmd_link = $ilCtrl->getLinkTargetByClass(array('ilRepositoryGUI', 'ilObjTestGUI', $a_cmd[0]), $a_cmd[1]);
     } else {
         $cmd_link = $ilCtrl->getLinkTargetByClass('ilObjTestGUI', $a_cmd[0]);
     }
     $params = array_merge(array('ref_id' => $this->ref_id), $this->command_link_params);
     foreach ($params as $param => $value) {
         $cmd_link = ilUtil::appendUrlParameterString($cmd_link, "{$param}={$value}", true);
     }
     return $cmd_link;
 }
开发者ID:Walid-Synakene,项目名称:ilias,代码行数:22,代码来源:class.ilObjTestListGUI.php

示例5: setilLMMenu


//.........这里部分代码省略.........
     }
     include_once "./Services/Payment/classes/class.ilPaymentObject.php";
     $requires_purchase_to_access = ilPaymentObject::_requiresPurchaseToAccess((int) $_GET['ref_id']);
     // content
     if (!$a_offline && $ilAccess->checkAccess("read", "", $_GET["ref_id"])) {
         $ilCtrl->setParameterByClass("illmpresentationgui", "obj_id", $_GET["obj_id"]);
         $tabs_gui->{$addcmd}("content", $ilCtrl->getLinkTargetByClass("illmpresentationgui", "layout"), "", "", $buttonTarget, $active["content"]);
     }
     // table of contents
     if (!$requires_purchase_to_access && $this->object->isActiveTOC() && $ilAccess->checkAccess("read", "", $_GET["ref_id"])) {
         if (!$a_offline) {
             $ilCtrl->setParameterByClass("illmpresentationgui", "obj_id", $_GET["obj_id"]);
             $link = $ilCtrl->getLinkTargetByClass("illmpresentationgui", "showTableOfContents");
         } else {
             $link = "./table_of_contents.html";
         }
         $tabs_gui->{$addcmd}("cont_toc", $link, "", "", $buttonTarget, $active["toc"]);
     }
     // print view
     if (!$requires_purchase_to_access && $this->object->isActivePrintView() && $ilAccess->checkAccess("read", "", $_GET["ref_id"])) {
         if (!$a_offline) {
             $ilCtrl->setParameterByClass("illmpresentationgui", "obj_id", $_GET["obj_id"]);
             $link = $ilCtrl->getLinkTargetByClass("illmpresentationgui", "showPrintViewSelection");
             $tabs_gui->{$addcmd}("cont_print_view", $link, "", "", $buttonTarget, $active["print"]);
         }
     }
     // download
     if (!$requires_purchase_to_access && $ilUser->getId() == ANONYMOUS_USER_ID) {
         $is_public = $this->object->isActiveDownloadsPublic();
     } else {
         if (!$requires_purchase_to_access) {
             $is_public = true;
         }
     }
     if (!$requires_purchase_to_access && $this->object->isActiveDownloads() && !$a_offline && $is_public && $ilAccess->checkAccess("read", "", $_GET["ref_id"])) {
         $ilCtrl->setParameterByClass("illmpresentationgui", "obj_id", $_GET["obj_id"]);
         $link = $ilCtrl->getLinkTargetByClass("illmpresentationgui", "showDownloadList");
         $tabs_gui->{$addcmd}("download", $link, "", "", $buttonTarget, $active["download"]);
     }
     // info button
     if ($a_export_format != "scorm" && !$a_offline) {
         if (!$a_offline) {
             $ilCtrl->setParameterByClass("illmpresentationgui", "obj_id", $_GET["obj_id"]);
             $link = $this->ctrl->getLinkTargetByClass(array("illmpresentationgui", "ilinfoscreengui"), "showSummary");
         } else {
             $link = "./info.html";
         }
         $tabs_gui->{$addcmd}($requires_purchase_to_access ? 'buy' : 'info_short', $link, "", "", $buttonTarget, $active["info"]);
     }
     include_once './Services/Tracking/classes/class.ilLearningProgressAccess.php';
     if (ilLearningProgressAccess::checkAccess($_GET["ref_id"])) {
         include_once './Services/Object/classes/class.ilObjectLP.php';
         $olp = ilObjectLP::getInstance($this->object->getId());
         if ($olp->getCurrentMode() == ilLPObjSettings::LP_MODE_COLLECTION_MANUAL) {
             $tabs_gui->{$addcmd}("learning_progress", $this->ctrl->getLinkTargetByClass(array("illmpresentationgui", "illearningprogressgui"), "editmanual"), "", "", $buttonTarget, $active["learning_progress"]);
         } else {
             if ($olp->getCurrentMode() == ilLPObjSettings::LP_MODE_COLLECTION_TLT) {
                 $tabs_gui->{$addcmd}("learning_progress", $this->ctrl->getLinkTargetByClass(array("illmpresentationgui", "illearningprogressgui"), "showtlt"), "", "", $buttonTarget, $active["learning_progress"]);
             }
         }
     }
     // edit learning module
     if (!$a_offline && $a_cur_page > 0) {
         if ($rbacsystem->checkAccess("write", $_GET["ref_id"])) {
             //$page_id = $this->getCurrentPageId();
             $page_id = $a_cur_page;
             $tabs_gui->{$addcmd}("edit_page", ILIAS_HTTP_PATH . "/ilias.php?baseClass=ilLMEditorGUI&ref_id=" . $_GET["ref_id"] . "&obj_id=" . $page_id . "&to_page=1", "", "", $buttonTarget, $active["edit_page"]);
         }
     }
     if (!$requires_purchase_to_access) {
         // get user defined menu entries
         $this->__initLMMenuEditor();
         $entries = $this->lmme_obj->getMenuEntries(true);
         if (count($entries) > 0 && $ilAccess->checkAccess("read", "", $_GET["ref_id"])) {
             foreach ($entries as $entry) {
                 // build goto-link for internal resources
                 if ($entry["type"] == "intern") {
                     $entry["link"] = ILIAS_HTTP_PATH . "/goto.php?target=" . $entry["link"];
                 }
                 // add http:// prefix if not exist
                 if (!strstr($entry["link"], '://') && !strstr($entry["link"], 'mailto:')) {
                     $entry["link"] = "http://" . $entry["link"];
                 }
                 if (!strstr($entry["link"], 'mailto:')) {
                     $entry["link"] = ilUtil::appendUrlParameterString($entry["link"], "ref_id=" . $this->ref_id . "&structure_id=" . $this->obj_id);
                 }
                 $tabs_gui->{$addcmd}($entry["title"], $entry["link"], "", "", "_blank", "", true);
             }
         }
     }
     // user interface hook [uihk]
     $pl_names = $ilPluginAdmin->getActivePluginsForSlot(IL_COMP_SERVICE, "UIComponent", "uihk");
     $plugin_html = false;
     foreach ($pl_names as $pl) {
         $ui_plugin = ilPluginAdmin::getPluginObject(IL_COMP_SERVICE, "UIComponent", "uihk", $pl);
         $gui_class = $ui_plugin->getUIClassInstance();
         $resp = $gui_class->modifyGUI("Modules/LearningModule", "lm_menu_tabs", array("lm_menu_tabs" => $tabs_gui));
     }
     return $tabs_gui->{$getcmd}();
 }
开发者ID:Walid-Synakene,项目名称:ilias,代码行数:101,代码来源:class.ilObjContentObjectGUI.php

示例6: getLanguageSelection

 static function getLanguageSelection($a_in_topbar = false)
 {
     global $lng;
     global $ilUser;
     include_once "./Services/UIComponent/GroupedList/classes/class.ilGroupedListGUI.php";
     $gr_list = new ilGroupedListGUI();
     $gr_list->setAsDropDown(true);
     $languages = $lng->getInstalledLanguages();
     if (sizeof($languages) > 1) {
         foreach ($languages as $lang_key) {
             $base = substr($_SERVER["REQUEST_URI"], strrpos($_SERVER["REQUEST_URI"], "/") + 1);
             $base = preg_replace("/&*lang=[a-z]{2}&*/", "", $base);
             $link = ilUtil::appendUrlParameterString($base, "lang=" . $lang_key);
             $link = str_replace("?&", "?", $link);
             $gr_list->addEntry($lng->_lookupEntry($lang_key, "meta", "meta_l_" . $lang_key), $link);
         }
         return $gr_list->getHTML();
     }
 }
开发者ID:JKN-INC,项目名称:SHELBY-ILIAS,代码行数:19,代码来源:class.ilMainMenuGUI.php

示例7: getUrlParameters

 /**
  * Get URL parameters for a class and append them to a string
  */
 public function getUrlParameters($a_class, $a_str, $a_cmd = "", $xml_style = false)
 {
     // note: $a_class may be an array!
     //$a_class = strtolower($a_class);
     $params = $this->getParameterArrayByClass($a_class, $a_cmd);
     foreach ($params as $par => $value) {
         if (strlen((string) $value)) {
             $a_str = ilUtil::appendUrlParameterString($a_str, $par . "=" . $value, $xml_style);
         }
     }
     return $a_str;
 }
开发者ID:arlendotcn,项目名称:ilias,代码行数:15,代码来源:class.ilCtrl.php

示例8: executeCreateQuestionObject

 /**
  * Called when a new question should be created from a test after confirmation
  *
  * Called when a new question should be created from a test after confirmation
  *
  * @access    public
  */
 function executeCreateQuestionObject()
 {
     $qpl_ref_id = $_REQUEST["sel_qpl"];
     $qpl_mode = $_REQUEST['usage'];
     if (isset($_REQUEST['qtype'])) {
         include_once 'Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php';
         $sel_question_types = ilObjQuestionPool::getQuestionTypeByTypeId($_REQUEST["qtype"]);
     } else {
         if (isset($_REQUEST['sel_question_types'])) {
             $sel_question_types = $_REQUEST["sel_question_types"];
         }
     }
     if (!$qpl_mode || $qpl_mode == 2 && strcmp($_REQUEST["txt_qpl"], "") == 0 || $qpl_mode == 3 && strcmp($qpl_ref_id, "") == 0) {
         // Mantis #14890
         $_REQUEST['sel_question_types'] = $sel_question_types;
         ilUtil::sendInfo($this->lng->txt("questionpool_not_entered"));
         $this->createQuestionObject();
         return;
     } else {
         $_SESSION["test_id"] = $this->object->getRefId();
         if ($qpl_mode == 2 && strcmp($_REQUEST["txt_qpl"], "") != 0) {
             // create a new question pool and return the reference id
             $qpl_ref_id = $this->createQuestionPool($_REQUEST["txt_qpl"]);
         } else {
             if ($qpl_mode == 1) {
                 $qpl_ref_id = $_GET["ref_id"];
             }
         }
         include_once "./Modules/TestQuestionPool/classes/class.ilObjQuestionPoolGUI.php";
         $baselink = "ilias.php?baseClass=ilObjQuestionPoolGUI&ref_id=" . $qpl_ref_id . "&cmd=createQuestionForTest&test_ref_id=" . $_GET["ref_id"] . "&calling_test=" . $_GET["ref_id"] . "&sel_question_types=" . $sel_question_types;
         if (isset($_REQUEST['prev_qid'])) {
             $baselink .= '&prev_qid=' . $_REQUEST['prev_qid'];
         } else {
             if (isset($_REQUEST['position'])) {
                 $baselink .= '&prev_qid=' . $_REQUEST['position'];
             }
         }
         if ($_REQUEST['test_express_mode']) {
             $baselink .= '&test_express_mode=1';
         }
         if (isset($_REQUEST['add_quest_cont_edit_mode'])) {
             $baselink = ilUtil::appendUrlParameterString($baselink, "add_quest_cont_edit_mode={$_REQUEST['add_quest_cont_edit_mode']}", false);
         }
         #var_dump($_REQUEST['prev_qid']);
         ilUtil::redirect($baselink);
         exit;
     }
 }
开发者ID:bheyser,项目名称:qplskl,代码行数:55,代码来源:class.ilObjTestGUI.php

示例9: getLanguageSelection

 static function getLanguageSelection($a_in_topbar = false)
 {
     global $lng;
     include_once "./Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php";
     $selection = new ilAdvancedSelectionListGUI();
     $selection->setFormSelectMode("change_lang_to", "ilLanguageSelection", true, "#", "ilNavHistory", "ilNavHistoryForm", "", $lng->txt("ok"), "ilLogin");
     //$selection->setListTitle($lng->txt("choose_language"));
     $selection->setListTitle($lng->txt("language"));
     $selection->setItemLinkClass("small");
     if ($a_in_topbar) {
         $selection->setHeaderIcon(ilAdvancedSelectionListGUI::DOWN_ARROW_TOPBAR);
     }
     $languages = $lng->getInstalledLanguages();
     if (sizeof($languages) > 1) {
         foreach ($languages as $lang_key) {
             $base = substr($_SERVER["REQUEST_URI"], strrpos($_SERVER["REQUEST_URI"], "/") + 1);
             $base = preg_replace("/&*lang=[a-z]{2}&*/", "", $base);
             $link = ilUtil::appendUrlParameterString($base, "lang=" . $lang_key);
             $link = str_replace("?&", "?", $link);
             $selection->addItem($lng->_lookupEntry($lang_key, "meta", "meta_l_" . $lang_key), $lang_key, $link, "", "", "");
         }
         return $selection->getHTML();
     }
 }
开发者ID:khanhnnvn,项目名称:ilias_E-learning,代码行数:24,代码来源:class.ilMainMenuGUI.php

示例10: setTabs

 /**
  * Set tabs
  */
 function setTabs()
 {
     if ($this->getSelfAssessmentMode()) {
         return;
     }
     global $ilTabs, $ilCtrl, $lng;
     include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
     if ($this->content_obj != "") {
         $q_ref = $this->content_obj->getQuestionReference();
     }
     if ($q_ref != "") {
         $inst_id = ilInternalLink::_extractInstOfTarget($q_ref);
         if (!($inst_id > 0)) {
             $q_id = ilInternalLink::_extractObjIdOfTarget($q_ref);
         }
     }
     $ilTabs->addTarget("question", $ilCtrl->getLinkTarget($this, "edit"), array("editQuestion", "save", "cancel", "addSuggestedSolution", "cancelExplorer", "linkChilds", "removeSuggestedSolution", "addPair", "addTerm", "delete", "deleteTerms", "editMode", "upload", "saveEdit", "uploadingImage", "uploadingImagemap", "addArea", "deletearea", "saveShape", "back", "saveEdit", "changeGapType", "createGaps", "addItem", "addYesNo", "addTrueFalse", "toggleGraphicalAnswers", "setMediaMode"), "");
     if ($q_id > 0) {
         if (assQuestion::_getQuestionType($q_id) != "assTextQuestion") {
             require_once 'Modules/TestQuestionPool/classes/class.assQuestionGUI.php';
             require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionFeedbackEditingGUI.php';
             $tabCommands = assQuestionGUI::getCommandsFromClassConstants('ilAssQuestionFeedbackEditingGUI');
             $tabLink = ilUtil::appendUrlParameterString($ilCtrl->getLinkTargetByClass('ilAssQuestionFeedbackEditingGUI', ilAssQuestionFeedbackEditingGUI::CMD_SHOW), "q_id=" . (int) $q_id);
             $ilTabs->addTarget('feedback', $tabLink, $tabCommands, $ilCtrl->getCmdClass(), '');
         }
     }
 }
开发者ID:Walid-Synakene,项目名称:ilias,代码行数:30,代码来源:class.ilPCQuestionGUI.php

示例11: performRequestCmd

 /**
  * Performs a hint request and invokes the (re-)saving the question solution.
  * Redirects to local showHint command
  * 
  * @access	private
  * @global	ilCtrl $ilCtrl
  */
 private function performRequestCmd()
 {
     global $ilCtrl;
     if (!isset($_GET['hintId']) || !(int) $_GET['hintId']) {
         throw new ilTestException('no hint id given');
     }
     $nextRequestableHint = ilAssQuestionHintTracking::getNextRequestableHint($this->questionOBJ->getId(), $this->testSession->getActiveId(), $this->testSession->getPass());
     if ($nextRequestableHint->getId() != (int) $_GET['hintId']) {
         throw new ilTestException('given hint id does not relate to the next requestable hint');
     }
     ilAssQuestionHintTracking::storeRequest($nextRequestableHint, $this->questionOBJ->getId(), $this->testSession->getActiveId(), $this->testSession->getPass());
     $this->testOutputGUI->saveQuestionSolution();
     $redirectTarget = ilUtil::appendUrlParameterString($ilCtrl->getLinkTarget($this, self::CMD_SHOW_HINT, '', false, false), "hintId={$nextRequestableHint->getId()}");
     ilUtil::redirect($redirectTarget);
 }
开发者ID:khanhnnvn,项目名称:ilias_E-learning,代码行数:22,代码来源:class.ilAssQuestionHintRequestGUI.php

示例12: buildMemberResultLinkTarget

 protected function buildMemberResultLinkTarget($refId, $activeId)
 {
     global $ilCtrl;
     $link = $ilCtrl->getLinkTargetByClass(array('ilObjTestOverviewGUI', 'ilobjtestgui', 'iltestevaluationgui'), 'outParticipantsPassDetails');
     $link = ilUtil::appendUrlParameterString($link, "ref_id={$refId}");
     $link = ilUtil::appendUrlParameterString($link, "active_id={$activeId}");
     return $link;
 }
开发者ID:ionesoft,项目名称:TestOverview,代码行数:8,代码来源:class.ilTestOverviewTableGUI.php

示例13: getDeleteHref

 private function getDeleteHref($sourcePoolDefinitionId)
 {
     $href = $this->ctrl->getLinkTarget($this->parent_obj, ilTestRandomQuestionSetConfigGUI::CMD_DELETE_SINGLE_SRC_POOL_DEF);
     $href = ilUtil::appendUrlParameterString($href, "src_pool_def_id=" . $sourcePoolDefinitionId, true);
     return $href;
 }
开发者ID:arlendotcn,项目名称:ilias,代码行数:6,代码来源:class.ilTestRandomQuestionSetSourcePoolDefinitionListTableGUI.php

示例14: confirmRequestCmd

 /**
  * shows a confirmation screen for a hint request
  * 
  * @access	private
  * @global	ilCtrl $ilCtrl
  * @global	ilTemplate $tpl
  * @global	ilLanguage $lng
  */
 private function confirmRequestCmd()
 {
     global $ilCtrl, $tpl, $lng;
     $nextRequestableHint = $this->questionHintTracking->getNextRequestableHint();
     require_once 'Services/Utilities/classes/class.ilConfirmationGUI.php';
     $confirmation = new ilConfirmationGUI();
     $formAction = ilUtil::appendUrlParameterString($ilCtrl->getFormAction($this), "hintId={$nextRequestableHint->getId()}");
     $confirmation->setFormAction($formAction);
     $confirmation->setConfirm($lng->txt('tst_question_hints_confirm_request'), self::CMD_PERFORM_REQUEST);
     $confirmation->setCancel($lng->txt('tst_question_hints_cancel_request'), self::CMD_BACK_TO_QUESTION);
     $confirmation->setHeaderText(sprintf($lng->txt('tst_question_hints_request_confirmation'), $nextRequestableHint->getIndex(), $nextRequestableHint->getPoints()));
     $this->populateContent($ilCtrl->getHtml($confirmation));
 }
开发者ID:arlendotcn,项目名称:ilias,代码行数:21,代码来源:class.ilAssQuestionHintRequestGUI.php

示例15: requestAdobeConnectContent

 public function requestAdobeConnectContent()
 {
     /**
      * @var $ilSetting ilSetting
      */
     global $ilSetting;
     if (!isset($_GET['record_url']) || !strlen($_GET['record_url'])) {
         $this->showContent();
         return;
     }
     $url = ilUtil::stripSlashes($_GET['record_url']);
     $this->pluginObj->includeClass('class.ilAdobeConnectUserUtil.php');
     $this->pluginObj->includeClass('class.ilAdobeConnectQuota.php');
     $ilAdobeConnectUser = new ilAdobeConnectUserUtil($this->user->getId());
     $ilAdobeConnectUser->ensureAccountExistance();
     $xmlAPI = ilXMLApiFactory::getApiByAuthMode();
     $xmlAPI->logout($_SESSION['xavc_last_sso_sessid']);
     $session = $ilAdobeConnectUser->loginUser();
     $_SESSION['xavc_last_sso_sessid'] = $session;
     $url = ilUtil::appendUrlParameterString($url, 'session=' . $session);
     $presentation_url = ilAdobeConnectServer::getPresentationUrl(true);
     $logout_url = $presentation_url . '/api/xml?action=logout';
     if ($ilSetting->get('short_inst_name') != "") {
         $title_prefix = $ilSetting->get('short_inst_name');
     } else {
         $title_prefix = 'ILIAS';
     }
     $sso_tpl = new ilTemplate($this->pluginObj->getDirectory() . "/templates/default/tpl.perform_sso.html", true, true);
     $sso_tpl->setVariable('SPINNER_SRC', $this->pluginObj->getDirectory() . '/templates/js/spin.js');
     $sso_tpl->setVariable('TITLE_PREFIX', $title_prefix);
     $sso_tpl->setVariable('LOGOUT_URL', $logout_url);
     $sso_tpl->setVariable('URL', $url);
     $sso_tpl->setVariable('INFO_TXT', $this->pluginObj->txt('redirect_in_progress'));
     $sso_tpl->setVariable('OBJECT_TITLE', $this->object->getTitle());
     $sso_tpl->show();
     exit;
 }
开发者ID:KamuiXenom,项目名称:ILIAS_AdobeConnectPlugin,代码行数:37,代码来源:class.ilObjAdobeConnectGUI.php


注:本文中的ilUtil::appendUrlParameterString方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。