Account created on 29 June 2014, over 10 years ago
#

Merge Requests

More

Recent comments

🇨🇳China lawxen

Hi jonathan1055.

are you saying that Scheduler could update "changed" to the actual time that the cron job is run

Yes

but it would have to be an option per entity type, and the default would be to use the publish_on time to maintain the existing behavior.

Agreed, we can make this function https://git.drupalcode.org/project/scheduler/-/blob/2.x/scheduler.module...

      // Set the 'changed' timestamp to match what would have been done had this
      // content been published via cron.
      if ($entity instanceof EntityChangedInterface) {
        $entity->setChangedTime($entity->publish_on->value);
      }

as an config condition

"But in most cases"

Sorry, we didn't make much survey, It that our several customers want to see the real change time of any scheduled entity.
The schedular module will clean the publish_on time on cron job, then schedular save the publish_on to the changed field. Our resolution is to build a new field to store the publish_on time. For our use cases, both publish_on time and real changed time is important information.

🇨🇳China lawxen

I got this problem
The comment by Wim Leers on #7 [PP-1] Disable CSRF token check for non-CSRF vulnerable authentication providers Needs work helped me find the root cause: Send jwt(Bearer token) and Basic Auth together. Thanks @Wim Leers

Remove Basic Auth and restart my postman, error disappeared.

🇨🇳China lawxen

A little change of #3, deletting the code of 'az_blob_gov_endpoint' => $config->get('az_blob_gov_endpoint'), which is not relevent with this issue, it make the patch can't be applyed.

🇨🇳China lawxen

Missing doc for this change of adding access_token in /user/loggin

I'm wondering which endpoint should I use to get jwt token
/user/loggin
or
/jwt/token

Muy use case is app(ios/android) use a only one account(like uid:20) to get content from rest api

🇨🇳China lawxen

in which version of Drupal did this work?

I can't remember the exact version.
When the issue is created, webform+Drupal9 works. webform+Drupal10 didn't work.

🇨🇳China lawxen

Let's change codemirror_editor to ^2.0 directly?

🇨🇳China lawxen

@grasmash Wonderful, I have added you as the maintainer. Do anything what you want directly.

🇨🇳China lawxen

@grasmash I haven't work on this module for a long time, Would you like to maintain this module.

🇨🇳China lawxen

I don't understand the solutions above.

Resaving the DER field config

🇨🇳China lawxen

@berdir It only happen on some special situation:
Example:
1. Reference field reference several node type
2. this field allow multivalue
3. this field use select2 widge without "autocomplete" option.
4. select 2 node of different node type.
5. Re-edit the content to reorder, move the last to the first, you will find it doesn't take effect.

🇨🇳China lawxen

I facing the problem of "The user specified as a definer "
Solving ti by resaving the DER field, it seems related with https://www.drupal.org/project/dynamic_entity_reference/issues/3099176 🐛 Errors when new entity types are added (in certain cases) RTBC

🇨🇳China lawxen

On select2:1.15 the reorder still not work without autocomplete

🇨🇳China lawxen

I got the same error

