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


PHP Workflow::trigger方法代码示例

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


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

示例1: onSubmit

 function onSubmit($vals)
 {
     loader_import('cms.Versioning.Rex');
     $collection = $vals['collection'];
     unset($vals['collection']);
     if (empty($collection)) {
         $collection = 'sitellite_page';
     }
     $return = $vals['_return'];
     unset($vals['_return']);
     $changelog = $vals['changelog'];
     unset($vals['changelog']);
     $rex = new Rex($collection);
     //$vals['sitellite_owner'] = session_username ();
     //$vals['sitellite_team'] = session_team ();
     unset($vals['submit_button']);
     unset($vals['tab1']);
     unset($vals['tab2']);
     unset($vals['tab3']);
     unset($vals['tab-end']);
     unset($vals['header_properties']);
     unset($vals['header_contact']);
     unset($vals['header_loc']);
     if ($vals['contact_url'] == 'http://') {
         $vals['contact_url'] = '';
     }
     if ($vals['loc_map'] == 'http://') {
         $vals['loc_map'] = '';
     }
     $res = $rex->create($vals, $changelog);
     if (isset($vals[$rex->key])) {
         $key = $vals[$rex->key];
     } elseif (!is_bool($res)) {
         $key = $res;
     } else {
         $key = 'Unknown';
     }
     if (!$res) {
         if (!$return) {
             $return = site_prefix() . '/index/cms-browse-action?collection=siteevent_event';
         }
         echo loader_box('cms/error', array('message' => $rex->error, 'collection' => $collection, 'key' => $key, 'action' => $method, 'data' => $vals, 'changelog' => $changelog, 'return' => $return));
     } else {
         loader_import('cms.Workflow');
         echo Workflow::trigger('add', array('collection' => $collection, 'key' => $key, 'data' => $vals, 'changelog' => intl_get('Item added.'), 'message' => 'Collection: ' . $collection . ', Item: ' . $key));
         session_set('sitellite_alert', intl_get('Your item has been created.'));
         if ($return) {
             header('Location: ' . $return);
             exit;
         }
     }
     header('Location: ' . site_prefix() . '/index/siteevent-app/id.' . $res);
     exit;
 }
开发者ID:vojtajina,项目名称:sitellite,代码行数:54,代码来源:index.php

示例2: onSubmit

 function onSubmit($vals)
 {
     loader_import('cms.Versioning.Rex');
     $collection = $vals['collection'];
     unset($vals['collection']);
     if (empty($collection)) {
         $collection = 'sitellite_page';
     }
     $return = $vals['_return'];
     unset($vals['_return']);
     $changelog = $vals['changelog'];
     unset($vals['changelog']);
     $rex = new Rex($collection);
     //$vals['sitellite_owner'] = session_username ();
     //$vals['sitellite_team'] = session_team ();
     unset($vals['submit_button']);
     unset($vals['edit-top']);
     unset($vals['edit-middle']);
     unset($vals['edit-middle2']);
     unset($vals['edit-middle3']);
     unset($vals['edit-bottom']);
     unset($vals['cover_heading']);
     $vals['ts'] = date('YmdHis');
     $res = $rex->create($vals, $changelog);
     if (isset($vals[$rex->key])) {
         $key = $vals[$rex->key];
     } elseif (!is_bool($res)) {
         $key = $res;
     } else {
         $key = 'Unknown';
     }
     if (!$res) {
         if (!empty($return)) {
             $return = site_prefix() . '/index/cms-browse-action?collection=sitepresenter_presentation';
         }
         echo loader_box('cms/error', array('message' => $rex->error, 'collection' => $collection, 'key' => $key, 'action' => $method, 'data' => $vals, 'changelog' => $changelog, 'return' => $return));
     } else {
         loader_import('cms.Workflow');
         echo Workflow::trigger('add', array('collection' => $collection, 'key' => $key, 'data' => $vals, 'changelog' => intl_get('Item added.'), 'message' => 'Collection: ' . $collection . ', Item: ' . $key));
         session_set('sitellite_alert', intl_get('Your item has been created.'));
         //if ($return) {
         //	header ('Location: ' . $return);
         //	exit;
         //}
         header('Location: ' . site_prefix() . '/index/sitepresenter-slides-action/id.' . $res);
         exit;
     }
 }
