mirror of
https://github.com/ilyakooo0/urbit.git
synced 2025-01-06 06:25:55 +03:00
Merge remote-tracking branch 'origin/collections' into ford-turbo
This commit is contained in:
commit
ba0de921ab
25
.travis.yml
25
.travis.yml
@ -1,39 +1,34 @@
|
|||||||
language: node_js # ish, mainly used as an entry point
|
language: node_js
|
||||||
node_js:
|
node_js:
|
||||||
- 4
|
- 4
|
||||||
before_install:
|
before_install:
|
||||||
- cd .travis # keep main directory clear
|
- cd .travis
|
||||||
|
- wget -i pin-urbit-release.url -O ./urbit.deb
|
||||||
- wget -i pin-urbit-release.url -O ./urbit.deb
|
- sudo apt install ./urbit.deb
|
||||||
- sudo apt install ./urbit.deb
|
|
||||||
|
|
||||||
|
|
||||||
before_script: bash get-or-build-pill.sh
|
before_script: bash get-or-build-pill.sh
|
||||||
|
|
||||||
# https://github.com/travis-ci/travis-ci/issues/2570
|
# https://github.com/travis-ci/travis-ci/issues/2570
|
||||||
before_deploy: "[ -d piers ] || { mkdir piers && tar cvzSf piers/zod-$TRAVIS_COMMIT.tgz zod/; }"
|
before_deploy: "[ -d piers ] || { mkdir piers && tar cvzSf piers/zod-$TRAVIS_COMMIT.tgz zod/; }"
|
||||||
deploy:
|
deploy:
|
||||||
- skip_cleanup: true
|
- skip_cleanup: true
|
||||||
provider: gcs
|
provider: gcs
|
||||||
access_key_id: GOOGW5WD4W7RF3TQ5EBM
|
access_key_id: GOOGTADOPP55X5ZTH3IKAXQW
|
||||||
secret_access_key:
|
secret_access_key:
|
||||||
secure: cbMrx/jloYtTiMc9b+gujrpdzmB05yHC7C2PN1dqHoe25JqwS1c8ne0jhzYOanSkJptPEjwpKeEYLyF87CStCglMJaHwsx1wAm94D8Vh6WL96pgxFbMdVRD+g2dAcSXYnSX5C0QpFrnxY8ujg9yqhItpvd+whsPYjxZahIUd5rPPS1gCP2O6hGpKFCv5++DB1RgqL5y1Hlm9efsLxsnkS7cuzrSX6o8I6Yns5pFlDDRED7Tgpp5DYYfq6ZmiIpxbuYZK+AYJKK7N2zC4RfFXstgL+M9h7joFE1r8RlzrVHLXL7+3qg8POWEEu47008ORByDCmlt5VKoMBJ3q4J4ykDKI2qmx3jw68tGIu2o5uVf6KpxtAM2IJSNZ4mOEYjs7ieR1GOrLKr7lSSYEOIShJhx7J1MMjBOaS17Ho7Uc4iNLGpH4M7DpiKwVLnjfsYiasv/1xq71ed386wLTpI5YyY/SfsNPoIbgv1IjkKIMRLl5l85tEUK10h8dxQi3mXeaP698LnQLdHdxeBKJB08hwJrl7kIOJnqZxWPBp8i7OQeIvKcu+WzMg5UIR4hR7wj7NEga/+1jjjDQeo7EHQB2Tk9dhXtTmozOGpsW49H7+VBThhhNODEYeX3CIcdOtSyjuwBLZ45HsKIhhWA00b+YyE8boBkV1yQeFh/IYCZBn7s=
|
secure: lALZvAW22oBMCXafvDOkqKDkdP0K8bGKlSb6uhh54z+2bJu49+5vrfxgA9YLcExGiz8uFttzNYhEoAQEjb96DPHAHvH2iJrwieKltrWM4hLkGuSHVSCBIIm+Qe4BVRSVJPQ1rtO1ausNr0XuzO6BVnKY7NCrz8la2XNjm5+miQdtrJUnrfy2JsM/c/Bkwjj3Tc4op9Ne+7Xzc9DI6LB97XiJx5PgeOx1WeZi9IKQ3IhPBHBzBpBrJ4lWxb4PFvDUqNzSk1wuMGy/sH73IFhGcz3CZRZYbeICDdwmHcUnkdPxG6+RLH+YLhSxx175R+HdaARRQvRANxvY9KNJ11NKmV3Rs9q7fZgWZbrptuB0CDMhfZ/Aiz9tgHGV0UVhYHb8n614fDIKzpXwIy5DPjCKpxPoZRVzABQcdzPTvxnZtZDbarsfdfq0vh9xXNPLGuFYZQnZ6iEpv17qp/2TbeCBSMKIxwIG3LQTwr0a4wKL1T/YIZm6oiN6NycHhMHaczQIRANKw9e7oqbgnXu/WnqHIxyTY2CCvzVOgipRmKKa7jz7CcSoP883XZ9o7WAOnfJY+T4ofpdkzHn1ElNXPjDPpX7CUkowNFH4DZk2Ljwe0CgxPOF6ygnsNrqqs4XoNQaBnHGXMq20Upg6OK9MBmZibtlX9STCeSAt4WudekpEOPU=
|
||||||
bucket: ci-piers.urbit.org
|
bucket: ci-piers.urbit.org
|
||||||
local-dir: piers/
|
local-dir: piers/
|
||||||
acl: public-read
|
acl: public-read
|
||||||
on:
|
on:
|
||||||
repo: urbit/arvo
|
repo: urbit/arvo
|
||||||
all_branches: true
|
all_branches: true
|
||||||
#
|
|
||||||
- skip_cleanup: true
|
- skip_cleanup: true
|
||||||
provider: gcs
|
provider: gcs
|
||||||
access_key_id: GOOGW5WD4W7RF3TQ5EBM
|
access_key_id: GOOGTADOPP55X5ZTH3IKAXQW
|
||||||
secret_access_key:
|
secret_access_key:
|
||||||
secure: cbMrx/jloYtTiMc9b+gujrpdzmB05yHC7C2PN1dqHoe25JqwS1c8ne0jhzYOanSkJptPEjwpKeEYLyF87CStCglMJaHwsx1wAm94D8Vh6WL96pgxFbMdVRD+g2dAcSXYnSX5C0QpFrnxY8ujg9yqhItpvd+whsPYjxZahIUd5rPPS1gCP2O6hGpKFCv5++DB1RgqL5y1Hlm9efsLxsnkS7cuzrSX6o8I6Yns5pFlDDRED7Tgpp5DYYfq6ZmiIpxbuYZK+AYJKK7N2zC4RfFXstgL+M9h7joFE1r8RlzrVHLXL7+3qg8POWEEu47008ORByDCmlt5VKoMBJ3q4J4ykDKI2qmx3jw68tGIu2o5uVf6KpxtAM2IJSNZ4mOEYjs7ieR1GOrLKr7lSSYEOIShJhx7J1MMjBOaS17Ho7Uc4iNLGpH4M7DpiKwVLnjfsYiasv/1xq71ed386wLTpI5YyY/SfsNPoIbgv1IjkKIMRLl5l85tEUK10h8dxQi3mXeaP698LnQLdHdxeBKJB08hwJrl7kIOJnqZxWPBp8i7OQeIvKcu+WzMg5UIR4hR7wj7NEga/+1jjjDQeo7EHQB2Tk9dhXtTmozOGpsW49H7+VBThhhNODEYeX3CIcdOtSyjuwBLZ45HsKIhhWA00b+YyE8boBkV1yQeFh/IYCZBn7s=
|
secure: lALZvAW22oBMCXafvDOkqKDkdP0K8bGKlSb6uhh54z+2bJu49+5vrfxgA9YLcExGiz8uFttzNYhEoAQEjb96DPHAHvH2iJrwieKltrWM4hLkGuSHVSCBIIm+Qe4BVRSVJPQ1rtO1ausNr0XuzO6BVnKY7NCrz8la2XNjm5+miQdtrJUnrfy2JsM/c/Bkwjj3Tc4op9Ne+7Xzc9DI6LB97XiJx5PgeOx1WeZi9IKQ3IhPBHBzBpBrJ4lWxb4PFvDUqNzSk1wuMGy/sH73IFhGcz3CZRZYbeICDdwmHcUnkdPxG6+RLH+YLhSxx175R+HdaARRQvRANxvY9KNJ11NKmV3Rs9q7fZgWZbrptuB0CDMhfZ/Aiz9tgHGV0UVhYHb8n614fDIKzpXwIy5DPjCKpxPoZRVzABQcdzPTvxnZtZDbarsfdfq0vh9xXNPLGuFYZQnZ6iEpv17qp/2TbeCBSMKIxwIG3LQTwr0a4wKL1T/YIZm6oiN6NycHhMHaczQIRANKw9e7oqbgnXu/WnqHIxyTY2CCvzVOgipRmKKa7jz7CcSoP883XZ9o7WAOnfJY+T4ofpdkzHn1ElNXPjDPpX7CUkowNFH4DZk2Ljwe0CgxPOF6ygnsNrqqs4XoNQaBnHGXMq20Upg6OK9MBmZibtlX9STCeSAt4WudekpEOPU=
|
||||||
bucket: bootstrap.urbit.org
|
bucket: bootstrap.urbit.org
|
||||||
local-dir: built-pill/
|
local-dir: built-pill/
|
||||||
acl: public-read
|
acl: public-read
|
||||||
on:
|
on:
|
||||||
condition: -d built-pill/
|
condition: "-d built-pill/"
|
||||||
repo: urbit/arvo
|
repo: urbit/arvo
|
||||||
all_branches: true
|
all_branches: true
|
||||||
|
@ -83,6 +83,8 @@
|
|||||||
::
|
::
|
||||||
++ allowed-by
|
++ allowed-by
|
||||||
|= [who=@p dic=dict:clay]
|
|= [who=@p dic=dict:clay]
|
||||||
|
^- ?
|
||||||
|
?: =(who our.bol) &
|
||||||
=/ in-list=?
|
=/ in-list=?
|
||||||
?| (~(has in p.who.rul.dic) who)
|
?| (~(has in p.who.rul.dic) who)
|
||||||
::
|
::
|
||||||
@ -152,19 +154,19 @@
|
|||||||
::
|
::
|
||||||
::
|
::
|
||||||
::
|
::
|
||||||
|
++ coup
|
||||||
|
|= [wir=wire err=(unit tang)]
|
||||||
|
^- (quip move _this)
|
||||||
|
?~ err
|
||||||
|
[~ this]
|
||||||
|
(mean u.err)
|
||||||
++ poke-noun
|
++ poke-noun
|
||||||
|= a=*
|
|= a=*
|
||||||
^- (quip move _this)
|
^- (quip move _this)
|
||||||
:: =/ pax ((hard path) a)
|
:: =/ pax ((hard path) a)
|
||||||
=/ yo=item (~(got by data.cols) ~.yoyo)
|
|
||||||
?> ?=(%both -.yo)
|
|
||||||
=/ new-front (~(put by meta.raw.yo) %new-field ~.fuck-off)
|
|
||||||
=/ new-body (crip (weld (trip data.raw.yo) "new line\0a"))
|
|
||||||
=/ new-contents (update-umd-front new-front data.raw.yo)
|
|
||||||
|
|
||||||
=/ act=action:collections
|
=/ act=action:collections
|
||||||
:* our.bol %home
|
:* our.bol %home
|
||||||
:~ [%write /web/collections/yoyo/umd %umd new-body]
|
:~ [%post /web/collections ~.test 'test' & '# title\0a\0abody']
|
||||||
==
|
==
|
||||||
==
|
==
|
||||||
=/ mow=move
|
=/ mow=move
|
||||||
@ -185,12 +187,38 @@
|
|||||||
%collections-action act
|
%collections-action act
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
:: resolve %collection, %post, or %comment to %write action
|
:: resolve %collection, %post, or %comment to %write + %perms action
|
||||||
=. acts.act
|
=. acts.act
|
||||||
%+ turn acts.act
|
%+ roll acts.act
|
||||||
|= a=sub-action
|
|= [a=sub-action out=(list sub-action)]
|
||||||
^- sub-action
|
^- (list sub-action)
|
||||||
?: ?=(%collection -.a)
|
=/ sap (en-beam:format [byk.bol (flop (path +<.a))])
|
||||||
|
?- -.a
|
||||||
|
::
|
||||||
|
%write
|
||||||
|
=/ perms .^([dict:clay dict:clay] %cp sap)
|
||||||
|
?: (allowed-by src.bol +.perms)
|
||||||
|
[a out]
|
||||||
|
out
|
||||||
|
::
|
||||||
|
%delete
|
||||||
|
=/ perms .^([dict:clay dict:clay] %cp sap)
|
||||||
|
?: (allowed-by src.bol +.perms)
|
||||||
|
[a out]
|
||||||
|
out
|
||||||
|
::
|
||||||
|
%perms
|
||||||
|
?: =(src.bol our.bol) :: XX admin priveleges for other users?
|
||||||
|
[a out]
|
||||||
|
out
|
||||||
|
::
|
||||||
|
::
|
||||||
|
:: XX some of this is redunant
|
||||||
|
::
|
||||||
|
%collection
|
||||||
|
=/ perms .^([dict:clay dict:clay] %cp (weld sap /[name.a]/collections-config))
|
||||||
|
?. (allowed-by src.bol +.perms)
|
||||||
|
out
|
||||||
=/ conf=config
|
=/ conf=config
|
||||||
:* [byk.bol (flop (weld pax.a /[name.a]/collections-config))]
|
:* [byk.bol (flop (weld pax.a /[name.a]/collections-config))]
|
||||||
name.a
|
name.a
|
||||||
@ -203,9 +231,23 @@
|
|||||||
~
|
~
|
||||||
visible.a
|
visible.a
|
||||||
==
|
==
|
||||||
[%write (weld pax.a /[name.a]/collections-config) %collections-config conf]
|
=/ new=(list sub-action)
|
||||||
|
:~ [%write (weld pax.a /[name.a]/collections-config) %collections-config conf]
|
||||||
|
:: restrict permissions on config file
|
||||||
|
:^ %perms (weld pax.a /[name.a]/collections-config)
|
||||||
|
[%white ((set whom:clay) [[& src.bol] ~ ~])] :: read XX maybe open this?
|
||||||
|
[%white ((set whom:clay) [[& src.bol] ~ ~])] :: write
|
||||||
|
:: open permissions on collection items
|
||||||
|
:^ %perms (weld pax.a /[name.a])
|
||||||
|
[%black ((set whom:clay) ~)] :: read
|
||||||
|
[%black ((set whom:clay) ~)] :: write
|
||||||
|
==
|
||||||
|
(weld new out)
|
||||||
::
|
::
|
||||||
?: ?=(%post -.a)
|
%post
|
||||||
|
=/ perms .^([dict:clay dict:clay] %cp (weld sap /[name.a]/umd))
|
||||||
|
?. (allowed-by src.bol +.perms)
|
||||||
|
out
|
||||||
=. content.a (crip (weld (trip content.a) "\0a"))
|
=. content.a (crip (weld (trip content.a) "\0a"))
|
||||||
=/ front=(map knot cord)
|
=/ front=(map knot cord)
|
||||||
%- my
|
%- my
|
||||||
@ -216,11 +258,25 @@
|
|||||||
[%last-modified (scot %da now.bol)]
|
[%last-modified (scot %da now.bol)]
|
||||||
[%type type.a]
|
[%type type.a]
|
||||||
==
|
==
|
||||||
[%write (weld pax.a /[name.a]/umd) %umd `@t`(update-umd-front front content.a)]
|
=/ new=(list sub-action)
|
||||||
|
:~ [%write (weld pax.a /[name.a]/umd) %umd `@t`(update-umd-front front content.a)]
|
||||||
|
:: restrict write permissions on umd file
|
||||||
|
:^ %perms (weld pax.a /[name.a]/umd)
|
||||||
|
[%black ((set whom:clay) ~)] :: read
|
||||||
|
[%white ((set whom:clay) [[& src.bol] ~ ~])] :: write
|
||||||
|
:: open permissions on comments
|
||||||
|
:^ %perms (weld pax.a /[name.a])
|
||||||
|
[%black ((set whom:clay) ~)] :: read
|
||||||
|
[%black ((set whom:clay) ~)] :: write
|
||||||
|
==
|
||||||
|
(weld new out)
|
||||||
::
|
::
|
||||||
?: ?=(%comment -.a)
|
%comment
|
||||||
=. content.a (crip (weld (trip content.a) "\0a"))
|
|
||||||
=/ dat (scot %da now.bol)
|
=/ dat (scot %da now.bol)
|
||||||
|
=/ perms .^([dict:clay dict:clay] %cp (weld sap /[dat]/umd))
|
||||||
|
?. (allowed-by src.bol +.perms)
|
||||||
|
out
|
||||||
|
=. content.a (crip (weld (trip content.a) "\0a"))
|
||||||
=/ front=(map knot cord)
|
=/ front=(map knot cord)
|
||||||
%- my
|
%- my
|
||||||
:~ [%owner (scot %p src.bol)]
|
:~ [%owner (scot %p src.bol)]
|
||||||
@ -228,33 +284,18 @@
|
|||||||
[%last-modified dat]
|
[%last-modified dat]
|
||||||
[%type %comments]
|
[%type %comments]
|
||||||
==
|
==
|
||||||
[%write (weld pax.a /[dat]/umd) %umd (update-umd-front front content.a)]
|
=/ new=(list sub-action)
|
||||||
|
:~ [%write (weld pax.a /[dat]/umd) %umd (update-umd-front front content.a)]
|
||||||
|
:: restrict write permissions on umd file
|
||||||
|
:^ %perms (weld pax.a /[dat]/umd)
|
||||||
|
[%black ((set whom:clay) ~)] :: read
|
||||||
|
[%white ((set whom:clay) [[& src.bol] ~ ~])] :: write
|
||||||
|
==
|
||||||
|
(weld new out)
|
||||||
::
|
::
|
||||||
a
|
|
||||||
::
|
|
||||||
:: if its from us no need to check permissions
|
|
||||||
?: =(src.bol our.bol)
|
|
||||||
ta-done:(ta-act:ta act)
|
|
||||||
::
|
|
||||||
:: if not from us, check if every action in the list is permitted
|
|
||||||
:: if even one isn't, don't reject the whole list
|
|
||||||
=/ success=?
|
|
||||||
%+ levy acts.act
|
|
||||||
|= a=sub-action
|
|
||||||
=/ pax (path +<.a)
|
|
||||||
?+ -.a !!
|
|
||||||
%write
|
|
||||||
=/ perms .^([dict:clay dict:clay] %cp pax)
|
|
||||||
(allowed-by src.bol +.perms)
|
|
||||||
%delete
|
|
||||||
=/ perms .^([dict:clay dict:clay] %cp pax)
|
|
||||||
(allowed-by src.bol +.perms)
|
|
||||||
%perms |
|
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
?: success
|
ta-done:(ta-act:ta act)
|
||||||
ta-done:(ta-act:ta act)
|
|
||||||
[~ this] :: XX TODO: report failure
|
|
||||||
::
|
::
|
||||||
::::::
|
::::::
|
||||||
::::::
|
::::::
|
||||||
|
@ -194,11 +194,17 @@
|
|||||||
++ prep-config
|
++ prep-config
|
||||||
|= cof/config-0
|
|= cof/config-0
|
||||||
^- config
|
^- config
|
||||||
%= cof
|
=. src.cof
|
||||||
src
|
|
||||||
%- ~(gas in *(set source))
|
%- ~(gas in *(set source))
|
||||||
(murn ~(tap in src.cof) prep-source)
|
(murn ~(tap in src.cof) prep-source)
|
||||||
|
:* src.cof
|
||||||
|
cap.cof
|
||||||
|
tag.cof
|
||||||
|
fit.cof
|
||||||
|
con.cof
|
||||||
|
0
|
||||||
==
|
==
|
||||||
|
|
||||||
::
|
::
|
||||||
++ prep-source
|
++ prep-source
|
||||||
|= src/source-0
|
|= src/source-0
|
||||||
@ -425,6 +431,8 @@
|
|||||||
$permit (action-permit +.act)
|
$permit (action-permit +.act)
|
||||||
$delete (action-delete +.act)
|
$delete (action-delete +.act)
|
||||||
$usage (action-usage +.act)
|
$usage (action-usage +.act)
|
||||||
|
$read (action-read +.act)
|
||||||
|
$newdm (action-newdm +.act)
|
||||||
:: messaging
|
:: messaging
|
||||||
$convey (action-convey +.act)
|
$convey (action-convey +.act)
|
||||||
$phrase (action-phrase +.act)
|
$phrase (action-phrase +.act)
|
||||||
@ -493,6 +501,7 @@
|
|||||||
:- typ
|
:- typ
|
||||||
?. ?=(?($village $journal) typ) ~
|
?. ?=(?($village $journal) typ) ~
|
||||||
[our.bol ~ ~]
|
[our.bol ~ ~]
|
||||||
|
0
|
||||||
==
|
==
|
||||||
(ta-evil (crip "{(trip nom)}: already exists"))
|
(ta-evil (crip "{(trip nom)}: already exists"))
|
||||||
::
|
::
|
||||||
@ -560,6 +569,52 @@
|
|||||||
(ta-evil (crip "no story {(trip nom)}"))
|
(ta-evil (crip "no story {(trip nom)}"))
|
||||||
so-done:(~(so-usage so nom ~ u.soy) add tas)
|
so-done:(~(so-usage so nom ~ u.soy) add tas)
|
||||||
::
|
::
|
||||||
|
++ action-read
|
||||||
|
:: set the read message number
|
||||||
|
::
|
||||||
|
|= {nom/name red/@ud}
|
||||||
|
=+ soy=(~(get by stories) nom)
|
||||||
|
?~ soy
|
||||||
|
(ta-evil (crip "no story {(trip nom)}"))
|
||||||
|
so-done:(~(so-read so nom ~ u.soy) red)
|
||||||
|
::
|
||||||
|
++ action-newdm
|
||||||
|
:: copy all behavior of create, permit, and source in that order
|
||||||
|
::
|
||||||
|
|= {sis/(set ship)}
|
||||||
|
=/ nom/name
|
||||||
|
%^ rsh 3 1
|
||||||
|
%+ roll
|
||||||
|
%+ sort (weld ~(tap in sis) [our.bol ~])
|
||||||
|
|= [a=ship b=ship]
|
||||||
|
^- ?
|
||||||
|
(lth a b)
|
||||||
|
|= {p/ship nam/name}
|
||||||
|
^- @tas
|
||||||
|
(crip "{(trip `@t`nam)}.{(slag 1 (trip (scot %p p)))}")
|
||||||
|
=/ dels/(list delta)
|
||||||
|
:~
|
||||||
|
:*
|
||||||
|
%story
|
||||||
|
%inbox
|
||||||
|
%follow
|
||||||
|
&
|
||||||
|
[[[our.bol nom] ~] ~ ~]
|
||||||
|
==
|
||||||
|
:*
|
||||||
|
%story
|
||||||
|
nom
|
||||||
|
%new
|
||||||
|
[[[our.bol nom] ~] ~ ~]
|
||||||
|
'dm'
|
||||||
|
~
|
||||||
|
*filter
|
||||||
|
[%village (~(put in sis) our.bol)]
|
||||||
|
0
|
||||||
|
==
|
||||||
|
==
|
||||||
|
(ta-deltas dels)
|
||||||
|
::
|
||||||
:: # %messaging
|
:: # %messaging
|
||||||
+| %messaging
|
+| %messaging
|
||||||
++ action-convey
|
++ action-convey
|
||||||
@ -1182,6 +1237,7 @@
|
|||||||
[%filter fit.cof]
|
[%filter fit.cof]
|
||||||
[%secure sec.con.cof]
|
[%secure sec.con.cof]
|
||||||
[%permit & sis.con.cof]
|
[%permit & sis.con.cof]
|
||||||
|
[%read red.cof]
|
||||||
==
|
==
|
||||||
=- (murn - same)
|
=- (murn - same)
|
||||||
^- (list (unit diff-config))
|
^- (list (unit diff-config))
|
||||||
@ -1262,6 +1318,13 @@
|
|||||||
?~ sas +>.$
|
?~ sas +>.$
|
||||||
(so-delta-our %config so-cir %usage add sas)
|
(so-delta-our %config so-cir %usage add sas)
|
||||||
::
|
::
|
||||||
|
++ so-read
|
||||||
|
:: set the read message number in circle config
|
||||||
|
|= {red/@ud}
|
||||||
|
^+ +>
|
||||||
|
?: =(red red.shape) +>
|
||||||
|
(so-delta-our %config so-cir %read red)
|
||||||
|
::
|
||||||
++ so-filter
|
++ so-filter
|
||||||
:: change message rules
|
:: change message rules
|
||||||
::
|
::
|
||||||
|
@ -79,6 +79,7 @@
|
|||||||
{$banish name (set ship)} :: deny permission
|
{$banish name (set ship)} :: deny permission
|
||||||
{$source name (map circle range)} :: add source
|
{$source name (map circle range)} :: add source
|
||||||
{$unsource name (map circle range)} :: remove source
|
{$unsource name (map circle range)} :: remove source
|
||||||
|
{$read name @ud} :: set read count
|
||||||
:: personal metadata ::
|
:: personal metadata ::
|
||||||
{$attend audience (unit presence)} :: set our presence
|
{$attend audience (unit presence)} :: set our presence
|
||||||
{$name audience human} :: set our name
|
{$name audience human} :: set our name
|
||||||
@ -162,10 +163,15 @@
|
|||||||
++ prep-config
|
++ prep-config
|
||||||
|= cof/config-0
|
|= cof/config-0
|
||||||
^- config
|
^- config
|
||||||
%= cof
|
=. src.cof
|
||||||
src
|
|
||||||
%- ~(gas in *(set source))
|
%- ~(gas in *(set source))
|
||||||
(murn ~(tap in src.cof) prep-source)
|
(murn ~(tap in src.cof) prep-source)
|
||||||
|
:* src.cof
|
||||||
|
cap.cof
|
||||||
|
tag.cof
|
||||||
|
fit.cof
|
||||||
|
con.cof
|
||||||
|
0
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ prep-source
|
++ prep-source
|
||||||
@ -832,6 +838,8 @@
|
|||||||
;~ pose
|
;~ pose
|
||||||
::
|
::
|
||||||
:: circle management
|
:: circle management
|
||||||
|
::
|
||||||
|
;~((glue ace) (perk %read ~) cire dem:ag)
|
||||||
::
|
::
|
||||||
;~((glue ace) (perk %join ~) sorz)
|
;~((glue ace) (perk %join ~) sorz)
|
||||||
::
|
::
|
||||||
@ -1070,6 +1078,7 @@
|
|||||||
$banish (permit | +.job)
|
$banish (permit | +.job)
|
||||||
$source (source & +.job)
|
$source (source & +.job)
|
||||||
$unsource (source | +.job)
|
$unsource (source | +.job)
|
||||||
|
$read (read +.job)
|
||||||
:: personal metadata
|
:: personal metadata
|
||||||
$attend (attend +.job)
|
$attend (attend +.job)
|
||||||
$name (set-name +.job)
|
$name (set-name +.job)
|
||||||
@ -1273,6 +1282,15 @@
|
|||||||
^+ ..sh-work
|
^+ ..sh-work
|
||||||
(sh-act %source nom sub pos)
|
(sh-act %source nom sub pos)
|
||||||
::
|
::
|
||||||
|
++ read
|
||||||
|
:: %read
|
||||||
|
::
|
||||||
|
:: set {red} for {nom}
|
||||||
|
::
|
||||||
|
|= {nom/name red/@ud}
|
||||||
|
^+ ..sh-work
|
||||||
|
(sh-act %read nom red)
|
||||||
|
::
|
||||||
:: #
|
:: #
|
||||||
:: # %personal-metadata
|
:: # %personal-metadata
|
||||||
:: #
|
:: #
|
||||||
@ -1916,6 +1934,9 @@
|
|||||||
::
|
::
|
||||||
$caption
|
$caption
|
||||||
"cap: {(trip cap.dif)}"
|
"cap: {(trip cap.dif)}"
|
||||||
|
::
|
||||||
|
$read
|
||||||
|
"red: {(scow %ud red.dif)}"
|
||||||
::
|
::
|
||||||
$filter
|
$filter
|
||||||
;: weld
|
;: weld
|
||||||
|
@ -183,6 +183,7 @@
|
|||||||
$secure s+sec.a
|
$secure s+sec.a
|
||||||
$permit (pairs add+b+add.a sis+(sa sis.a ship) ~)
|
$permit (pairs add+b+add.a sis+(sa sis.a ship) ~)
|
||||||
$remove b+&
|
$remove b+&
|
||||||
|
$read (numb red.a)
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ disa ::: diff-status
|
++ disa ::: diff-status
|
||||||
@ -233,6 +234,7 @@
|
|||||||
tag+(sa tag.a cord)
|
tag+(sa tag.a cord)
|
||||||
fit+(filt fit.a)
|
fit+(filt fit.a)
|
||||||
con+(cont con.a)
|
con+(cont con.a)
|
||||||
|
red+(numb red.a)
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ sorc ::: source
|
++ sorc ::: source
|
||||||
@ -475,6 +477,7 @@
|
|||||||
tag+(as so)
|
tag+(as so)
|
||||||
fit+filt
|
fit+filt
|
||||||
con+cont
|
con+cont
|
||||||
|
red+ni
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
::TODO maybe just an object?
|
::TODO maybe just an object?
|
||||||
|
@ -145,6 +145,7 @@
|
|||||||
$caption cof(cap cap.dif)
|
$caption cof(cap cap.dif)
|
||||||
$filter cof(fit fit.dif)
|
$filter cof(fit fit.dif)
|
||||||
$remove cof
|
$remove cof
|
||||||
|
$read cof(red red.dif)
|
||||||
::
|
::
|
||||||
$usage
|
$usage
|
||||||
%= cof
|
%= cof
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
:::: /hoon/config/collection/mar
|
:::: /hoon/config/collection/mar
|
||||||
::
|
::
|
||||||
/+ collections
|
/+ collections
|
||||||
|
!:
|
||||||
|_ con=config:collections
|
|_ con=config:collections
|
||||||
::
|
::
|
||||||
::
|
::
|
||||||
@ -9,88 +10,74 @@
|
|||||||
|%
|
|%
|
||||||
++ mime
|
++ mime
|
||||||
:- /text/x-collection-config
|
:- /text/x-collection-config
|
||||||
(as-octs:mimes:html (jam con))
|
(as-octs:mimes:html (of-wain:format txt))
|
||||||
:: ++ txt
|
++ txt
|
||||||
:: |^
|
^- wain
|
||||||
:: ^- (list @t)
|
::
|
||||||
:: ;: weld
|
:~ (cat 3 'full-path: ' (spat (en-beam:format full-path.con)))
|
||||||
:: ::
|
(cat 3 'name: ' name.con)
|
||||||
:: :~ (cat 3 'name: ' goodname.con)
|
(cat 3 'description: ' description.con)
|
||||||
:: (cat 3 'owner: ' (scot %p owner.con))
|
::
|
||||||
:: (cat 3 'date-created: ' (scot %da date-created.con))
|
(cat 3 'owner: ' (scot %p owner.con))
|
||||||
:: (cat 3 'last-modified: ' (scot %da last-modified.con))
|
::
|
||||||
:: (cat 3 'comments: ' ?:(comments.con 'y' 'n'))
|
(cat 3 'date-created: ' (scot %da date-created.con))
|
||||||
:: ==
|
(cat 3 'last-modified: ' (scot %da last-modified.con))
|
||||||
:: ::
|
::
|
||||||
:: ?~ sort-key.con ~
|
(cat 3 'type: ' type.con)
|
||||||
:: [(cat 3 'sort-key: ' (scot %ud u.sortkey.con)) ~]
|
(cat 3 'comments: ' ?:(comments.con 'y' 'n'))
|
||||||
:: ::
|
(cat 3 'sort-key: ' ?~(sort-key.con '~' (scot %ud u.sort-key.con)))
|
||||||
:: :- 'config-permissions:'
|
(cat 3 'visible: ' ?:(visible.con 'y' 'n'))
|
||||||
:: (rules-to-txt r.config-permissions.con w.config-permissions.con)
|
==
|
||||||
:: ::
|
|
||||||
:: :- 'content-permissions:'
|
|
||||||
:: (rules-to-txt r.content-permissions.con w.content-permissions.con)
|
|
||||||
:: ::
|
|
||||||
:: ==
|
|
||||||
:: ++ rules-to-txt
|
|
||||||
:: |= [r=rule:clay w=rule:clay]
|
|
||||||
:: ^- (list @t)
|
|
||||||
:: ;: weld
|
|
||||||
:: ::
|
|
||||||
:: :* (cat 3 ' read: ' mod.r)
|
|
||||||
:: %+ turn ~(tap by who.r)
|
|
||||||
:: |= hoe=whom:clay
|
|
||||||
:: ?- -.hoe
|
|
||||||
:: %& (cat 3 ' ' (scot %p +.hoe))
|
|
||||||
:: %| (cat 3 ' ' +.hoe)
|
|
||||||
:: ==
|
|
||||||
:: ==
|
|
||||||
:: ::
|
|
||||||
:: [' ==' ~]
|
|
||||||
:: ::
|
|
||||||
:: :* (cat 3 ' write: ' mod.w)
|
|
||||||
:: %+ turn ~(tap by who.w)
|
|
||||||
:: |= hoe=whom:clay
|
|
||||||
:: ?- -.hoe
|
|
||||||
:: %& (cat 3 ' ' (scot %p +.hoe))
|
|
||||||
:: %| (cat 3 ' ' +.hoe)
|
|
||||||
:: ==
|
|
||||||
:: ==
|
|
||||||
:: ::
|
|
||||||
:: [' ==' ~]
|
|
||||||
:: ==
|
|
||||||
:: --
|
|
||||||
--
|
--
|
||||||
++ grab
|
++ grab
|
||||||
|%
|
|%
|
||||||
++ mime
|
++ mime
|
||||||
|= [mite:eyre p=octs:eyre]
|
|= [mite:eyre p=octs:eyre]
|
||||||
((hard config:collections) (cue q.p))
|
(txt (to-wain:format q.p))
|
||||||
:: ++ txt
|
++ txt
|
||||||
:: |= txs=(list @t)
|
|= txs=(pole @t)
|
||||||
:: ?> ?= $: name=@t
|
^- config:collections
|
||||||
:: owner=@t
|
?> ?= $: full-path=@t
|
||||||
:: dc=@t
|
name=@t
|
||||||
:: lm=@t
|
desc=@t
|
||||||
:: com=@t
|
owner=@t
|
||||||
:: res=(lest @t)
|
dc=@t
|
||||||
:: ==
|
lm=@t
|
||||||
:: txs
|
type=@t
|
||||||
:: ::
|
com=@t
|
||||||
:: =/ top
|
sk=@t
|
||||||
:: :* (rash name.txs ;~(pfix (jest 'name: ') (cook crip (star next))))
|
vis=@t
|
||||||
:: (rash owner.txs ;~(pfix (jest 'owner: ~') (fed:ag)))
|
~
|
||||||
:: (rash dc.txs ;~(pfix (jest 'date-created: ~') (cook |=(a=^ +.a) crub:so)))
|
==
|
||||||
:: (rash lm.txs ;~(pfix (jest 'last-modified: ~') (cook |=(a=^ +.a) crub:so)))
|
txs
|
||||||
:: (rash com.txs ;~(pfix (jest 'comments: ') (flag %y %n)))
|
::
|
||||||
:: ==
|
%- (hard config:collections)
|
||||||
|
:* %- need
|
||||||
|
%+ rash full-path.txs
|
||||||
|
;~ pfix (jest 'full-path: ')
|
||||||
|
%+ cook de-beam:format
|
||||||
|
;~(pfix fas (more fas urs:ab))
|
||||||
|
==
|
||||||
|
::
|
||||||
|
(rash name.txs ;~(pfix (jest 'name: ') (cook crip (star next))))
|
||||||
|
::
|
||||||
|
(rash desc.txs ;~(pfix (jest 'description: ') (cook crip (star next))))
|
||||||
|
::
|
||||||
|
(rash owner.txs ;~(pfix (jest 'owner: ~') fed:ag))
|
||||||
|
::
|
||||||
|
(rash dc.txs ;~(pfix (jest 'date-created: ~') (cook |=(a=^ +.a) crub:so)))
|
||||||
|
::
|
||||||
|
(rash lm.txs ;~(pfix (jest 'last-modified: ~') (cook |=(a=^ +.a) crub:so)))
|
||||||
|
::
|
||||||
|
(rash type.txs ;~(pfix (jest 'type: ') (cook crip (star next))))
|
||||||
|
::
|
||||||
|
(rash com.txs ;~(pfix (jest 'comments: ') (flag %y %n)))
|
||||||
|
::
|
||||||
|
(rush sk.txs ;~(pfix (jest 'sort-key: ') dem:ag))
|
||||||
|
::
|
||||||
|
(rash vis.txs ;~(pfix (jest 'visible: ') (flag %y %n)))
|
||||||
|
==
|
||||||
++ noun config:collections
|
++ noun config:collections
|
||||||
--
|
--
|
||||||
++ grad %mime
|
++ grad %txt
|
||||||
--
|
--
|
||||||
|
@ -22,7 +22,9 @@
|
|||||||
filter+(ot nom+so fit+filt ~)
|
filter+(ot nom+so fit+filt ~)
|
||||||
permit+(ot nom+so inv+bo sis+(as (su fed:ag)) ~)
|
permit+(ot nom+so inv+bo sis+(as (su fed:ag)) ~)
|
||||||
source+(ot nom+so sub+bo srs+(as sorc) ~)
|
source+(ot nom+so sub+bo srs+(as sorc) ~)
|
||||||
|
read+(ot nom+so red+ni ~)
|
||||||
usage+(ot nom+so add+bo tas+(as so) ~)
|
usage+(ot nom+so add+bo tas+(as so) ~)
|
||||||
|
newdm+(ot sis+(as (su fed:ag)) ~)
|
||||||
::
|
::
|
||||||
convey+(ar thot)
|
convey+(ar thot)
|
||||||
phrase+(ot aud+audi ses+(ar spec:dejs:hall-json) ~)
|
phrase+(ot aud+audi ses+(ar spec:dejs:hall-json) ~)
|
||||||
@ -54,7 +56,9 @@
|
|||||||
$filter ~[nom+s+nom.act fit+(filt fit.act)]
|
$filter ~[nom+s+nom.act fit+(filt fit.act)]
|
||||||
$permit ~[nom+s+nom.act inv+b+inv.act sis+(sa sis.act ship)]
|
$permit ~[nom+s+nom.act inv+b+inv.act sis+(sa sis.act ship)]
|
||||||
$source ~[nom+s+nom.act sub+b+sub.act srs+(sa srs.act sorc)]
|
$source ~[nom+s+nom.act sub+b+sub.act srs+(sa srs.act sorc)]
|
||||||
|
$read ~[nom+s+nom.act red+(numb red.act)]
|
||||||
$usage ~[nom+s+nom.act add+b+add.act tas+(sa tas.act cord:enjs)]
|
$usage ~[nom+s+nom.act add+b+add.act tas+(sa tas.act cord:enjs)]
|
||||||
|
$newdm ~[sis+(sa sis.act ship)]
|
||||||
::
|
::
|
||||||
$phrase ~[aud+(audi aud.act) ses+a+(turn ses.act spec:enjs)]
|
$phrase ~[aud+(audi aud.act) ses+a+(turn ses.act spec:enjs)]
|
||||||
::
|
::
|
||||||
|
@ -23,11 +23,12 @@
|
|||||||
=/ sho (fall (~(get by qix.gas) %show) %default)
|
=/ sho (fall (~(get by qix.gas) %show) %default)
|
||||||
;div.container
|
;div.container
|
||||||
;input
|
;input
|
||||||
=type "hidden"
|
=type "hidden"
|
||||||
=name "urb-header"
|
=name "urb-header"
|
||||||
=value "collection"
|
=value (trip -.itm)
|
||||||
=station "{(scow %p p.bem.gas)}/{<(flop s.bem.gas)>}"
|
=show (trip sho)
|
||||||
=ship "{(scow %p p.bem.gas)}";
|
=path "{<(flop s.bem.gas)>}"
|
||||||
|
=ship "{(scow %p p.bem.gas)}";
|
||||||
;div.row
|
;div.row
|
||||||
;div.col-sm-10.col-sm-offset-2
|
;div.col-sm-10.col-sm-offset-2
|
||||||
;div.collection-index.mt-12
|
;div.collection-index.mt-12
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/? 309
|
/? 309
|
||||||
/+ collections
|
/+ collections, cram, elem-to-react-json
|
||||||
/= gas /$ fuel:html
|
/= gas /$ fuel:html
|
||||||
/= jon
|
/= jon
|
||||||
/^ json
|
/^ json
|
||||||
@ -22,7 +22,7 @@
|
|||||||
%both
|
%both
|
||||||
%- pairs:enjs:format
|
%- pairs:enjs:format
|
||||||
:~ [%item (raw-to-json raw.itm)]
|
:~ [%item (raw-to-json raw.itm)]
|
||||||
[%colleciton (collection-to-json col.itm)]
|
[%collection (collection-to-json col.itm)]
|
||||||
==
|
==
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
@ -44,8 +44,10 @@
|
|||||||
++ raw-to-json
|
++ raw-to-json
|
||||||
|= raw=raw-item:collections
|
|= raw=raw-item:collections
|
||||||
^- json
|
^- json
|
||||||
|
=/ elm=manx elm:(static:cram (ream data.raw))
|
||||||
|
=/ rec=json (elem-to-react-json elm)
|
||||||
%- pairs:enjs:format
|
%- pairs:enjs:format
|
||||||
:~ [%data [%s data.raw]]
|
:~ [%data rec]
|
||||||
[%meta (meta-to-json meta.raw)]
|
[%meta (meta-to-json meta.raw)]
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
|
@ -116,13 +116,14 @@
|
|||||||
{$filter fit/filter} :: changed filter
|
{$filter fit/filter} :: changed filter
|
||||||
{$secure sec/security} :: changed security
|
{$secure sec/security} :: changed security
|
||||||
{$permit add/? sis/(set ship)} :: add/rem to b/w-list
|
{$permit add/? sis/(set ship)} :: add/rem to b/w-list
|
||||||
{$remove ~} :: removed config
|
{$remove ~} :: removed config
|
||||||
|
{$read red/@ud} :: changed read message
|
||||||
== ::
|
== ::
|
||||||
++ diff-status :: status change
|
++ diff-status :: status change
|
||||||
$% {$full sat/status} :: fully changed status
|
$% {$full sat/status} :: fully changed status
|
||||||
{$presence pec/presence} :: changed presence
|
{$presence pec/presence} :: changed presence
|
||||||
{$human dif/diff-human} :: changed name
|
{$human dif/diff-human} :: changed name
|
||||||
{$remove ~} :: removed status
|
{$remove ~} :: removed status
|
||||||
== ::
|
== ::
|
||||||
++ diff-human :: name change
|
++ diff-human :: name change
|
||||||
$% {$full man/human} :: fully changed name
|
$% {$full man/human} :: fully changed name
|
||||||
@ -145,6 +146,8 @@
|
|||||||
{$filter nom/name fit/filter} :: change message rules
|
{$filter nom/name fit/filter} :: change message rules
|
||||||
{$permit nom/name inv/? sis/(set ship)} :: invite/banish
|
{$permit nom/name inv/? sis/(set ship)} :: invite/banish
|
||||||
{$source nom/name sub/? srs/(set source)} :: un/sub to/from src
|
{$source nom/name sub/? srs/(set source)} :: un/sub to/from src
|
||||||
|
{$read nom/name red/@ud} :: change read message
|
||||||
|
{$newdm sis/(set ship)}
|
||||||
{$usage nom/name add/? tas/tags} :: add/rem usage tags
|
{$usage nom/name add/? tas/tags} :: add/rem usage tags
|
||||||
:: messaging ::
|
:: messaging ::
|
||||||
{$convey tos/(list thought)} :: post exact
|
{$convey tos/(list thought)} :: post exact
|
||||||
@ -186,6 +189,7 @@
|
|||||||
tag/tags :: usage tags
|
tag/tags :: usage tags
|
||||||
fit/filter :: message rules
|
fit/filter :: message rules
|
||||||
con/control :: restrictions
|
con/control :: restrictions
|
||||||
|
red/@ud :: last read message
|
||||||
== ::
|
== ::
|
||||||
++ source {cir/circle ran/range} :: subscription target
|
++ source {cir/circle ran/range} :: subscription target
|
||||||
++ filter :: content filters
|
++ filter :: content filters
|
||||||
|
@ -1475,7 +1475,7 @@
|
|||||||
=/ han (sham hen)
|
=/ han (sham hen)
|
||||||
=. pox (~(put by pox) han hen)
|
=. pox (~(put by pox) han hen)
|
||||||
=+ arg=(fcgi payload fcgi-cred)
|
=+ arg=(fcgi payload fcgi-cred)
|
||||||
[%| (ames-gram p.bem %get-inner han ext arg bem)]
|
[%| (ames-gram p.bem [%get-inner ~] han ext arg bem)]
|
||||||
=+ wir=`whir`[%ha (en-beam -.bem ~)]
|
=+ wir=`whir`[%ha (en-beam -.bem ~)]
|
||||||
=. wir ?+(mef !! $get wir, $head [%he wir])
|
=. wir ?+(mef !! $get wir, $head [%he wir])
|
||||||
=. r.bem ?+(r.bem r.bem {$ud $0} da+now)
|
=. r.bem ?+(r.bem r.bem {$ud $0} da+now)
|
||||||
|
3
web.hoon
3
web.hoon
@ -1,3 +1,2 @@
|
|||||||
^- manx
|
^- manx
|
||||||
|
;div(urb-component "InboxPage");
|
||||||
;div(data-component "InboxPage");
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -1,4 +0,0 @@
|
|||||||
:- ~[comments+&]
|
|
||||||
;>
|
|
||||||
|
|
||||||
this is blah.umd
|
|
Binary file not shown.
@ -1,5 +0,0 @@
|
|||||||
;>
|
|
||||||
|
|
||||||
this is moo.umd
|
|
||||||
|
|
||||||
no comments
|
|
@ -1,5 +0,0 @@
|
|||||||
;>
|
|
||||||
|
|
||||||
this is moo.umd
|
|
||||||
|
|
||||||
no comments
|
|
2
web/landscape.hoon
Normal file
2
web/landscape.hoon
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
^- manx
|
||||||
|
;div(urb-component "InboxPage");
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -16,31 +16,12 @@
|
|||||||
;div.col-sm-offset-2.col-sm-10
|
;div.col-sm-offset-2.col-sm-10
|
||||||
;div.profile-avatar
|
;div.profile-avatar
|
||||||
;div(urb-component "AvatarLg", urb-ship "{(scow %p p.bem.gas)}");
|
;div(urb-component "AvatarLg", urb-ship "{(scow %p p.bem.gas)}");
|
||||||
;div.profile-shipname: {(scow %p p.bem.gas)}
|
|
||||||
;div(urb-component "ProfileMsgBtn", urb-ship "{(scow %p p.bem.gas)}");
|
;div(urb-component "ProfileMsgBtn", urb-ship "{(scow %p p.bem.gas)}");
|
||||||
==
|
==
|
||||||
==
|
==
|
||||||
==
|
==
|
||||||
;div.row
|
;div.row
|
||||||
;div.col-sm-offset-2.col-sm-10
|
;div.col-sm-offset-2.col-sm-10
|
||||||
::;div.text-700.mt-8: Blogs, Forum and Notes
|
|
||||||
::;ul.vanilla
|
|
||||||
:: ;div;
|
|
||||||
:: ;* %+ turn
|
|
||||||
:: %+ sort
|
|
||||||
:: %+ skim
|
|
||||||
:: ~(tap by all-colls)
|
|
||||||
:: is-pro
|
|
||||||
:: |= [a=(pair knot *) b=(pair knot *)]
|
|
||||||
:: (gth (unt:chrono:userlib (slav %da p.a)) (unt:chrono:userlib (slav %da p.b)))
|
|
||||||
:: |= [t=knot col=collection:collections]
|
|
||||||
:: ;div.mt-2.text-500
|
|
||||||
:: ;a(href "/~~/{(scow %p p.bem.gas)}/==/web/collections/{(trip t)}")
|
|
||||||
:: ; {(trip desc.conf.col)}
|
|
||||||
:: ==
|
|
||||||
:: ==
|
|
||||||
::==
|
|
||||||
::;div.text-700.mt-8: Chats
|
|
||||||
;div(urb-component "ChatList", urb-hostship "{(scow %p p.bem.gas)}");
|
;div(urb-component "ChatList", urb-hostship "{(scow %p p.bem.gas)}");
|
||||||
;div.text-700.mt-8: Meta
|
;div.text-700.mt-8: Meta
|
||||||
;div.mt-2.text-500.row
|
;div.mt-2.text-500.row
|
||||||
@ -50,7 +31,7 @@
|
|||||||
;div.mt-2.text-500.row
|
;div.mt-2.text-500.row
|
||||||
;span.col-sm-2: Issued:
|
;span.col-sm-2: Issued:
|
||||||
;span.col-sm-10.text-mono
|
;span.col-sm-10.text-mono
|
||||||
;a(href "/~~/{(scow %p (sein:title p.bem.gas))}/==/web/pages/nutalk/profile"): {(scow %p (sein:title p.bem.gas))}
|
;a(href "/~~/{(scow %p (sein:title p.bem.gas))}/==/web/landscape/profile"): {(scow %p (sein:title p.bem.gas))}
|
||||||
==
|
==
|
||||||
==
|
==
|
||||||
;div.mt-2.text-500.row
|
;div.mt-2.text-500.row
|
||||||
|
Loading…
Reference in New Issue
Block a user