Merge remote-tracking branch 'origin/collections' into ford-turbo

This commit is contained in:
Elliot Glaysher 2018-08-20 13:14:13 -07:00
commit ba0de921ab
23 changed files with 2645 additions and 3796 deletions

View File

@ -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

View File

@ -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
:: ::
:::::: ::::::
:::::: ::::::

View File

@ -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
:: ::

View File

@ -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

View File

@ -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?

View File

@ -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

View File

@ -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
-- --

View File

@ -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)]
:: ::

View File

@ -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

View File

@ -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)]
== ==
:: ::

View File

@ -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

View File

@ -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)

View File

@ -1,3 +1,2 @@
^- manx ^- manx
;div(urb-component "InboxPage");
;div(data-component "InboxPage");

View File

@ -1,4 +0,0 @@
:- ~[comments+&]
;>
this is blah.umd

View File

@ -1,5 +0,0 @@
;>
this is moo.umd
no comments

View File

@ -1,5 +0,0 @@
;>
this is moo.umd
no comments

2
web/landscape.hoon Normal file
View 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

View File

@ -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