开发者ID:vojtajina,项目名称:sitellite,代码行数:48,代码来源:index.php

示例3: onSubmit

 function onSubmit($vals)
 {
     loader_import('cms.Versioning.Rex');
     $collection = $vals['collection'];
     unset($vals['collection']);
     if (empty($collection)) {
         $collection = 'sitellite_page';
     }
     $return = $vals['_return'];
     unset($vals['_return']);
     $rex = new Rex($collection);
     // default: database, database
     unset($vals['submit_button']);
     $vals['photo1'] = '';
     $vals['photo2'] = '';
     $vals['photo3'] = '';
     $vals['photo4'] = '';
     $vals['photo5'] = '';
     $vals['photo6'] = '';
     $vals['photo7'] = '';
     $vals['photo8'] = '';
     $res = $rex->create($vals);
     if (isset($vals[$rex->key]) && $vals[$rex->key] != false) {
         $key = $vals[$rex->key];
     } elseif (!is_bool($res)) {
         $key = $res;
     } else {
         $key = 'Unknown';
     }
     if (!$res) {
         die($rex->error);
     } else {
         global $cgi;
         $alpha = range('a', 'h');
         for ($i = 0; $i < 8; $i++) {
             $n = $i + 1;
             if (is_object($cgi->{'photo' . $n})) {
                 $cgi->{'photo' . $n}->move('inc/app/realty/pix', $key . $alpha[$i] . '.jpg');
                 db_execute('update realty_listing set photo' . $n . ' = "/inc/app/realty/pix/' . $key . $alpha[$i] . '.jpg" where id = ' . $key);
             }
         }
         loader_import('cms.Workflow');
         echo Workflow::trigger('add', array('collection' => $collection, 'key' => $key, 'data' => $vals, 'changelog' => intl_get('Item added.'), 'message' => 'Collection: ' . $collection . ', Item: ' . $key));
         header('Location: ' . site_prefix() . '/index/realty-details-action/id.' . $key);
         exit;
     }
 }
开发者ID:vojtajina,项目名称:sitellite,代码行数:47,代码来源:index.php

示例4: onSubmit

 function onSubmit($vals)
 {
     loader_import('cms.Versioning.Rex');
     $rex = new Rex('siteglossary_term');
     $collection = $vals['collection'];
     unset($vals['collection']);
     if (empty($collection)) {
         $collection = 'sitellite_page';
     }
     $return = $vals['_return'];
     unset($vals['_return']);
     $changelog = $vals['changelog'];
     unset($vals['changelog']);
     unset($vals['section']);
     unset($vals['submit_button']);
     $res = $rex->create($vals, $changelog);
     if (isset($vals[$rex->key])) {
         $key = $vals[$rex->key];
     } elseif (!is_bool($res)) {
         $key = $res;
     } else {
         $key = 'Unknown';
     }
     if (!$res) {
         if (!$return) {
             $return = site_prefix() . '/index/siteglossary-app';
         }
         echo loader_box('cms/error', array('message' => $rex->error, 'collection' => $collection, 'key' => $key, 'action' => $method, 'data' => $vals, 'changelog' => $changelog, 'return' => $return));
     } else {
         loader_import('cms.Workflow');
         echo Workflow::trigger('add', array('collection' => $collection, 'key' => $key, 'data' => $vals, 'changelog' => intl_get('Item added.'), 'message' => 'Collection: ' . $collection . ', Item: ' . $key));
         session_set('sitellite_alert', intl_get('Your item has been created.'));
         if ($return) {
             header('Location: ' . $return);
             exit;
         }
     }
     header('Location: ' . site_prefix() . '/index/siteglossary-app#' . $vals['word']);
     exit;
 }
开发者ID:vojtajina,项目名称:sitellite,代码行数:40,代码来源:index.php

示例5: header