"errors": [
{
"title": "Internal Server Error",
"status": "500",
"detail": "array_intersect_key(): Argument #1 ($array) must be of type array, null given",
"links": {
"via": {
"href": "http://appcms.docker/jsonapi/node/section"
},
"info": {
"href": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1"
}
},
"source": {
"file": "/var/www/html/docroot/core/modules/jsonapi/src/EventSubscriber/DefaultExceptionSubscriber.php",
"line": 49
},
"meta": {
"exception": "TypeError: array_intersect_key(): Argument #1 ($array) must be of type array, null given in /var/www/html/docroot/modules/contrib/jsonapi_extras/src/Normalizer/ResourceIdentifierNormalizer.php:82\nStack trace:\n#0 /var/www/html/docroot/modules/contrib/jsonapi_extras/src/Normalizer/ResourceIdentifierNormalizer.php(82): array_intersect_key(NULL, Array)\n#1 /var/www/html/vendor/symfony/serializer/Serializer.php(159): Drupal\\jsonapi_extras\\Normalizer\\ResourceIdentifierNormalizer->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\ResourceIdentifier), 'api_json', Object(Shaper\\Util\\Context))\n#2 /var/www/html/docroot/core/modules/jsonapi/src/Serializer/Serializer.php(62): Symfony\\Component\\Serializer\\Serializer->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\ResourceIdentifier), 'api_json', Array)\n#3 /var/www/html/docroot/core/modules/jsonapi/src/Normalizer/DataNormalizer.php(21): Drupal\\jsonapi\\Serializer\\Serializer->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\ResourceIdentifier), 'api_json', Array)\n#4 [internal function]: Drupal\\jsonapi\\Normalizer\\DataNormalizer->Drupal\\jsonapi\\Normalizer\\{closure}(Object(Drupal\\jsonapi\\JsonApiResource\\ResourceIdentifier))\n#5 /var/www/html/docroot/core/modules/jsonapi/src/Normalizer/DataNormalizer.php(20): array_map(Object(Closure), Array)\n#6 /var/www/html/vendor/symfony/serializer/Serializer.php(159): Drupal\\jsonapi\\Normalizer\\DataNormalizer->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\RelationshipData), 'api_json', Array)\n#7 /var/www/html/docroot/core/modules/jsonapi/src/Serializer/Serializer.php(62): Symfony\\Component\\Serializer\\Serializer->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\RelationshipData), 'api_json', Array)\n#8 /var/www/html/docroot/core/modules/jsonapi/src/Normalizer/RelationshipNormalizer.php(21): Drupal\\jsonapi\\Serializer\\Serializer->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\RelationshipData), 'api_json', Array)\n#9 /var/www/html/vendor/symfony/serializer/Serializer.php(159): Drupal\\jsonapi\\Normalizer\\RelationshipNormalizer->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\Relationship), 'api_json', Array)\n#10 /var/www/html/docroot/core/modules/jsonapi/src/Serializer/Serializer.php(62): Symfony\\Component\\Serializer\\Serializer->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\Relationship), 'api_json', Array)\n#11 /var/www/html/docroot/core/modules/jsonapi/src/Normalizer/ResourceObjectNormalizer.php(178): Drupal\\jsonapi\\Serializer\\Serializer->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\Relationship), 'api_json', Array)\n#12 /var/www/html/docroot/core/modules/jsonapi/src/Normalizer/ResourceObjectNormalizer.php(116): Drupal\\jsonapi\\Normalizer\\ResourceObjectNormalizer->serializeField(Object(Drupal\\entity_reference_revisions\\EntityReferenceRevisionsFieldItemList), Array, 'api_json')\n#13 /var/www/html/docroot/core/modules/jsonapi/src/Normalizer/ResourceObjectNormalizer.php(68): Drupal\\jsonapi\\Normalizer\\ResourceObjectNormalizer->getNormalization(Array, Object(Drupal\\jsonapi\\JsonApiResource\\ResourceObject), 'api_json', Array)\n#14 /var/www/html/docroot/modules/contrib/jsonapi_extras/src/Normalizer/JsonApiNormalizerDecoratorBase.php(38): Drupal\\jsonapi\\Normalizer\\ResourceObjectNormalizer->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\ResourceObject), 'api_json', Array)\n#15 /var/www/html/docroot/modules/contrib/jsonapi_extras/src/Normalizer/ResourceObjectNormalizer.php(24): Drupal\\jsonapi_extras\\Normalizer\\JsonApiNormalizerDecoratorBase->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\ResourceObject), 'api_json', Array)\n#16 /var/www/html/vendor/symfony/serializer/Serializer.php(159): Drupal\\jsonapi_extras\\Normalizer\\ResourceObjectNormalizer->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\ResourceObject), 'api_json', Array)\n#17 /var/www/html/docroot/core/modules/jsonapi/src/Serializer/Serializer.php(62): Symfony\\Component\\Serializer\\Serializer->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\ResourceObject), 'api_json', Array)\n#18 /var/www/html/docroot/core/modules/jsonapi/src/Normalizer/DataNormalizer.php(21): Drupal\\jsonapi\\Serializer\\Serializer->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\ResourceObject), 'api_json', Array)\n#19 [internal function]: Drupal\\jsonapi\\Normalizer\\DataNormalizer->Drupal\\jsonapi\\Normalizer\\{closure}(Object(Drupal\\jsonapi\\JsonApiResource\\ResourceObject))\n#20 /var/www/html/docroot/core/modules/jsonapi/src/Normalizer/DataNormalizer.php(20): array_map(Object(Closure), Array)\n#21 /var/www/html/vendor/symfony/serializer/Serializer.php(159): Drupal\\jsonapi\\Normalizer\\DataNormalizer->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\ResourceObjectData), 'api_json', Array)\n#22 /var/www/html/docroot/core/modules/jsonapi/src/Serializer/Serializer.php(62): Symfony\\Component\\Serializer\\Serializer->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\ResourceObjectData), 'api_json', Array)\n#23 /var/www/html/docroot/core/modules/jsonapi/src/Normalizer/JsonApiDocumentTopLevelNormalizer.php(188): Drupal\\jsonapi\\Serializer\\Serializer->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\ResourceObjectData), 'api_json', Array)\n#24 /var/www/html/vendor/symfony/serializer/Serializer.php(159): Drupal\\jsonapi\\Normalizer\\JsonApiDocumentTopLevelNormalizer->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\JsonApiDocumentTopLevel), 'api_json', Array)\n#25 /var/www/html/docroot/core/modules/jsonapi/src/Serializer/Serializer.php(62): Symfony\\Component\\Serializer\\Serializer->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\JsonApiDocumentTopLevel), 'api_json', Array)\n#26 /var/www/html/docroot/core/modules/jsonapi/src/EventSubscriber/ResourceResponseSubscriber.php(120): Drupal\\jsonapi\\Serializer\\Serializer->normalize(Object(Drupal\\jsonapi\\JsonApiResource\\JsonApiDocumentTopLevel), 'api_json', Array)\n#27 /var/www/html/docroot/core/modules/jsonapi/src/EventSubscriber/ResourceResponseSubscriber.php(85): Drupal\\jsonapi\\EventSubscriber\\ResourceResponseSubscriber->renderResponseBody(Object(Symfony\\Component\\HttpFoundation\\Request), Object(Drupal\\jsonapi\\CacheableResourceResponse), Object(Drupal\\jsonapi\\Serializer\\Serializer), 'api_json')\n#28 [internal function]: Drupal\\jsonapi\\EventSubscriber\\ResourceResponseSubscriber->onResponse(Object(Symfony\\Component\\HttpKernel\\Event\\ResponseEvent), 'kernel.response', Object(Drupal\\Component\\EventDispatcher\\ContainerAwareEventDispatcher))\n#29 /var/www/html/docroot/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php(111): call_user_func(Array, Object(Symfony\\Component\\HttpKernel\\Event\\ResponseEvent), 'kernel.response', Object(Drupal\\Component\\EventDispatcher\\ContainerAwareEventDispatcher))\n#30 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(214): Drupal\\Component\\EventDispatcher\\ContainerAwareEventDispatcher->dispatch(Object(Symfony\\Component\\HttpKernel\\Event\\ResponseEvent), 'kernel.response')\n#31 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(202): Symfony\\Component\\HttpKernel\\HttpKernel->filterResponse(Object(Drupal\\jsonapi\\CacheableResourceResponse), Object(Symfony\\Component\\HttpFoundation\\Request), 1)\n#32 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw(Object(Symfony\\Component\\HttpFoundation\\Request), 1)\n#33 /var/www/html/docroot/modules/contrib/redirect_after_login/src/RedirectMiddleware.php(44): Symfony\\Component\\HttpKernel\\HttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#34 /var/www/html/docroot/core/lib/Drupal/Core/StackMiddleware/Session.php(53): Drupal\\redirect_after_login\\RedirectMiddleware->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#35 /var/www/html/docroot/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\\Core\\StackMiddleware\\Session->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#36 /var/www/html/docroot/core/lib/Drupal/Core/StackMiddleware/ContentLength.php(28): Drupal\\Core\\StackMiddleware\\KernelPreHandle->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#37 /var/www/html/docroot/core/modules/big_pipe/src/StackMiddleware/ContentLength.php(32): Drupal\\Core\\StackMiddleware\\ContentLength->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#38 /var/www/html/docroot/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\\big_pipe\\StackMiddleware\\ContentLength->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#39 /var/www/html/docroot/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\\page_cache\\StackMiddleware\\PageCache->pass(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#40 /var/www/html/docroot/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\\page_cache\\StackMiddleware\\PageCache->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#41 /var/www/html/docroot/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\\Core\\StackMiddleware\\ReverseProxyMiddleware->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#42 /var/www/html/docroot/core/lib/Drupal/Core/StackMiddleware/AjaxPageState.php(36): Drupal\\Core\\StackMiddleware\\NegotiationMiddleware->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#43 /var/www/html/docroot/modules/contrib/error_page/src/StackMiddleware/StackMiddlewareErrorPage.php(44): Drupal\\Core\\StackMiddleware\\AjaxPageState->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#44 /var/www/html/docroot/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\\error_page\\StackMiddleware\\StackMiddlewareErrorPage->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#45 /var/www/html/docroot/core/lib/Drupal/Core/DrupalKernel.php(741): Drupal\\Core\\StackMiddleware\\StackedHttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#46 /var/www/html/docroot/index.php(19): Drupal\\Core\\DrupalKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request))\n#47 {main}\n\nNext Symfony\\Component\\HttpKernel\\Exception\\HttpException: array_intersect_key(): Argument #1 ($array) must be of type array, null given in /var/www/html/docroot/core/modules/jsonapi/src/EventSubscriber/DefaultExceptionSubscriber.php:49\nStack trace:\n#0 [internal function]: Drupal\\jsonapi\\EventSubscriber\\DefaultExceptionSubscriber->onException(Object(Symfony\\Component\\HttpKernel\\Event\\ExceptionEvent), 'kernel.exceptio...', Object(Drupal\\Component\\EventDispatcher\\ContainerAwareEventDispatcher))\n#1 /var/www/html/docroot/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php(111): call_user_func(Array, Object(Symfony\\Component\\HttpKernel\\Event\\ExceptionEvent), 'kernel.exceptio...', Object(Drupal\\Component\\EventDispatcher\\ContainerAwareEventDispatcher))\n#2 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(239): Drupal\\Component\\EventDispatcher\\ContainerAwareEventDispatcher->dispatch(Object(Symfony\\Component\\HttpKernel\\Event\\ExceptionEvent), 'kernel.exceptio...')\n#3 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(91): Symfony\\Component\\HttpKernel\\HttpKernel->handleThrowable(Object(TypeError), Object(Symfony\\Component\\HttpFoundation\\Request), 1)\n#4 /var/www/html/docroot/modules/contrib/redirect_after_login/src/RedirectMiddleware.php(44): Symfony\\Component\\HttpKernel\\HttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#5 /var/www/html/docroot/core/lib/Drupal/Core/StackMiddleware/Session.php(53): Drupal\\redirect_after_login\\RedirectMiddleware->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#6 /var/www/html/docroot/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\\Core\\StackMiddleware\\Session->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#7 /var/www/html/docroot/core/lib/Drupal/Core/StackMiddleware/ContentLength.php(28): Drupal\\Core\\StackMiddleware\\KernelPreHandle->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#8 /var/www/html/docroot/core/modules/big_pipe/src/StackMiddleware/ContentLength.php(32): Drupal\\Core\\StackMiddleware\\ContentLength->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#9 /var/www/html/docroot/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\\big_pipe\\StackMiddleware\\ContentLength->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#10 /var/www/html/docroot/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\\page_cache\\StackMiddleware\\PageCache->pass(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#11 /var/www/html/docroot/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\\page_cache\\StackMiddleware\\PageCache->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#12 /var/www/html/docroot/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\\Core\\StackMiddleware\\ReverseProxyMiddleware->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#13 /var/www/html/docroot/core/lib/Drupal/Core/StackMiddleware/AjaxPageState.php(36): Drupal\\Core\\StackMiddleware\\NegotiationMiddleware->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#14 /var/www/html/docroot/modules/contrib/error_page/src/StackMiddleware/StackMiddlewareErrorPage.php(44): Drupal\\Core\\StackMiddleware\\AjaxPageState->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#15 /var/www/html/docroot/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\\error_page\\StackMiddleware\\StackMiddlewareErrorPage->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#16 /var/www/html/docroot/core/lib/Drupal/Core/DrupalKernel.php(741): Drupal\\Core\\StackMiddleware\\StackedHttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#17 /var/www/html/docroot/index.php(19): Drupal\\Core\\DrupalKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request))\n#18 {main}",
🇨🇳China lawxen

Many change of The MR has been into repo

🇨🇳China lawxen

lawxen created an issue.

🇨🇳China lawxen

Please ignore this patch for core maintainer
Just a reroll of #124 for old Drupal 9.5.2 with no test code

🇨🇳China lawxen

Thank you 😊 @joel_osc @smulvih2

🇨🇳China lawxen

Yes, I need help
This is the document on Zoom position, which seems to be controlled by function ControlsetPosition(). It's diffrernt from Baidu Map

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <meta name="keywords" content="天地图"/>
    <title>天地图-地图API-范例-添加缩放平移控件</title>
    <script type="text/javascript" src="http://api.tianditu.gov.cn/api?v=4.0&tk=您的密钥"></script>
    <style type="text/css">body,html{width:100%;height:100%;margin:0;font-family:"Microsoft YaHei"}#mapDiv{width:100%;height:400px}input,b,p{margin-left:5px;font-size:14px}</style>
    <script>
        var map, control;
        var zoom = 12;
        function onLoad() {
            //初始化地图对象
            map = new T.Map("mapDiv");
            //设置显示地图的中心点和级别
            map.centerAndZoom(new T.LngLat(116.40969, 39.89945), zoom);
            //创建缩放平移控件对象
            control = new T.Control.Zoom();
            //添加缩放平移控件
            map.addControl(control);
        }

        function ControlsetPosition() {
            var selectNavPosition = document.getElementById("selectnavposition");
            var index = selectNavPosition.selectedIndex;
            var controlPositionStr = selectNavPosition.options[index].value;
            this.leftTOP = T_ANCHOR_TOP_LEFT;
            this.rightTOP = T_ANCHOR_TOP_RIGHT;
            this.leftBOTTOM = T_ANCHOR_BOTTOM_LEFT;
            this.rightBOTTOM = T_ANCHOR_BOTTOM_RIGHT
            var controlPosition;
            if (controlPositionStr == "leftTOP")
                controlPosition = T_ANCHOR_TOP_LEFT;
            else if (controlPositionStr == "rightTOP")
                controlPosition = T_ANCHOR_TOP_RIGHT;
            else if (controlPositionStr == "leftBOTTOM")
                controlPosition = T_ANCHOR_BOTTOM_LEFT;
            else if (controlPositionStr == "rightBOTTOM")
                controlPosition = T_ANCHOR_BOTTOM_RIGHT;
            control.setPosition(controlPosition);

        }
    </script>
</head>
<body onLoad="onLoad()">
<div id="mapDiv"></div>
<div>
    <p>本示例中,如何向地图上增加层级控制控件。</p>
    <input type="button" id="button" onClick="ControlsetPosition()" value="添加控件"/>
    <select id="selectnavposition">
        <option value="leftTOP">左上角</option>
        <option value="rightTOP">右上角</option>
        <option value="leftBOTTOM">左下角</option>
        <option value="rightBOTTOM">右下角</option>
    </select>
</div>
</body>
</html>
🇨🇳China lawxen

Creted an separate module https://www.drupal.org/project/geolocation_tian which copy from geolocation_baidu

Has made it work with 2 functions:
1. Views Location Maker
2. Zoom Control (Position: Left Top or Right Top don't work)

Many other works need to be down later.

Production build 0.71.5 2024