• 注册
  • 心乐

    心乐

    lv.2实名用户
    鉴定师:民间知名鉴定大师,从业二十余年经验丰富!
    聊天
  • 转账
  • 拉黑
  • 举报
  • 动态
  • 帖子
  • 淘货
  • 保真阁
  • 私人博物馆
  • 1 关注
  • 1 粉丝
  • 44人气
  • 0魅力
  • 头衔

  • 实名用户
  • 资料简介

  • 社区号:7650891864
  • 昵称: 心乐
  • 性别: 保密
  • 位置:江西省.宜春市
  • 说明:专注于:古玩收藏和交易!有需要购买藏品的可以关注我哈。
  • 注册时间:1年前
  • 查看更多
  • 查看全文
  • 查看作者
  • 文章测试

    江西·萍乡
  • 4
  • 52
  • 0
  • 1.25w
  • 咸鱼梦想小可鸭鸭心乐学藏官方

    请登录之后再进行评论

    登录
  • 0
    咸鱼梦想lv.2实名用户
    内容测试出
  • 0
    咸鱼梦想lv.2实名用户
    很美美品相如何?
  • 0
    咸鱼梦想lv.2实名用户
    这是什么朝代的?
  • 查看全文
  • 查看作者
  • 宫论项目开发记录

    记录2023年项目进度周期。

  • 3
  • 255
  • 0
  • 2.18w
  • 学藏官方心乐小可鸭鸭

    请登录之后再进行评论

    登录
  • 0
    咸鱼梦想lv.2实名用户
    2023年11月28日开发记录
    1、页面page-content容器新增一个子类:grey,其背景颜色为:background:#fbfbfb。如果需要改变页面背景色的时候,在page-content后面追加grey即可。注:默认背景色为白色,但是业务很多场景需要将主色调调整会浅灰色。每次通过style标签样式写入不太方便,主要管理维护麻烦。因此新增一个子类来处理。
    2、朋友圈编辑页面新增radio选项,允许发布者或管理员对朋友圈访问权限进行调整。支持三个权限【1、public公开内容(图标样式:jinsom-wancheng)。2、fans粉丝可见(图标样式:jinsom-qunzu1)。3、privacy=仅自己可见(图标:jinsom-biyan)】
    3、radio选项显示优化,进入朋友圈编辑页面后会理解通过get_post_meta获取朋友圈的访问权限,然后通过switch进行遍历处理。根据朋友圈内容当前的权限,来设置【checked="checked"】,这样访问编辑页面时,会默认直接选中当前朋友圈的文章权限。这样的显示设置更友好一些,告知用户文章当前的状态。
    4、朋友圈权限图标样式做出调整,会设置margin-right 来调整元素的右边距(2vw),避免图标和文字紧促在一起,图标大小从6vw大小调整到4.3vw和文字更搭一些。并且每个权限图标颜色都不一样,公开为:灰色#999、粉丝可见为:浅蓝色#6191e7、私密内容为:浅红色ff8467。最后就是radio的选项容器样式的调整1、首先weui-cells移除元素的上边间距,在移除顶部的边框样式。避免顶栏同时出现两个虚线。2、weui-cells的底部边框虚线会做过滤处理,通过last-child来选中最后一个元素,将其虚线边框改为透明处理。同样是为了避免同时底部出现两个虚线。
    5、朋友圈编辑页面新增radio选项,允许发布者或管理员对朋友圈内容(当前文章,非全局)评论进行权限开关调整。开启(允许所有用户对当前朋友圈进行评论)关闭(除了自己可以评论,所有用户都不可以进行评论)。与之前访问权限一样,会通过get_post_meta获取评论状态,然后打开页面即默认选中开启或关闭。
    6、radio选项命名调整:朋友圈访问权限的radio为【moments_power】/评论开关权限的radio为【moments_comment】避免因为radio的name参数同名造成两个radio选项被合并成一组。同时所有选项框input表单都新增value属性,属性值为【权限key,比如公开权限为:public,评论关闭为:close】方便前端获取到用户选择参数。
    7、评论radio选项框上方新增一个tips提醒框(⚠ 评论关闭后,任何人都不可以对当其评论),同时访问权限radio的box容器右上角新增一个图标(fa-trash:垃圾桶样式、背景颜色为黑色,字体大小为14px)这个图标是预留按钮,当管理员或发布者需要移除朋友圈,可以通过点击这个图标来完成。注:删除事件目前未写,后面会补上。
    8、朋友圈编辑页面新增onPageBeforeInit监听,当朋友圈设置为私密(仅自己可见),那么不允许用户关闭评论(提示:私密状态,不需要关闭评论)。具体执行流程如下:首先获取选中的moments_comment和moments_power的ID值。然后使用条件语句来检查是否满足私密状态下不需要关闭评论的条件。如果满足条件,使用 $('input[name="moments_comment"][value="open"]').prop('checked', true) 来将值为"open"的选项设为选中状态。然后通过xc_msg显示错误。
    9、朋友圈编辑页面【删除图标fa-trash】控件新增onclick事件(xc_delete_moments),并新增自定义属性post_id朋友圈编号ID。函数会通过this上下文对象获取朋友圈编号,然后构成ajax请求【type=xc_delete_moments、请求变量:post_id】到后端发起删除请求,Ajax请求会通过myApp.showIndicator进行动画拦截,避免出现重复执行。
    10、朋友圈删除控件新增自定义属性【action】,这个参数有两个值【1、发布者本人执行参数为:delete(删除)。2、非发布者并且是管理员执行参数为:reject(驳回)】。用户打开朋友圈编辑页面会通过get_post_field获取发布者UID,然后判断是否为作者,然后执行响应的参数赋值。当触发xc_delete_moments事件时,会根据传递变量的不同,执行不同的确认弹窗。【确定要删除当前朋友圈内容吗?、确定要驳回隐藏当前朋友圈内容吗?】
    11、朋友圈文章编辑页执行xc_order_access拦截请求时,会通过get_post_status获取文章内容状态,如果status状态不等于(publish公开内容)则表明当前朋友圈内容非正常状态,可能处于回收站(等待删除)。那么将禁止发布者访问 并提示【朋友圈内容已被删除,无法操作!】。注:管理员不受此限制。
    12、新增朋友圈内容删除钩子:xc_moments_delete_hook,需要传递朋友圈编号。该钩子集检测(拦截非法请求操作)、删除(负责删除事件处理,包括静态资源处理)、回调(负责朋友圈内容删除后的回调业务处理)。钩子采用标准的result数组结构返回,code为状态码:1代表执行失败,msg代表失败原因。code=0代表执行请求成功,朋友圈内容已被成功移除。
    13、朋友圈后台配置页新增字段:xc_moments_delete_limit(朋友圈文章删除限制),发布超过X天后,发布者将无法自行将其删除[管理员不受此限制],如果设置为0,则代表不做限制(不管多久都可以删除)。此字段通过xc_moments_delete_hook钩子来执行,用户删除文章时,会通过检测这个字段来判断是否过了删除有效期。注:一般情况下不建议开启删除保护,具体根据实际情况而定。
    14、朋友圈文章删除,拦截事件封装完毕。【1、检测用户是否登录、未登录将拦截处理。2、检测用户是否为管理员或发布者,如果均不是拦截处理。3、检测文章是否存在,不存在则拦截处理。4、检测文章是否属于自定义类型:moments如果不是拦截处理。4、通过get_post_status获取文章的状态,如果是trash则表明文章处于回收站,拦截处理。5、如果删除用户不是管理员,并且后台设置了删除时间限制。那么将会通过get_post_field获取发布日期然后转时间戳,在对比日期是否超过了后台限制,如果超过则拦截处理。
  • 0
    心乐lv.2实名用户
    2023年11月27日开发记录
    1、后台朋友圈配置新增开关(xc_moments_video_autoplay)开启后,朋友圈视频会仿微信朋友圈,页面下拉到朋友圈视频会自动播放(静音状态)。装载方式通过Intersection Observer API触发,如果不开启则不会执行页面滚动监听。开放开关选项,是防止低配设备存在性能问题,毕竟页面可能同时存在多个视频初始化。目前未做设备兼容处理,如果到时候出现性能问题,可以通过后台先关闭。
    2、宫论前端xc对象新增属性:(moments_video_autoplay)布尔值,后台配置朋友圈视频自动播放选项决定这个属性值。moments_Intersection_Observer函数在触发朋友圈内容变化监听时,会检测xc.moments_video_autoplay是否存在,如果存在才会触发window[视频对象].play()播放事件。
    3、朋友圈视频自动播放功能额外新增一个拦截条件,后台新增字段【xc_moments_video_autoplay_size】当开启了视频自动播放后,还可以设置视频尺寸要求。当视频小于XXMB才会被执行自动播放,避免大视频自动播放,消耗过多流量视频。同时封装视频组件容器。会将获取到的视频大小写入到size自定义属性,视频自动播放前会检测size是否大于后台限制,如果不大于则执行自动播放。
    4、朋友圈视频播放请求函数优化,现在会Intersection根据变量(布尔值)做彻底分离处理。除了播放器属性有不同外,Intersection为布尔值,才会执行以下事件监听【1、视频播放器click点击事件监听。2、进入全屏事件和退出全屏事件。】用户正常播放视频,这些监听不会执行,避免视频组件出现意外情况。
    5、朋友圈视频组件封装完毕,容器采用函数封装 通过传递朋友圈ID即可完成视频的封装(包括各种视频信息采集和输出)。视频支持两种播放加载模式。【1、用户主动播放,通过点击播放按钮图片来加载和初始化播放器。2、页面下拉到视频容器区域自动进行播放和暂停,做了很多事件监听和回调,效果和微信朋友圈大致相同】
    6、朋友圈内容新增商品卡片容器,class类:moments_shop,如果用户发布朋友圈的时候选择了商品卡片那么就会存在【shop】字段,此时会在朋友圈内容下发通过do_shortcode转义和解析商品短代码,然后将HTML信息输出到moments_shop容器内部中。注:商品短代码都是通过xc_shortcodes_shop_card函数来解析和处理,如果需要对卡片做样式或内容调整,则修改这个函数即可。
    7、新增一个函数方法xc_at_html($content):来对文章内容中的艾特昵称进行处理,并替换为自定义标签。接受一个参数 $content,该参数是文章的内容。函数的目的是在内容中找到以 @ 开头的昵称,并替换为自定义的标签。返回带有自定义属性的标签<xc-post-at>,用于显示艾特用户信息。这个方法绑定于xc_shortcodes_content函数,通过这个函数进行内容处理,会先处理@标签内容,增加对应的标签样式。
    8、xc_at_html处理aite用户信息时会通过xc_nickname_uid查询用户是否存在,如果存在有效用户(user_id有返回)则会通过xc_get_avatar获取该用户的主页link链接。然后使用xc_mobile_url构建一个onclick点击事件,事件的link为了防止被转义处理,会先通过addslashes进行斜杠处理。同时xc-post-at增加一个自定义属性user_id,预留给后续业务操作。
    ,,10、朋友圈内容插入的商品卡片样式优化:【容器上下间距:margin-top: 4vw;margin-bottom: 1vw;边框样式:border-radius: 1vw; border: 1px solid #e5e4e4;】以便适配页面(注:只有朋友圈页面的商品卡片才会神修改哦),朋友圈视频器容器也做进一步调整【max-width: 49vw;max-height: 40vh;】,视频宽度调整到50%左右,观感更好一些。
    11、朋友圈内容输出时会检测power字段(朋友圈内容权限),如果非公开(不等于public)并且发布者是当前用户,则会在该条朋友圈的右上角(名字那一行)输出一个<span class="power">样式。内容为:(私密/粉丝可见)图标:fa-low-vision。样式【文字图标靠右对齐、字体大小3vw、浅灰色】。警示作者,当前所看到的朋友圈内容是非公开。
    12、新增朋友圈内容管理页面【/module/xc_moments/edit.php】页面唯一标识:moments_edit。短代码地址为[xc_module type=xc_moments]/edit.php,该页面需要传递post_id朋友圈文章编号。在这个页面用户可以对朋友圈内容进行权限操作(评论权限开关、朋友内容访问权限、删除操作)等,注:朋友圈暂不支持编辑,防止二次编辑的内容出现争议。
    13、朋友圈内容管理页面支持xc_order_access拦截访问钩子,唯一标识(moments_edit)。需要传递【朋友圈编号post_id】如果用户不是【author_id发布者本人、前台管理员】那么将直接拦截对该页面的访问请求。注:管理员和发布者都可以对朋友圈内容做(删除、访问权限设置),管理员还计划开放(限流操作)权限。
    14、文章权限状态除了作者可以看到,前台管理员现在也能够看到(方便对内容进行审查处理),同时新增一个moments_delete标签(垃圾桶删除图标-fa-trash、背景颜色为:#19191a、间距为3vw)在发布时间后面,只有发布者和管理员才能看到。类似朋友圈删除按钮控件。
    15、朋友圈删除控件(moments_delete)新增onclick点击事件:xc_moments_edit,需要传递post_id(朋友圈编号)。函数内部会通过xc.moments_url获取到朋友圈路径地址,然后通过传递的朋友圈编号对其进行link封装。最后通过xc_mobile_url完成页面跳转。link指向地址为:朋友圈编辑页面。
  • 1
    心乐lv.2实名用户
    2023年11月25日开发记录
    1、moments_video视频容器高度限制最大为60VH(通过max-height标签进行限制),主要是为了避免长视频占据过多页面。time视频时间(分秒)标签间距和样式做出下面调整(top: 3.5vw;right: 3.5vw;padding: 0 1vw;border-radius: 1vw;)对应的字体size从4vw调整到3vw。
    2、封装一个方法格式化视频时间xc_video_time($seconds),将秒数转换为格式为 "00:10" 或 "01:10" 的时间表示形式。这个函数接受一个参数 $seconds,表示视频的秒数。它会将秒数转换为分钟和剩余的秒数,并使用 sprintf() 函数将它们格式化为两位数的分钟和秒钟。最后,返回格式化后的时间。
    3、宫论视频信息获取函数get_video_info:接受一个参数 $video_url,表示视频的URL。它返回一个包含视频信息的关联数组。函数首先将视频URL存储到结果数组中,然后调用 xc_video_img() 函数获取视频封面图,并将其存储到结果数组中。接下来,函数检查上传信息是否存在,如果存在,则从信息中提取视频时长,并使用 xc_video_time() 函数将其格式化为 "00:10" 或 "01:10" 的时间表示形式。函数还从上传信息中提取帧率、COS URL、高度、宽度和文件大小等信息,并将其存储到结果数组中。最后,函数返回包含视频信息的关联数组。这个信息获取依赖cos媒体信息采集,如果不适用cos对象存储,需要重新适配处理。
    4、cos请求视频媒体信息函数优化,如果之前已成功采集,那么将返回exif数组信息。get_video_info函数如果通过xc_is_upload读取到上传记录,但是没有exif记录。那么会通过xc_video_info请求生成,并同步返回媒体信息。不更换是数据表获取,还是实时采集获取,只有$exif['Duration']))字段不为空的情况下,才会返回详细媒体信息(获取失败仅返回图片和视频地址)。
    5、朋友圈视频输出封装成函数:moments_video_html,函数接受一个参数 $post_id,表示朋友圈的ID。它从朋友圈文章的元数据中获取视频的URL,并调用 get_video_info() 函数获取视频的信息。然后,函数使用获取到的视频时长、播放按钮图标和封面图等信息,生成一个包含视频HTML代码的字符串。最后,函数返回生成的 HTML 代码。封装成函数的好处,后面涉及到视频解析,可以直接通过函数修改。
    6、朋友圈视频播放组件会通过自定义属性将【width=视频宽度、height=视频高度、video_url=视频地址、image=视频封面】写入到容器中,方便后续西瓜播放器组件提取信息,自动初始化播放器。同时播放器按钮新增图标已新增onclick事件,用于用户手动点击播放视频。
    7、moments_play_video事件封装完毕,需要传递朋友圈编号和this上下文对象。事件触发后会将视频容器传递给moments_video变量,视频地址、封面图等参数都通过attr请求moments_video获取。考虑到朋友圈页面可能存在多个视频播放,为了更好的管理和维护播放组件,朋友圈视频在初始化西瓜视频播放器时,会将播放器对象赋值到【全局变量:window['moments_video_' + post_id]】,外部可以直接通过 moments_video_朋友圈编号(对播放器进行操作,比如暂停、播放、摧毁、音量、全屏)等交互操作。
    8、朋友圈视频组件样式优化,封面背景图img标签移除,改为容器内部background-image:加载图片。避免初始化播放器因为样式不统一造成页面有明显落差。同时播放器西瓜视频播放器组件样式边框全部适配容器,包括不限于:播放状态、暂停状态、重新播放状态。同时朋友圈页面播放器【暂停图标】隐藏处理(播放控件仍旧显示)
    9、播放器组件新增自定义属性:post_id,用于监听视频位置。当通过moments_play_video进行视频初始化时,会监听当前视频播放器play(播放)和pause(暂停)事件,如果视频播放。会将页面中正在播放的视频暂停处理 避免页面同时播放多个视频。当视频被暂停或播放完毕,会将视频的播放状态标识移除处理。避免其它播放器判定当前视频处于播放,而主动发起暂停。
    10、朋友圈页面新增Intersection Observer API,监听位置:moments_post、threshold值设置为1,朋友圈内容进入设备视图窗口后才会触发执行,可以通过entry.target获取该条朋友圈相关数据信息(比如朋友圈ID、作者、类型等)。为确保页面产生交互后,这个监听始终有效,特定将其封装成一个函数【moments_Intersection_Observer】,页面产生内容变化,只需要执行这个函数即可完成moments_post元素装载。
    11、moments_play_video朋友圈视频播放事件增加一个变量:Intersection默认为false,如果为true则表明视频播放器是通过Intersection_Observer触发的。此时会加载全新的播放器组件配置(volume=禁音处理、controls=关闭控制条、loop=开启循环模式、closeVideoClick=将click事件视频切换播放/暂停状态事件关闭处理,点击播放器不会自动暂停或者播放、closeVideoPreventDefault=关闭播放器video元素的阻止默认动作行为)。
    12、通过Intersection加载的视频组件增加一个click点击监听,当用户点击视频时触发(原来的暂停播放原生事件已移除处理)。监听首先会检测播放器对象是否处于全屏状态,然后执行不同的业务逻辑。【未处于全屏:将通过getFullscreen进入全屏,将播放器音量打开,通过jquery将当前对象xgplayer-controls样式调整为:flex,以便在全屏模式下显示控制条组件。】【处于全屏,则通过exitFullscreen退出全屏状态,将音量静音处理、将视频控制组件隐藏操作】。注:这里涉及的对象都是播放器,处理的业务逻辑相对比较复杂。
    13、朋友圈视频播放事件会在视频加载前将默认背景图(background-image)移除处理,避免视频生成的一瞬间因为播放器和封面图有尺寸偏差,造成轻微卡顿现象。同时moments_Intersection_Observer滚动到视频朋友圈内容时,现在会通过对象检测currentSrc是否存在,如果存在则代表播放器已加载过,此时执行的不是播放moments_play_video函数,而执行play()请求播放器继续播放视频。避免每次加载都会重新播放。
    14、修复页面返回监听的一个错误,当页面通过滚动下拉初始了视频播放器后。返回上一页在打开朋友圈会出现一个致命性的错误(原有的同名播放器因未被摧毁,造成页面自动播放的是之前的对象)。解决方案,在播放视频时会在对象容器内部新增一个自定义属性:player值为TRUE,通过Intersection Observer进行页面滚动加载时,除了会判断播放对象存在还会判断player属性是否存在。只有两者条件符合的情况才会执行播放。
    15、朋友圈视频新增两个监听【exitFullscreen=退出全屏模式、requestFullscreen=进入全屏模式】,前面通过click点击事件监听进入全屏模式有一个瑕疵,当后退左滑事件返回时,无法被监听到。这导致退出全屏的一些事件无法被执行(比如隐藏播放控件、设置静音等),因此新增原生进出全屏模式来执行控件操作更安全可靠一些。避免手势或物理键返回导致的执行失败。
  • 查看全文
  • 查看作者
  • 宋人有耕者。田中有株。兔走触株,折颈而死。因释其耒而守株,冀复得兔。兔不可复得,而身为宋国笑。

    江西·宜春
  • 2
  • 25
  • 0
  • 9.1k
  • 学藏官方心乐

    请登录之后再进行评论

    登录
  • 0
    学藏官方lv.2实名用户
    消息调整不
  • 0
    学藏官方lv.2实名用户
    消息调整测试
  • 0
    学藏官方lv.2实名用户
    很棒,很可以。很优秀!