// be able to access directly.
if (!defined('SAF_VERSION')) {
    header('HTTP/1.1 404 Not Found');
    echo "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n" . "<html><head>\n<title>404 Not Found</title>\n</head><body>\n<h1>Not Found</h1>\n" . "The requested URL " . $_SERVER['PHP_SELF'] . " was not found on this server.<p>\n<hr>\n" . $_SERVER['SERVER_SIGNATURE'] . "</body></html>";
    exit;
}
// END KEEPOUT CHECKING
// import any object we need from the global namespace
global $errno, $cgi;
// box logic begins here
$errors = conf('errors');
if (!$errno) {
    $errno = $cgi->code;
}
loader_import('cms.Workflow');
echo Workflow::trigger('error', array('message' => $errno . ' ' . $errors[$errno]['title'] . ': ' . site_current() . ', referrer: ' . $_SERVER['HTTP_REFERER']));
header('HTTP/1.1 ' . $errno . ' ' . $errors[$errno]['title']);
page_title($errors[$errno]['title']);
switch ($errno) {
    case 401:
        echo '<p>' . intl_get('You don\'t have the permission to access the requested page.') . '</p>';
        break;
    case 403:
        echo '<p>' . intl_get('You don\'t have the permission to access the requested page.') . '</p>';
        break;
    case 404:
        echo '<p>' . intl_get('The page you requested could not be found.') . '</p>';
        break;
    case 500:
        echo '<p>' . intl_get('The server has encountered an unknown internal error.') . '</p>';
        break;
开发者ID:vojtajina,项目名称:sitellite,代码行数:31,代码来源:index.php

示例6: onSubmit

 function onSubmit($vals)
 {
     loader_import('cms.Versioning.Rex');
     $collection = $vals['collection'];
     unset($vals['collection']);
     if (empty($collection)) {
         $collection = 'sitellite_sidebar';
     }
     $return = $vals['_return'];
     unset($vals['_return']);
     $changelog = $vals['changelog'];
     unset($vals['changelog']);
     $rex = new Rex($collection);
     // default: database, database
     //$vals['sitellite_owner'] = session_username ();
     //$vals['sitellite_team'] = session_team ();
     unset($vals['submit_button']);
     unset($vals['tab1']);
     unset($vals['tab2']);
     unset($vals['tab3']);
     unset($vals['tab-end']);
     //unset ($vals['section1']);
     unset($vals['section3']);
     if (!$vals['show_on_pages']) {
         $vals['show_on_pages'] = '';
     }
     $res = $rex->create($vals, $changelog);
     if (isset($vals[$rex->key])) {
         $key = $vals[$rex->key];
     } elseif (!is_bool($res)) {
         $key = $res;
     } else {
         $key = 'Unknown';
     }
     if (!empty($return)) {
         $return = site_prefix() . '/index/cms-browse-action?collection=sitellite_sidebar';
     }
     if (!$res) {
         echo loader_box('cms/error', array('message' => $rex->error, 'collection' => $collection, 'key' => $key, 'action' => $method, 'data' => $vals, 'changelog' => $changelog, 'return' => $return));
     } else {
         loader_import('cms.Workflow');
         echo Workflow::trigger('add', array('collection' => $collection, 'key' => $key, 'data' => $vals, 'changelog' => $changelog, 'message' => 'Collection: ' . $collection . ', Item: ' . $key));
         session_set('sitellite_alert', intl_get('Your item has been created.'));
         if (!empty($return)) {
             header('Location: ' . $return);
             exit;
         }
         header('Location: ' . site_prefix() . '/index/cms-browse-action?collection=sitellite_sidebar');
         exit;
     }
 }
开发者ID:vojtajina,项目名称:sitellite,代码行数:51,代码来源:index.php

示例7: onSubmit

 function onSubmit($vals)
 {
     loader_import('cms.Versioning.Rex');
     $collection = $vals['_collection'];
     unset($vals['_collection']);
     if (empty($collection)) {
         $collection = 'sitellite_page';
     }
     $key = $vals['_key'];
     unset($vals['_key']);
     $return = $vals['_return'];
     unset($vals['_return']);
     $changelog = $vals['changelog'];
     unset($vals['changelog']);
     $rex = new Rex($collection);
     unset($vals['submit_button']);
     unset($vals['edit-top']);
     unset($vals['edit-middle']);
     unset($vals['edit-middle2']);
     unset($vals['edit-middle3']);
     unset($vals['edit-bottom']);
     unset($vals['solution_header']);
     $method = $rex->determineAction($key, $vals['sitellite_status']);
     if (!$method) {
         die($rex->error);
     }
     $res = $rex->{$method}($key, $vals, $changelog);
     // remove lock when editing is finished
     lock_remove($collection, $key);
     if (!$res) {
         if (!empty($return)) {
             $return = site_prefix() . '/index/cms-browse-action?collection=sitestudy_item';
         }
         echo loader_box('cms/error', array('message' => $rex->error, 'collection' => $collection, 'key' => $key, 'action' => $method, 'data' => $vals, 'changelog' => $changelog, 'return' => $return));
     } else {
         loader_import('cms.Workflow');
         echo Workflow::trigger('edit', array('collection' => $collection, 'key' => $key, 'action' => $method, 'data' => $vals, 'changelog' => $changelog, 'message' => 'Collection: ' . $collection . ', Item: ' . $key));
         session_set('sitellite_alert', intl_get('Your item has been saved.'));
         if (!empty($return)) {
             header('Location: ' . $return);
             exit;
         }
         header('Location: ' . site_prefix() . '/index/sitestudy-app/case.' . $key);
         exit;
     }
 }
开发者ID:vojtajina,项目名称:sitellite,代码行数:46,代码来源:index.php

示例8: onSubmit

 function onSubmit($vals)
 {
     loader_import('cms.Versioning.Rex');
     $collection = $vals['collection'];
     unset($vals['collection']);
     if (empty($collection)) {
         $collection = 'sitellite_page';
     }
     $return = $vals['_return'];
     unset($vals['_return']);
     $rex = new Rex($collection);
     // default: database, database
     unset($vals['submit_button']);
     foreach ($this->widgets as $k => $w) {
         if ($w->type == 'joiner') {
             unset($vals[$k]);
         }
     }
     $res = $rex->create($vals);
     if (isset($vals[$rex->key]) && $vals[$rex->key] != false) {
         $key = $vals[$rex->key];
     } elseif (!is_bool($res)) {
         $key = $res;
     } else {
         $key = 'Unknown';
     }
     if (!$res) {
         if (!$return) {
             $return = site_prefix() . '/index/cms-browse-action?collection=' . urlencode($collection);
         }
         echo loader_box('cms/error', array('message' => $rex->error, 'collection' => $collection, 'key' => $key, 'action' => $method, 'data' => $vals, 'changelog' => $changelog, 'return' => $return));
     } else {
         foreach ($this->widgets as $k => $w) {
             if ($w->type == 'joiner') {
                 $w->saveSelected($key);
             }
         }
         loader_import('cms.Workflow');
         echo Workflow::trigger('add', array('collection' => $collection, 'key' => $key, 'data' => $vals, 'changelog' => intl_get('Item added.'), 'message' => 'Collection: ' . $collection . ', Item: ' . $key));
         session_set('sitellite_alert', intl_get('Your item has been created.'));
         header('Location: ' . site_prefix() . '/index/cms-browse-action?collection=' . urlencode($collection));
         exit;
     }
 }
开发者ID:vojtajina,项目名称:sitellite,代码行数:44,代码来源:index.php

示例9: onSubmit

 function onSubmit($vals)
 {
     loader_import('cms.Versioning.Rex');
     $collection = $vals['_collection'];
     unset($vals['_collection']);
     if (empty($collection)) {
         $collection = 'sitellite_sidebar';
     }
     $rex = new Rex($collection);
     // default: database, database
     unset($vals['submit_button']);
     unset($vals['tab1']);
     unset($vals['tab2']);
     unset($vals['tab3']);
     unset($vals['tab-end']);
     //unset ($vals['section1']);
     unset($vals['section3']);
     $key = $vals['_key'];
     unset($vals['_key']);
     $return = $vals['_return'];
     unset($vals['_return']);
     $changelog = $vals['changelog'];
     unset($vals['changelog']);
     if (!$vals['show_on_pages']) {
         $vals['show_on_pages'] = '';
     }
     $method = $rex->determineAction($key, $vals['sitellite_status']);
     if (!$method) {
         die($rex->error);
     }
     $res = $rex->{$method}($key, $vals, $changelog);
     // remove lock when editing is finished
     lock_remove($collection, $key);
     if (!empty($return)) {
         $return = site_prefix() . '/index/cms-browse-action?collection=sitellite_sidebar';
     }
     if (!$res) {
         echo loader_box('cms/error', array('message' => $rex->error, 'collection' => $collection, 'key' => $key, 'action' => $method, 'data' => $vals, 'changelog' => $changelog, 'return' => $return));
     } else {
         loader_import('cms.Workflow');
         echo Workflow::trigger('edit', array('collection' => $collection, 'key' => $key, 'action' => $method, 'data' => $vals, 'changelog' => $changelog, 'message' => 'Collection: ' . $collection . ', Item: ' . $key));
         session_set('sitellite_alert', intl_get('Your item has been saved.'));
         if (!empty($return)) {
             header('Location: ' . $return);
             exit;
         }
         header('Location: ' . site_prefix() . '/index/cms-browse-action?collection=sitellite_sidebar');
         exit;
     }
 }
开发者ID:vojtajina,项目名称:sitellite,代码行数:50,代码来源:index.php

示例10: header

<?php

// BEGIN KEEPOUT CHECKING
// Add these lines to the very top of any file you don't want people to
// be able to access directly.
if (!defined('SAF_VERSION')) {
    header('HTTP/1.1 404 Not Found');
    echo "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n" . "<html><head>\n<title>404 Not Found</title>\n</head><body>\n<h1>Not Found</h1>\n" . "The requested URL " . $PHP_SELF . " was not found on this server.<p>\n<hr>\n" . $_SERVER['SERVER_SIGNATURE'] . "</body></html>";
    exit;
}
// END KEEPOUT CHECKING
global $session, $site;
loader_import('cms.Workflow.Lock');
lock_init();
lock_clear();
$user = session_username();
$session->close();
if (!empty($parameters['goto'])) {
    if ($parameters['goto'] == 'cms-app') {
        loader_import('cms.Workflow');
        Workflow::trigger('logout', array('message' => 'User: ' . $user, 'username' => $user));
    }
    header('Location: ' . $site->url . '/index/' . $parameters['goto']);
} else {
    header('Location: ' . $site->url);
}
exit;
开发者ID:vojtajina,项目名称:sitellite,代码行数:27,代码来源:index.php

示例11: webfiles_workflow

function webfiles_workflow($action, $key, $file, $changelog)
{
    if (is_object($file)) {
        $file = (array) $file;
    }
    ob_start();
    Workflow::trigger($action, array('collection' => 'sitellite_filesystem', 'key' => $key, 'data' => $file, 'changelog' => $changelog, 'message' => 'Collection: sitellite_filesystem, Item: ' . $file['name']));
    ob_end_clean();
}
开发者ID:vojtajina,项目名称:sitellite,代码行数:9,代码来源:index.php

示例12: header

<?php

// BEGIN KEEPOUT CHECKING
// Add these lines to the very top of any file you don't want people to
// be able to access directly.
if (!defined('SAF_VERSION')) {
    header('HTTP/1.1 404 Not Found');
    echo "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n" . "<html><head>\n<title>404 Not Found</title>\n</head><body>\n<h1>Not Found</h1>\n" . "The requested URL " . $_SERVER['PHP_SELF'] . " was not found on this server.<p>\n<hr>\n" . $_SERVER['SERVER_SIGNATURE'] . "</body></html>";
    exit;
}
// END KEEPOUT CHECKING
// import any object we need from the global namespace
global $errno, $cgi;
// box logic begins here
$errors = conf('errors');
if (!$errno) {
    $errno = $cgi->code;
}
loader_import('cms.Workflow');
echo Workflow::trigger('error', array('message' => $errno . ' ' . $errors[$errno]['title']));
header('HTTP/1.1 ' . $errno . ' ' . $errors[$errno]['title']);
echo "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n" . "<html><head>\n<title>" . $errno . " " . $errors[$errno]['title'] . "</title>\n</head><body>\n<h1>" . $errors[$errno]['title'] . "</h1>\n" . $errors[$errno]['message'] . "<p>\n<hr>\n" . $_SERVER['SERVER_SIGNATURE'] . "</body></html>";
exit;
开发者ID:vojtajina,项目名称:sitellite,代码行数:23,代码来源:index.php

示例13: intl_get

	<li><a href="http://www.mozilla.org/" target="_blank">Mozilla</a>, version 1.3 or greater</li>
	<li><a href="http://channels.netscape.com/ns/browsers/download.jsp" target="_blank">Netscape</a>, version 7.1 or greater</li>
	<li><a href="http://www.microsoft.com/windows/ie/default.asp" target="_blank">Microsoft Internet Explorer</a>, version 5.5 or 6.0 -- MSIE 7 is not yet supported</li>
</ul>';
    echo '<p>' . intl_get('Your current browser is') . ': ' . $sniff->property('long_name') . ', version ' . $sniff->property('version') . '</p>';
    return;
}
global $cgi;
if (isset($cgi->username)) {
    sleep(2);
}
loader_import('cms.Workflow');
if (!session_admin() && isset($cgi->username)) {
    echo Workflow::trigger('error', array('message' => 'Failed login attempt'));
} elseif (session_admin()) {
    Workflow::trigger('login', array('message' => 'User: ' . session_username(), 'username' => session_username()));
}
// admin check
if (!session_admin()) {
    page_title(intl_get('Welcome to') . ' ' . PRODUCT_SHORTNAME);
    page_onload("document.getElementById('username').focus ()");
    if (isset($cgi->username)) {
        echo '<p>' . intl_get('Invalid login.  Please try again.') . '</p>';
    } else {
        echo '<p>' . intl_get('Please login to begin your session.') . '</p>';
    }
    echo template_simple('<form method="post" action="{site/prefix}/index/cms-app" target="_top">
		<input type="hidden" name="forward" value="{filter base64_decode}{cgi/forward}{end filter}" />
		<table cellpadding="5" border="0">
			<tr>
				<td>{intl Username}</td>
开发者ID:vojtajina,项目名称:sitellite,代码行数:31,代码来源:index.php

示例14: loader_import

<?php

loader_import('cms.Workflow');
Workflow::trigger('error', $parameters);
page_title(intl_get('An error occurred'));
echo template_simple('error.spt', $parameters);
开发者ID:vojtajina,项目名称:sitellite,代码行数:6,代码来源:index.php

示例15: preg_split

            $pkeys = preg_split('/, ?/', $rex->key);
            $pvals = explode('|', $id);
            $id = array();
            for ($i = 0; $i < count($pkeys); $i++) {
                $id[$pkeys[$i]] = $pvals[$i];
            }
        }
        if (!$rex->delete($id)) {
            $failed[] = $id;
        }
    }
    if (count($failed) > 0) {
        page_title(intl_get('An Error Occurred'));
        echo '<p>' . $rex->error . '</p>';
        echo '<p>' . intl_get('The following items were not deleted') . ':</p>';
        echo '<ul>';
        foreach ($failed as $id) {
            echo '<li>' . $id . '</li>';
        }
        echo '</ul>';
        return;
    }
}
echo Workflow::trigger('delete', array('collection' => $parameters['_collection'], 'key' => $parameters['_key'], 'message' => 'Deleted items (' . join(', ', $parameters['_key']) . ') from "' . $parameters['_collection'] . '" collection.'));
session_set('sitellite_alert', intl_get('The items have been deleted.'));
if (!empty($parameters['_return']) && $parameters['_return'] != site_prefix() . '/index/' . $parameters['_key'][0] && !strpos($parameters['_return'], $parameters['_key'][0])) {
    header('Location: ' . $parameters['_return']);
    exit;
}
header('Location: ' . site_prefix() . '/index');
exit;
开发者ID:vojtajina,项目名称:sitellite,代码行数:31,代码来源:index.php


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